goad-py 0.4.1__cp38-abi3-musllinux_1_2_aarch64.whl → 0.5.1__cp38-abi3-musllinux_1_2_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of goad-py might be problematic. Click here for more details.

goad_py/_goad_py.abi3.so CHANGED
Binary file
goad_py/goad_py.pyi CHANGED
@@ -1,13 +1,13 @@
1
1
  """
2
2
  GOAD Python API Type Definitions
3
3
 
4
- This file provides comprehensive type hints for the GOAD (Geometric Optics
5
- Approximation for Diffraction) Python bindings. GOAD simulates light scattering
4
+ This file provides comprehensive type hints for the GOAD (Geometric Optics
5
+ Approximation for Diffraction) Python bindings. GOAD simulates light scattering
6
6
  by arbitrary 3D geometries using geometric optics with diffraction corrections.
7
7
 
8
8
  The main workflow is:
9
9
  1. Create Settings with geometry path (all other parameters have sensible defaults)
10
- 2. Use Problem for single-orientation or MultiProblem for multi-orientation simulations
10
+ 2. Use Problem for single-orientation or MultiProblem for multi-orientation simulations
11
11
  3. Call py_solve() to run the computation
12
12
  4. Access results through the .results property
13
13
 
@@ -19,18 +19,18 @@ Default behavior (minimal setup):
19
19
 
20
20
  Example (minimal setup):
21
21
  import goad_py as goad
22
-
22
+
23
23
  settings = goad.Settings("particle.obj")
24
24
  mp = goad.MultiProblem(settings)
25
25
  mp.py_solve()
26
-
26
+
27
27
  results = mp.results
28
28
  print(f"Scattering cross-section: {results.scat_cross}")
29
29
  print(f"Extinction cross-section: {results.ext_cross}")
30
30
  print(f"Asymmetry parameter: {results.asymmetry}")
31
31
  """
32
32
 
33
- from typing import Optional, List, Dict, Any, Union, Tuple
33
+ from typing import Optional, List, Dict, Tuple
34
34
  import numpy as np
35
35
 
36
36
  class Euler:
@@ -38,7 +38,7 @@ class Euler:
38
38
  alpha: float
39
39
  beta: float
40
40
  gamma: float
41
-
41
+
42
42
  def __init__(self, alpha: float, beta: float, gamma: float) -> None: ...
43
43
  def __repr__(self) -> str: ...
44
44
 
@@ -65,7 +65,7 @@ class Orientation:
65
65
  """Full orientation specification."""
66
66
  scheme: Scheme
67
67
  euler_convention: EulerConvention
68
-
68
+
69
69
  def __init__(self, scheme: Scheme, euler_convention: Optional[EulerConvention] = None) -> None: ...
70
70
  def __repr__(self) -> str: ...
71
71
 
@@ -79,102 +79,102 @@ class Shape:
79
79
 
80
80
  class Results:
81
81
  """Results from problem solving."""
82
-
82
+
83
83
  @property
84
84
  def bins(self) -> List[tuple[float, float]]: ...
85
-
86
- @property
85
+
86
+ @property
87
87
  def bins_1d(self) -> Optional[List[float]]: ...
88
-
88
+
89
89
  @property
90
90
  def mueller(self) -> List[List[float]]: ...
91
-
91
+
92
92
  @property
93
93
  def mueller_beam(self) -> List[List[float]]: ...
94
-
94
+
95
95
  @property
96
96
  def mueller_ext(self) -> List[List[float]]: ...
97
-
97
+
98
98
  @property
99
99
  def mueller_1d(self) -> List[List[float]]: ...
100
-
100
+
101
101
  @property
102
102
  def mueller_1d_beam(self) -> List[List[float]]: ...
103
-
103
+
104
104
  @property
105
105
  def mueller_1d_ext(self) -> List[List[float]]: ...
106
-
106
+
107
107
  @property
108
108
  def asymmetry(self) -> Optional[float]: ...
109
-
109
+
110
110
  @property
111
111
  def scat_cross(self) -> Optional[float]: ...
112
-
112
+
113
113
  @property
114
114
  def ext_cross(self) -> Optional[float]: ...
115
-
115
+
116
116
  @property
117
117
  def albedo(self) -> Optional[float]: ...
118
-
118
+
119
119
  @property
120
120
  def params(self) -> Dict[str, Optional[float]]: ...
121
-
121
+
122
122
  @property
123
123
  def powers(self) -> Dict[str, float]: ...
124
124
 
125
125
  class BinningScheme:
126
126
  """Angular binning scheme for scattering calculations.
127
-
127
+
128
128
  Defines how to discretize the scattering sphere into angular bins
129
129
  for Mueller matrix and amplitude computations. Supports simple
130
130
  regular grids, custom intervals, and arbitrary bin arrangements.
131
131
  """
132
-
132
+
133
133
  def __init__(self, bins: List[tuple[float, float]]) -> None: ...
134
-
134
+
135
135
  @staticmethod
136
136
  def simple(num_theta: int, num_phi: int) -> 'BinningScheme':
137
137
  """Create a simple regular grid binning scheme.
138
-
138
+
139
139
  Args:
140
140
  num_theta: Number of bins in theta direction (0 to 180 degrees)
141
141
  num_phi: Number of bins in phi direction (0 to 360 degrees)
142
-
142
+
143
143
  Returns:
144
144
  BinningScheme with regular angular grid
145
-
145
+
146
146
  Raises:
147
147
  ValueError: If num_theta or num_phi is zero or negative
148
148
  """
149
149
  ...
150
-
150
+
151
151
  @staticmethod
152
152
  def interval(
153
153
  thetas: List[float],
154
- theta_spacings: List[float],
154
+ theta_spacings: List[float],
155
155
  phis: List[float],
156
156
  phi_spacings: List[float]
157
157
  ) -> 'BinningScheme':
158
158
  """Create binning scheme with custom intervals.
159
-
159
+
160
160
  Args:
161
161
  thetas: Key theta angles in degrees
162
162
  theta_spacings: Spacing around each theta value
163
- phis: Key phi angles in degrees
163
+ phis: Key phi angles in degrees
164
164
  phi_spacings: Spacing around each phi value
165
-
165
+
166
166
  Returns:
167
167
  BinningScheme with custom intervals
168
168
  """
169
169
  ...
170
-
170
+
171
171
  @staticmethod
172
172
  def custom(bins: List[tuple[float, float]]) -> 'BinningScheme':
173
173
  """Create binning scheme from explicit (theta, phi) pairs.
174
-
174
+
175
175
  Args:
176
176
  bins: List of (theta, phi) angle pairs in degrees
177
-
177
+
178
178
  Returns:
179
179
  BinningScheme with custom bin locations
180
180
  """
@@ -182,12 +182,12 @@ class BinningScheme:
182
182
 
183
183
  class Settings:
184
184
  """Simulation parameters and physical properties.
185
-
185
+
186
186
  Contains all parameters needed for a GOAD simulation including
187
187
  geometry path, optical properties, orientation scheme, and
188
188
  numerical settings. Most parameters have sensible defaults.
189
189
  """
190
-
190
+
191
191
  def __init__(
192
192
  self,
193
193
  geom_path: str,
@@ -207,7 +207,7 @@ class Settings:
207
207
  directory: str = "goad_run"
208
208
  ) -> None:
209
209
  """Initialize simulation settings.
210
-
210
+
211
211
  Args:
212
212
  geom_path: Path to geometry file (.obj format)
213
213
  wavelength: Incident wavelength in geometry units (default: 0.532)
@@ -224,45 +224,45 @@ class Settings:
224
224
  max_tir: Maximum total internal reflections (default: 10)
225
225
  scale: Geometry scaling factor (default: 1.0)
226
226
  directory: Output directory for results (default: "goad_run")
227
-
227
+
228
228
  Raises:
229
229
  ValueError: If wavelength <= 0 or cutoff not in [0,1]
230
230
  FileNotFoundError: If geometry file doesn't exist
231
231
  """
232
232
  ...
233
-
233
+
234
234
  @property
235
235
  def euler(self) -> List[float]: ...
236
-
236
+
237
237
  @euler.setter
238
238
  def euler(self, value: List[float]) -> None: ...
239
-
239
+
240
240
  @property
241
241
  def orientation(self) -> Orientation: ...
242
-
242
+
243
243
  @orientation.setter
244
244
  def orientation(self, value: Orientation) -> None: ...
245
245
 
246
246
  class Problem:
247
247
  """Single orientation problem."""
248
-
248
+
249
249
  def __init__(self, settings: Optional[Settings] = None, geom: Optional[Geom] = None) -> None: ...
250
-
250
+
251
251
  def py_solve(self) -> None: ...
252
-
252
+
253
253
  def py_print_stats(self) -> None: ...
254
-
254
+
255
255
  @property
256
256
  def results(self) -> Results: ...
257
257
 
258
258
  class MultiProblem:
259
259
  """Multi-orientation light scattering simulation for a single geometry.
260
-
260
+
261
261
  Computes orientation-averaged scattering properties by running multiple
262
262
  single-orientation simulations and averaging the results. Supports both
263
263
  random and systematic orientation sampling schemes. Results include
264
264
  Mueller matrices, cross-sections, and derived optical parameters.
265
-
265
+
266
266
  Example:
267
267
  orientations = goad.create_uniform_orientation(100)
268
268
  settings = goad.Settings("particle.obj", orientation=orientations)
@@ -270,53 +270,53 @@ class MultiProblem:
270
270
  mp.py_solve()
271
271
  print(f"Scattering cross-section: {mp.results.scat_cross}")
272
272
  """
273
-
273
+
274
274
  def __init__(self, settings: Settings, geom: Optional[Geom] = None) -> None:
275
275
  """Initialize multi-orientation problem.
276
-
276
+
277
277
  Args:
278
278
  settings: Simulation parameters including orientation scheme
279
279
  geom: Geometry object (loaded from settings.geom_path if None)
280
-
280
+
281
281
  Raises:
282
282
  FileNotFoundError: If geometry file cannot be loaded
283
283
  """
284
284
  ...
285
-
285
+
286
286
  def py_solve(self) -> None:
287
287
  """Solve the multi-orientation scattering problem.
288
-
288
+
289
289
  Computes scattering properties averaged over all orientations using
290
290
  parallel processing. The Global Interpreter Lock (GIL) is released
291
291
  during computation to allow concurrent Python operations.
292
-
292
+
293
293
  Raises:
294
294
  RuntimeError: If computation fails
295
295
  """
296
296
  ...
297
-
297
+
298
298
  def py_writeup(self) -> None:
299
299
  """Write results to output files in the specified directory."""
300
300
  ...
301
-
301
+
302
302
  def py_reset(self) -> None:
303
303
  """Reset problem to initial state and regenerate orientations."""
304
304
  ...
305
-
305
+
306
306
  def py_regenerate_orientations(self) -> None:
307
307
  """Regenerate random orientations (useful for statistical sampling)."""
308
308
  ...
309
-
309
+
310
310
  @property
311
311
  def results(self) -> Results:
312
312
  """Access orientation-averaged simulation results.
313
-
313
+
314
314
  Returns the complete Results object containing Mueller matrices,
315
315
  amplitude matrices, power distributions, and derived parameters
316
316
  averaged over all orientations.
317
317
  """
318
318
  ...
319
-
319
+
320
320
  @property
321
321
  def num_orientations(self) -> int:
322
322
  """Number of orientations in the current simulation."""
@@ -339,16 +339,16 @@ def goad_py_add() -> None: ...
339
339
 
340
340
  class Convergable:
341
341
  """Represents a variable to monitor for convergence.
342
-
342
+
343
343
  Defines convergence criteria for integrated scattering parameters
344
344
  including asymmetry parameter, scattering cross-section, extinction
345
345
  cross-section, and single-scattering albedo.
346
346
  """
347
-
347
+
348
348
  variable: str
349
349
  tolerance_type: str
350
350
  tolerance: float
351
-
351
+
352
352
  def __init__(
353
353
  self,
354
354
  variable: str,
@@ -356,12 +356,12 @@ class Convergable:
356
356
  tolerance: float = 0.01
357
357
  ) -> None:
358
358
  """Initialize convergence criterion.
359
-
359
+
360
360
  Args:
361
361
  variable: Variable to monitor ('asymmetry', 'scatt', 'ext', 'albedo')
362
362
  tolerance_type: 'relative' or 'absolute' tolerance
363
363
  tolerance: Tolerance value (relative as fraction, absolute as value)
364
-
364
+
365
365
  Raises:
366
366
  ValueError: If variable name or tolerance_type is invalid
367
367
  """
@@ -369,11 +369,11 @@ class Convergable:
369
369
 
370
370
  class ConvergenceResults:
371
371
  """Results from a convergence study.
372
-
372
+
373
373
  Contains final convergence status, parameter values with uncertainties,
374
374
  and complete convergence history for analysis.
375
375
  """
376
-
376
+
377
377
  converged: bool
378
378
  n_orientations: int
379
379
  values: Dict[str, float]
@@ -382,7 +382,7 @@ class ConvergenceResults:
382
382
  mueller_2d: Optional[np.ndarray]
383
383
  convergence_history: List[Tuple[int, str, float]]
384
384
  warning: Optional[str]
385
-
385
+
386
386
  def __init__(
387
387
  self,
388
388
  converged: bool,
@@ -397,11 +397,11 @@ class ConvergenceResults:
397
397
 
398
398
  class Convergence:
399
399
  """Runs multiple MultiProblems until convergence criteria are met.
400
-
400
+
401
401
  Implements statistical convergence analysis for scattering parameters
402
402
  using batch-based standard error estimation. Monitors multiple variables
403
403
  simultaneously and stops when all meet their convergence criteria.
404
-
404
+
405
405
  Example:
406
406
  convergence = Convergence(
407
407
  settings=goad.Settings("particle.obj"),
@@ -413,7 +413,7 @@ class Convergence:
413
413
  )
414
414
  results = convergence.run()
415
415
  """
416
-
416
+
417
417
  def __init__(
418
418
  self,
419
419
  settings: Settings,
@@ -425,7 +425,7 @@ class Convergence:
425
425
  mueller_2d: bool = False
426
426
  ) -> None:
427
427
  """Initialize convergence study.
428
-
428
+
429
429
  Args:
430
430
  settings: GOAD settings for the simulation
431
431
  convergables: List of variables to monitor for convergence
@@ -434,20 +434,20 @@ class Convergence:
434
434
  min_batches: Minimum number of batches before allowing convergence
435
435
  mueller_1d: Whether to collect 1D Mueller matrices
436
436
  mueller_2d: Whether to collect 2D Mueller matrices
437
-
437
+
438
438
  Raises:
439
439
  ValueError: If parameters are invalid or no convergables specified
440
440
  """
441
441
  ...
442
-
442
+
443
443
  def run(self) -> ConvergenceResults:
444
444
  """Run the convergence study.
445
-
445
+
446
446
  Executes batches of orientations until all convergence criteria
447
447
  are met or maximum orientations reached. Provides progress updates
448
448
  and rigorous statistical analysis.
449
-
449
+
450
450
  Returns:
451
451
  ConvergenceResults containing final values and convergence status
452
452
  """
453
- ...
453
+ ...
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: goad-py
3
- Version: 0.4.1
3
+ Version: 0.5.1
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Science/Research
6
6
  Classifier: Topic :: Scientific/Engineering :: Physics
@@ -0,0 +1,9 @@
1
+ goad_py-0.5.1.dist-info/METADATA,sha256=K7tRbZ6OB21i5UXKQIQo12P2nhgD12d6QSi_D_ntNdw,3181
2
+ goad_py-0.5.1.dist-info/WHEEL,sha256=1Gaz1oK3YwSLhzGVlhHRplEyB8rHJ98cMkYTMblowdc,106
3
+ goad_py.libs/libgcc_s-39080030.so.1,sha256=fIO6GHOh8Ft9CR0Geu7wSUb9Xnl122iTtrxQQ9TAkTQ,789673
4
+ goad_py.libs/libstdc++-cedf4250.so.6,sha256=ahluTdjW3ViH_6W4-dRp01QgMtKg6f8XkwQdWeci4q8,22443689
5
+ goad_py/__init__.py,sha256=vZn5zZZdTgm1qTQFYCqgNKBKDAoheMo5OvwdLIIl3Dk,242
6
+ goad_py/_goad_py.abi3.so,sha256=pm1t2bzh9UGMZHZHnSPvU9JfgZDadZEEjqIzFK-UfzQ,2166657
7
+ goad_py/convergence.py,sha256=8HTlrpv3RLD8FfmZuT_2mySVtnpHaPLKx6Rcw-jDgB0,14930
8
+ goad_py/goad_py.pyi,sha256=7Y79-TV-NjEN8DWPEqSRGQ7alCrkylL6y1ZK8d6FYSg,14502
9
+ goad_py-0.5.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: maturin (1.9.1)
2
+ Generator: maturin (1.9.4)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp38-abi3-musllinux_1_2_aarch64
@@ -1,9 +0,0 @@
1
- goad_py-0.4.1.dist-info/METADATA,sha256=weu904gJ_ghV0hXUdpIPRnB0e9Mm7ZvPMAcVIhux_LI,3181
2
- goad_py-0.4.1.dist-info/WHEEL,sha256=dOnalb29euhUK3FRsG9PGb9HBYXnNGRGVeKIPHUwibU,106
3
- goad_py.libs/libgcc_s-e52197c3.so.1,sha256=vkPW1Auw6CH9Bjk7frmX3hry_1H9c0tRI0Ncyg71WUI,724137
4
- goad_py.libs/libstdc++-405035b3.so.6,sha256=dhdlt148awG0mZDLGM8wZy1R4PeU5HXvi8l9pgv4DiY,22443689
5
- goad_py/__init__.py,sha256=vZn5zZZdTgm1qTQFYCqgNKBKDAoheMo5OvwdLIIl3Dk,242
6
- goad_py/_goad_py.abi3.so,sha256=BPFU6ksbw7qkoVDqUL8UPWNmXizJfxatJoAzOiBEQJ8,2101081
7
- goad_py/convergence.py,sha256=8HTlrpv3RLD8FfmZuT_2mySVtnpHaPLKx6Rcw-jDgB0,14930
8
- goad_py/goad_py.pyi,sha256=Ue33wS-DLeI2JTwpKyPXNk4D-Trt9S5MBQSO8qW5XGc,14922
9
- goad_py-0.4.1.dist-info/RECORD,,