# GOAD-PY
Python bindings for GOAD (Geometric Optics Approximation with Diffraction) - a physical optics light scattering computation library.
## Installation
```bash
pip install goad-py
```
## Quick Start
```python
import goad_py
# Create a problem with minimal setup
settings = goad_py.Settings("path/to/geometry.obj")
mp = goad_py.MultiProblem(settings)
mp.py_solve()
# Access scattering data
results = mp.results
print(f"Scattering cross-section: {results.scat_cross}")
print(f"Extinction cross-section: {results.ext_cross}")
print(f"Asymmetry parameter: {results.asymmetry}")
```
### Convergence Analysis
For statistical error estimation, use the convergence analysis functionality:
```python
from goad_py import Convergence, Convergable
# Set up convergence analysis
convergence = Convergence(
settings=goad_py.Settings(geom_path="path/to/geometry.obj"),
convergables=[
Convergable('asymmetry', 'absolute', 0.005), # absolute SEM < 0.005
Convergable('scatt', 'relative', 0.01), # relative SEM < 1%
],
batch_size=100
)
# Run until convergence
results = convergence.run()
print(f"Converged: {results.converged}")
print(f"Final values: {results.values}")
```
## Features
- Fast light scattering computations using physical optics
- Support for various 3D geometry formats
- Configurable wavelength, refractive index, and orientations
- Multi-orientation averaging capabilities
- Convergence analysis for statistical error estimation
- Efficient parallel computation with GIL release
## Documentation
- [Rust API Documentation](https://docs.rs/goad/0.1.0/goad/index.html)
- [GitHub Repository](https://github.com/hballington12/goad)
## License
GPL-3.0 License - see the LICENSE file in the main repository for details.
Raw data
{
"_id": null,
"home_page": "https://github.com/hballington12/goad",
"name": "goad-py",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "light-scattering, optics, simulation, scientific-computing, physics",
"author": null,
"author_email": "Harry Ballington <ballington@uni-wuppertal.de>",
"download_url": "https://files.pythonhosted.org/packages/3b/09/129b81e313b29a8ac6f09debf2ef84a495472e0fa1f7ba2a8257d289c89d/goad_py-0.4.1.tar.gz",
"platform": null,
"description": "# GOAD-PY\n\nPython bindings for GOAD (Geometric Optics Approximation with Diffraction) - a physical optics light scattering computation library.\n\n## Installation\n\n```bash\npip install goad-py\n```\n\n## Quick Start\n\n```python\nimport goad_py\n\n# Create a problem with minimal setup\nsettings = goad_py.Settings(\"path/to/geometry.obj\")\nmp = goad_py.MultiProblem(settings)\nmp.py_solve()\n\n# Access scattering data\nresults = mp.results\nprint(f\"Scattering cross-section: {results.scat_cross}\")\nprint(f\"Extinction cross-section: {results.ext_cross}\")\nprint(f\"Asymmetry parameter: {results.asymmetry}\")\n```\n\n### Convergence Analysis\n\nFor statistical error estimation, use the convergence analysis functionality:\n\n```python\nfrom goad_py import Convergence, Convergable\n\n# Set up convergence analysis\nconvergence = Convergence(\n settings=goad_py.Settings(geom_path=\"path/to/geometry.obj\"),\n convergables=[\n Convergable('asymmetry', 'absolute', 0.005), # absolute SEM < 0.005\n Convergable('scatt', 'relative', 0.01), # relative SEM < 1%\n ],\n batch_size=100\n)\n\n# Run until convergence\nresults = convergence.run()\nprint(f\"Converged: {results.converged}\")\nprint(f\"Final values: {results.values}\")\n```\n\n## Features\n\n- Fast light scattering computations using physical optics\n- Support for various 3D geometry formats\n- Configurable wavelength, refractive index, and orientations\n- Multi-orientation averaging capabilities\n- Convergence analysis for statistical error estimation\n- Efficient parallel computation with GIL release\n\n## Documentation\n\n- [Rust API Documentation](https://docs.rs/goad/0.1.0/goad/index.html)\n- [GitHub Repository](https://github.com/hballington12/goad)\n\n## License\n\nGPL-3.0 License - see the LICENSE file in the main repository for details.\n",
"bugtrack_url": null,
"license": "GPL-3.0",
"summary": "Physical optics light scattering computation",
"version": "0.4.1",
"project_urls": {
"Documentation": "https://docs.rs/goad/0.1.0/goad/index.html",
"Homepage": "https://github.com/hballington12/goad",
"Repository": "https://github.com/hballington12/goad",
"Rust Crate": "https://crates.io/crates/goad"
},
"split_keywords": [
"light-scattering",
" optics",
" simulation",
" scientific-computing",
" physics"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a1ef0547e716a52d575bdddb2a9e2f1033b281d1f5f9795cf4ec4add1946b1d5",
"md5": "e1124ca379be767fe51b96a6ea900a73",
"sha256": "58ee6788b078e13a7cbb078ddf543c675ed0a30c1c6bc5518e5c524252676e1f"
},
"downloads": -1,
"filename": "goad_py-0.4.1-cp38-abi3-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "e1124ca379be767fe51b96a6ea900a73",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1006383,
"upload_time": "2025-07-10T14:43:32",
"upload_time_iso_8601": "2025-07-10T14:43:32.189356Z",
"url": "https://files.pythonhosted.org/packages/a1/ef/0547e716a52d575bdddb2a9e2f1033b281d1f5f9795cf4ec4add1946b1d5/goad_py-0.4.1-cp38-abi3-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f3308dff8b0210f745cfb999a9f1340561238700b327d536a7912559433bd943",
"md5": "a57914b1f56195cbe62341e76164d9d3",
"sha256": "d579123f54fb7b58658bf28d683fff3ed92e3f421b242f8a6240d46adbf9c5d9"
},
"downloads": -1,
"filename": "goad_py-0.4.1-cp38-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "a57914b1f56195cbe62341e76164d9d3",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 975989,
"upload_time": "2025-07-10T14:43:34",
"upload_time_iso_8601": "2025-07-10T14:43:34.336760Z",
"url": "https://files.pythonhosted.org/packages/f3/30/8dff8b0210f745cfb999a9f1340561238700b327d536a7912559433bd943/goad_py-0.4.1-cp38-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "83cfc64024439241842a4a9f14938a0f3e613d0adf861a1d040cec78597a5fc3",
"md5": "40177a46ac54ec2fc47fa061f1b87731",
"sha256": "cd9226e407f6d4194d2db0391446734fac98bc6919f5032309bdd40054aab4dd"
},
"downloads": -1,
"filename": "goad_py-0.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "40177a46ac54ec2fc47fa061f1b87731",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1054743,
"upload_time": "2025-07-10T14:43:36",
"upload_time_iso_8601": "2025-07-10T14:43:36.252174Z",
"url": "https://files.pythonhosted.org/packages/83/cf/c64024439241842a4a9f14938a0f3e613d0adf861a1d040cec78597a5fc3/goad_py-0.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e44cf9e91e0463c1809651c56a1d5ccb8c4aa44e9c71db62b92bb2a7f4fdc48e",
"md5": "59af01c0cfe6c6ede96f78e108e6d6f4",
"sha256": "66363c8a9d4679cf064bd8eec061f770db13ee9e47b7abe38e02ecc900bbc8ec"
},
"downloads": -1,
"filename": "goad_py-0.4.1-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "59af01c0cfe6c6ede96f78e108e6d6f4",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1146394,
"upload_time": "2025-07-10T14:43:38",
"upload_time_iso_8601": "2025-07-10T14:43:38.139425Z",
"url": "https://files.pythonhosted.org/packages/e4/4c/f9e91e0463c1809651c56a1d5ccb8c4aa44e9c71db62b92bb2a7f4fdc48e/goad_py-0.4.1-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f6d00dc8d6df2d3c60779ba19dbe7f6f3b45531cd7fcb8fe2f0508e86ac2526c",
"md5": "021e354475ddd9fe7902ce1138bc3ba3",
"sha256": "5b2b829bc0ee83d64df5c1a6004cf77fb28a485ed6cc6b3c6dab181d67fad584"
},
"downloads": -1,
"filename": "goad_py-0.4.1-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "021e354475ddd9fe7902ce1138bc3ba3",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1159878,
"upload_time": "2025-07-10T14:43:40",
"upload_time_iso_8601": "2025-07-10T14:43:40.105291Z",
"url": "https://files.pythonhosted.org/packages/f6/d0/0dc8d6df2d3c60779ba19dbe7f6f3b45531cd7fcb8fe2f0508e86ac2526c/goad_py-0.4.1-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7d6e3e30d5de0515d524d1fee5e7ba04cf1ab4fd00a13b06d58054ad2a02e1ad",
"md5": "e6c7df51f7143759039fcf32b2091119",
"sha256": "8b89c39638a655e97c80f488bf003295b79f8446bbf8691b5cce695a1ac318ff"
},
"downloads": -1,
"filename": "goad_py-0.4.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "e6c7df51f7143759039fcf32b2091119",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1089094,
"upload_time": "2025-07-10T14:43:42",
"upload_time_iso_8601": "2025-07-10T14:43:42.040151Z",
"url": "https://files.pythonhosted.org/packages/7d/6e/3e30d5de0515d524d1fee5e7ba04cf1ab4fd00a13b06d58054ad2a02e1ad/goad_py-0.4.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7a606831798294c32c57681ae8ad4744b2803854e44eca5d7b8ef2f34b33c714",
"md5": "af7ba8ce720a1d27d6166dcd6a7fd54a",
"sha256": "72ac7b09123ce24caa613565c8fdca6be2d4ea851b1e6e8144af4b66732f051f"
},
"downloads": -1,
"filename": "goad_py-0.4.1-cp38-abi3-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "af7ba8ce720a1d27d6166dcd6a7fd54a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 7146022,
"upload_time": "2025-07-10T14:43:43",
"upload_time_iso_8601": "2025-07-10T14:43:43.875632Z",
"url": "https://files.pythonhosted.org/packages/7a/60/6831798294c32c57681ae8ad4744b2803854e44eca5d7b8ef2f34b33c714/goad_py-0.4.1-cp38-abi3-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b268b04639ff573c341ee5159d6c109c29fd508093a0839a45866273a28bb5bd",
"md5": "2d36c94f9d6dbffd622e381a77badc32",
"sha256": "1b439faa357afc072b9bd0d7d041b4109d2652ee993d7a83dc04a046f00ca0b6"
},
"downloads": -1,
"filename": "goad_py-0.4.1-cp38-abi3-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "2d36c94f9d6dbffd622e381a77badc32",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 7311762,
"upload_time": "2025-07-10T14:43:46",
"upload_time_iso_8601": "2025-07-10T14:43:46.087326Z",
"url": "https://files.pythonhosted.org/packages/b2/68/b04639ff573c341ee5159d6c109c29fd508093a0839a45866273a28bb5bd/goad_py-0.4.1-cp38-abi3-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "16051e97995c19c5161fa67ed686cd1f9710cd3d55f2add5bf80127691d32745",
"md5": "e0bedffc5468eee3ad84800d6565afe8",
"sha256": "42f28ba032258d90a8df44e8ec0197f6ec0148ee79c7ef1bfc26abf47ca03d77"
},
"downloads": -1,
"filename": "goad_py-0.4.1-cp38-abi3-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "e0bedffc5468eee3ad84800d6565afe8",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 7433944,
"upload_time": "2025-07-10T14:43:48",
"upload_time_iso_8601": "2025-07-10T14:43:48.221519Z",
"url": "https://files.pythonhosted.org/packages/16/05/1e97995c19c5161fa67ed686cd1f9710cd3d55f2add5bf80127691d32745/goad_py-0.4.1-cp38-abi3-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "edfc695173f1b6e389aa8e7244889f5d5a64b910a77f8f36cd63c0467add4fb6",
"md5": "bb656f6d360f32969c43558552fcc4c1",
"sha256": "1f7e2e701d23dfda0de5bdbe09658ad496cf888b300c0d854901ee42f4bd6d2a"
},
"downloads": -1,
"filename": "goad_py-0.4.1-cp38-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "bb656f6d360f32969c43558552fcc4c1",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 985231,
"upload_time": "2025-07-10T14:43:50",
"upload_time_iso_8601": "2025-07-10T14:43:50.051189Z",
"url": "https://files.pythonhosted.org/packages/ed/fc/695173f1b6e389aa8e7244889f5d5a64b910a77f8f36cd63c0467add4fb6/goad_py-0.4.1-cp38-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3b09129b81e313b29a8ac6f09debf2ef84a495472e0fa1f7ba2a8257d289c89d",
"md5": "067b9761b78a0dcbaf81b6194d34b576",
"sha256": "24648e16a4e87324d26f0127603d6d76be17b01149396caa3aa2df40a98ccc05"
},
"downloads": -1,
"filename": "goad_py-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "067b9761b78a0dcbaf81b6194d34b576",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 1673763,
"upload_time": "2025-07-10T14:43:51",
"upload_time_iso_8601": "2025-07-10T14:43:51.667851Z",
"url": "https://files.pythonhosted.org/packages/3b/09/129b81e313b29a8ac6f09debf2ef84a495472e0fa1f7ba2a8257d289c89d/goad_py-0.4.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-10 14:43:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hballington12",
"github_project": "goad",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "goad-py"
}