# 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/b4/ca/d384ea4353575f83618b42de043b6afc84fd71b325a02b8baedc3b9b17df/goad_py-0.6.6.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.6.6",
"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": "9ccf73b4abc85371adc2b9896f2c5f2765c1349376742a2a3e25d8658fa46509",
"md5": "3dc3d06d229174a9857c870e3e17882d",
"sha256": "90b8e66ed26b113a29a5181516699cfa00aa2a98ad307fca795abb461d11f543"
},
"downloads": -1,
"filename": "goad_py-0.6.6-cp38-abi3-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "3dc3d06d229174a9857c870e3e17882d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1059472,
"upload_time": "2025-11-06T12:34:57",
"upload_time_iso_8601": "2025-11-06T12:34:57.652888Z",
"url": "https://files.pythonhosted.org/packages/9c/cf/73b4abc85371adc2b9896f2c5f2765c1349376742a2a3e25d8658fa46509/goad_py-0.6.6-cp38-abi3-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a43ca2544e3390ca03835e8262bdf06c43ace227066449d2ed98a0e204f9602b",
"md5": "3ec4d4591f02a78ce66d5b900407c687",
"sha256": "5735783b93a230bdb73f386a8645b1868aa69c579db9f790b5a63f645fa3a1af"
},
"downloads": -1,
"filename": "goad_py-0.6.6-cp38-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "3ec4d4591f02a78ce66d5b900407c687",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1022314,
"upload_time": "2025-11-06T12:34:59",
"upload_time_iso_8601": "2025-11-06T12:34:59.014949Z",
"url": "https://files.pythonhosted.org/packages/a4/3c/a2544e3390ca03835e8262bdf06c43ace227066449d2ed98a0e204f9602b/goad_py-0.6.6-cp38-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b586eeb80bec3a26e7efff048937ea4ea54f3a90066a05274579b0b12dba55be",
"md5": "a8d1d3f175d71207c0eeb133fa889360",
"sha256": "ba6efce937ebf52a7548c9e7332a685952baed7d4241176e3e6550160a472f9f"
},
"downloads": -1,
"filename": "goad_py-0.6.6-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "a8d1d3f175d71207c0eeb133fa889360",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1108364,
"upload_time": "2025-11-06T12:35:00",
"upload_time_iso_8601": "2025-11-06T12:35:00.203039Z",
"url": "https://files.pythonhosted.org/packages/b5/86/eeb80bec3a26e7efff048937ea4ea54f3a90066a05274579b0b12dba55be/goad_py-0.6.6-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "49b5e81d09c2e68f9401cccec84d0b41d9af321ed217670fe9f35a134d32fd13",
"md5": "7c5a7af68c606c6929374862d42bdbbc",
"sha256": "3c032c870c86fea279d5d7edce8b0a4bfa7b6deba26e2376a006362939084d37"
},
"downloads": -1,
"filename": "goad_py-0.6.6-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "7c5a7af68c606c6929374862d42bdbbc",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1201264,
"upload_time": "2025-11-06T12:35:01",
"upload_time_iso_8601": "2025-11-06T12:35:01.699171Z",
"url": "https://files.pythonhosted.org/packages/49/b5/e81d09c2e68f9401cccec84d0b41d9af321ed217670fe9f35a134d32fd13/goad_py-0.6.6-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c1bda198f7beceaa760c4f001f93464216f569b45850d75c06118422b3ffce34",
"md5": "0f0d1044f1faed62db1e27bc42c4d471",
"sha256": "0abed23093a38e6c7ef76f474b22f118b293ba16e0c845d554f05d5996fc13c4"
},
"downloads": -1,
"filename": "goad_py-0.6.6-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "0f0d1044f1faed62db1e27bc42c4d471",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1213240,
"upload_time": "2025-11-06T12:35:02",
"upload_time_iso_8601": "2025-11-06T12:35:02.941666Z",
"url": "https://files.pythonhosted.org/packages/c1/bd/a198f7beceaa760c4f001f93464216f569b45850d75c06118422b3ffce34/goad_py-0.6.6-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "98d2f353c567b6aa5a8dc0f9dba571265cf0f2730c0891860449d3eed1346ac3",
"md5": "b7fdb3321bc6521acccfb48b6318e3f9",
"sha256": "4ed26e0fc4428375792ac4f0576f0ac79a634483cf4c6078b1b0a2eb8c68d809"
},
"downloads": -1,
"filename": "goad_py-0.6.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "b7fdb3321bc6521acccfb48b6318e3f9",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1132539,
"upload_time": "2025-11-06T12:35:04",
"upload_time_iso_8601": "2025-11-06T12:35:04.484746Z",
"url": "https://files.pythonhosted.org/packages/98/d2/f353c567b6aa5a8dc0f9dba571265cf0f2730c0891860449d3eed1346ac3/goad_py-0.6.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "32ac42f27858a81fdb80f25d5ce42a4ba04371feebefdb3362ba697bd645fda8",
"md5": "04b36d80d768bb2e46f9fe47a516e4e7",
"sha256": "e4f17da37630d35e8c0feb4cebec53cc0907dd58aaaed607e0bec5c4893db3f7"
},
"downloads": -1,
"filename": "goad_py-0.6.6-cp38-abi3-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "04b36d80d768bb2e46f9fe47a516e4e7",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 7201018,
"upload_time": "2025-11-06T12:35:05",
"upload_time_iso_8601": "2025-11-06T12:35:05.775351Z",
"url": "https://files.pythonhosted.org/packages/32/ac/42f27858a81fdb80f25d5ce42a4ba04371feebefdb3362ba697bd645fda8/goad_py-0.6.6-cp38-abi3-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7f564469394be5a7e7f8cd8c1bd1f955265806ad8737137e82d273ea714a7a3f",
"md5": "22c614e601a34559d7745d41f2e2ee4f",
"sha256": "f882faf8b9348cd1236eed1953a02dce0f83ddd9c2398e8a74a54106822b21a8"
},
"downloads": -1,
"filename": "goad_py-0.6.6-cp38-abi3-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "22c614e601a34559d7745d41f2e2ee4f",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 7354430,
"upload_time": "2025-11-06T12:35:07",
"upload_time_iso_8601": "2025-11-06T12:35:07.594385Z",
"url": "https://files.pythonhosted.org/packages/7f/56/4469394be5a7e7f8cd8c1bd1f955265806ad8737137e82d273ea714a7a3f/goad_py-0.6.6-cp38-abi3-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a39865f95322f9d30a997bd3ed5bc649316f28f88c4be498da1e0a68caafce8e",
"md5": "ce35db8cc0e5976c234ec93bed7b3f8d",
"sha256": "1d24705ed77d2f303169f1f312461cdf5b55adc3e90dca0428f1ce253c032aa5"
},
"downloads": -1,
"filename": "goad_py-0.6.6-cp38-abi3-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "ce35db8cc0e5976c234ec93bed7b3f8d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 7470213,
"upload_time": "2025-11-06T12:35:09",
"upload_time_iso_8601": "2025-11-06T12:35:09.076351Z",
"url": "https://files.pythonhosted.org/packages/a3/98/65f95322f9d30a997bd3ed5bc649316f28f88c4be498da1e0a68caafce8e/goad_py-0.6.6-cp38-abi3-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8d5f7195f8a4e0e52b9dadcbbda305ae647ccea91e194bb687fa00a90c052e98",
"md5": "5dc25dbba06ff4513032aa8f22797d2f",
"sha256": "975be6b1594ae8decc553fbd0a50417d9c198c3e5c7464d659d2c28a2d6ff5bd"
},
"downloads": -1,
"filename": "goad_py-0.6.6-cp38-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "5dc25dbba06ff4513032aa8f22797d2f",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1038779,
"upload_time": "2025-11-06T12:35:11",
"upload_time_iso_8601": "2025-11-06T12:35:11.009261Z",
"url": "https://files.pythonhosted.org/packages/8d/5f/7195f8a4e0e52b9dadcbbda305ae647ccea91e194bb687fa00a90c052e98/goad_py-0.6.6-cp38-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b4cad384ea4353575f83618b42de043b6afc84fd71b325a02b8baedc3b9b17df",
"md5": "57ec22a217b179baa6b9e82e2672c22c",
"sha256": "38c2ea364a4abeb19e09b85ced2d5aea6d4afc6acf450c23c04f307477879ba1"
},
"downloads": -1,
"filename": "goad_py-0.6.6.tar.gz",
"has_sig": false,
"md5_digest": "57ec22a217b179baa6b9e82e2672c22c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 2619508,
"upload_time": "2025-11-06T12:35:12",
"upload_time_iso_8601": "2025-11-06T12:35:12.286311Z",
"url": "https://files.pythonhosted.org/packages/b4/ca/d384ea4353575f83618b42de043b6afc84fd71b325a02b8baedc3b9b17df/goad_py-0.6.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-06 12:35:12",
"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"
}