PyMieSim 3.5.4.1__cp311-cp311-macosx_14_0_arm64.whl → 3.5.4.5__cp311-cp311-macosx_14_0_arm64.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.
Files changed (44) hide show
  1. PyMieSim/__init__.py +8 -3
  2. PyMieSim/__main__.py +2 -0
  3. PyMieSim/_version.py +2 -2
  4. PyMieSim/binary/interface_detector.cpython-310-darwin.so +0 -0
  5. PyMieSim/binary/interface_detector.cpython-311-darwin.so +0 -0
  6. PyMieSim/binary/interface_experiment.cpython-310-darwin.so +0 -0
  7. PyMieSim/binary/interface_experiment.cpython-311-darwin.so +0 -0
  8. PyMieSim/binary/interface_scatterer.cpython-310-darwin.so +0 -0
  9. PyMieSim/binary/interface_scatterer.cpython-311-darwin.so +0 -0
  10. PyMieSim/binary/interface_sets.cpython-310-darwin.so +0 -0
  11. PyMieSim/binary/interface_sets.cpython-311-darwin.so +0 -0
  12. PyMieSim/binary/interface_source.cpython-310-darwin.so +0 -0
  13. PyMieSim/binary/interface_source.cpython-311-darwin.so +0 -0
  14. PyMieSim/binary/libcpp_coordinates.a +0 -0
  15. PyMieSim/binary/libcpp_detector.a +0 -0
  16. PyMieSim/binary/libcpp_experiment.a +0 -0
  17. PyMieSim/binary/libcpp_fibonacci.a +0 -0
  18. PyMieSim/binary/libcpp_mode_field.a +0 -0
  19. PyMieSim/binary/libcpp_sets.a +0 -0
  20. PyMieSim/binary/libcpp_source.a +0 -0
  21. PyMieSim/experiment/scatterer/base.py +8 -2
  22. PyMieSim/experiment/scatterer/core_shell.py +11 -8
  23. PyMieSim/experiment/scatterer/cylinder.py +8 -7
  24. PyMieSim/experiment/scatterer/sphere.py +8 -7
  25. PyMieSim/experiment/source/gaussian.py +13 -14
  26. PyMieSim/experiment/source/planewave.py +15 -16
  27. PyMieSim/single/scatterer/core_shell.py +13 -1
  28. PyMieSim/single/scatterer/cylinder.py +6 -1
  29. PyMieSim/single/scatterer/sphere.py +13 -1
  30. PyMieSim/special_functions.py +7 -8
  31. {PyMieSim/binary → lib}/libZBessel.a +0 -0
  32. {PyMieSim/binary → lib}/lib_ZBessel.a +0 -0
  33. lib/libcpp_base_scatterer.a +0 -0
  34. lib/libcpp_coreshell.a +0 -0
  35. lib/libcpp_cylinder.a +0 -0
  36. lib/libcpp_sphere.a +0 -0
  37. {pymiesim-3.5.4.1.dist-info → pymiesim-3.5.4.5.dist-info}/METADATA +77 -213
  38. {pymiesim-3.5.4.1.dist-info → pymiesim-3.5.4.5.dist-info}/RECORD +40 -40
  39. {pymiesim-3.5.4.1.dist-info → pymiesim-3.5.4.5.dist-info}/WHEEL +1 -1
  40. PyMieSim/binary/libcpp_base_scatterer.a +0 -0
  41. PyMieSim/binary/libcpp_coreshell.a +0 -0
  42. PyMieSim/binary/libcpp_cylinder.a +0 -0
  43. PyMieSim/binary/libcpp_sphere.a +0 -0
  44. {pymiesim-3.5.4.1.dist-info → pymiesim-3.5.4.5.dist-info}/licenses/LICENSE +0 -0
PyMieSim/__init__.py CHANGED
@@ -1,4 +1,11 @@
1
- from PyMieSim.units import Quantity # God knows why removing this line make the test fails on mac x86_64! DO NOT REMOVE!
1
+ """PyMieSim package initialization.
2
+
3
+ This module exposes the package version and sets up unit handling. Importing
4
+ ``Quantity`` here ensures proper initialization on all platforms. Removing this
5
+ import causes unit tests to fail on macOS systems.
6
+ """
7
+
8
+ from PyMieSim.units import Quantity # required for unit registration on macOS
2
9
 
3
10
  try:
4
11
  from ._version import version as __version__
@@ -7,5 +14,3 @@ except ImportError:
7
14
  __version__ = "0.0.0"
8
15
 
9
16
  debug_mode = False
10
-
11
- # -
PyMieSim/__main__.py CHANGED
@@ -1,4 +1,6 @@
1
1
 
2
+ """Entry point for launching the experimental PyMieSim GUI."""
3
+
2
4
  from PyMieSim.gui.interface import OpticalSetupGUI
3
5
 
4
6
 
PyMieSim/_version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '3.5.4.1'
21
- __version_tuple__ = version_tuple = (3, 5, 4, 1)
20
+ __version__ = version = '3.5.4.5'
21
+ __version_tuple__ = version_tuple = (3, 5, 4, 5)
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -62,11 +62,17 @@ class BaseScatterer():
62
62
  CPPClass = CppMediumProperties if name == 'medium' else CppScattererProperties
63
63
 
64
64
  if all(isinstance(item, Quantity) for item in properties):
65
- self.binding_kwargs[f'{name}_properties'] = CPPClass(index_properties=properties.magnitude)
65
+ instance = CPPClass(index_properties=properties.magnitude)
66
+ self.binding_kwargs[f'{name}_properties'] = instance
67
+
68
+ return instance
66
69
 
67
70
  elif all(isinstance(item, BaseMaterial) for item in properties):
68
71
  eval_index = numpy.asarray([m.compute_refractive_index(self.source.wavelength.to_base_units().magnitude) for m in properties])
69
- self.binding_kwargs[f'{name}_properties'] = CPPClass(material_properties=eval_index)
72
+ instance = CPPClass(material_properties=eval_index)
73
+ self.binding_kwargs[f'{name}_properties'] = instance
74
+
75
+ return instance
70
76
 
71
77
  else:
72
78
  raise TypeError("All elements in the list must be of type 'Quantity' or 'BaseMaterial', not a mix of both.")
@@ -66,14 +66,17 @@ class CoreShell(BaseScatterer, Sequential):
66
66
  is_sequential=self.is_sequential
67
67
  )
68
68
 
69
- self._add_properties(name='medium', properties=self.medium_property)
69
+ mediun_properties = self._add_properties(name='medium', properties=self.medium_property)
70
70
 
71
- self._add_properties(name='core', properties=self.core_property)
71
+ core_properties = self._add_properties(name='core', properties=self.core_property)
72
72
 
73
- self._add_properties(name='shell', properties=self.shell_property)
73
+ shell_properties = self._add_properties(name='shell', properties=self.shell_property)
74
74
 
75
- binding_kwargs = {
76
- k: v.to_base_units().magnitude if isinstance(v, Quantity) else v for k, v in self.binding_kwargs.items()
77
- }
78
-
79
- self.binding = CppCoreShellSet(**binding_kwargs)
75
+ self.binding = CppCoreShellSet(
76
+ core_diameter=self.core_diameter.to('meter').magnitude,
77
+ shell_thickness=self.shell_thickness.to('meter').magnitude,
78
+ core_properties=core_properties,
79
+ shell_properties=shell_properties,
80
+ medium_properties=mediun_properties,
81
+ is_sequential=self.is_sequential,
82
+ )
@@ -51,12 +51,13 @@ class Cylinder(BaseScatterer, Sequential):
51
51
 
52
52
  self.binding_kwargs = dict(diameter=self.diameter, is_sequential=self.is_sequential)
53
53
 
54
- self._add_properties(name='medium', properties=self.medium_property)
54
+ mediun_properties = self._add_properties(name='medium', properties=self.medium_property)
55
55
 
56
- self._add_properties(name='scatterer', properties=self.property)
56
+ scatterer_properties = self._add_properties(name='scatterer', properties=self.property)
57
57
 
58
- binding_kwargs = {
59
- k: v.to_base_units().magnitude if isinstance(v, Quantity) else v for k, v in self.binding_kwargs.items()
60
- }
61
-
62
- self.binding = CppCylinderSet(**binding_kwargs)
58
+ self.binding = CppCylinderSet(
59
+ diameter=self.diameter.to('meter').magnitude,
60
+ scatterer_properties=scatterer_properties,
61
+ medium_properties=mediun_properties,
62
+ is_sequential=self.is_sequential,
63
+ )
@@ -54,12 +54,13 @@ class Sphere(BaseScatterer, Sequential):
54
54
 
55
55
  self.binding_kwargs = dict(diameter=self.diameter, is_sequential=self.is_sequential)
56
56
 
57
- self._add_properties(name='medium', properties=self.medium_property)
57
+ mediun_properties = self._add_properties(name='medium', properties=self.medium_property)
58
58
 
59
- self._add_properties(name='scatterer', properties=self.property)
59
+ scatterer_properties = self._add_properties(name='scatterer', properties=self.property)
60
60
 
61
- binding_kwargs = {
62
- k: v.to_base_units().magnitude if isinstance(v, Quantity) else v for k, v in self.binding_kwargs.items()
63
- }
64
-
65
- self.binding = CppSphereSet(**binding_kwargs)
61
+ self.binding = CppSphereSet(
62
+ diameter=self.diameter.to('meter').magnitude,
63
+ scatterer_properties=scatterer_properties,
64
+ medium_properties=mediun_properties,
65
+ is_sequential=self.is_sequential,
66
+ )
@@ -32,12 +32,17 @@ class Gaussian(BaseSource, Sequential):
32
32
  wavelength: Quantity
33
33
  polarization: Union[BasePolarization, Quantity]
34
34
 
35
- def _generate_binding_kwargs(self) -> None:
35
+ def _generate_binding(self) -> None:
36
36
  """
37
37
  Prepares the keyword arguments for the C++ binding based on the scatterer's properties. This
38
38
  involves evaluating material indices and organizing them into a dictionary for the C++ interface.
39
39
 
40
40
  """
41
+ self.mapping = {}
42
+
43
+ if not isinstance(self.polarization, BasePolarization):
44
+ self.polarization = Linear(self.polarization)
45
+
41
46
  self.binding_kwargs = dict(
42
47
  wavelength=self.wavelength,
43
48
  jones_vector=self.polarization.element,
@@ -46,16 +51,10 @@ class Gaussian(BaseSource, Sequential):
46
51
  is_sequential=self.is_sequential
47
52
  )
48
53
 
49
- def _generate_binding(self):
50
- self.mapping = {}
51
-
52
- if not isinstance(self.polarization, BasePolarization):
53
- self.polarization = Linear(self.polarization)
54
-
55
- self._generate_binding_kwargs()
56
-
57
- binding_kwargs = {
58
- k: v.to_base_units().magnitude if isinstance(v, Quantity) else v for k, v in self.binding_kwargs.items()
59
- }
60
-
61
- self.binding = CppGaussianSourceSet(**binding_kwargs)
54
+ self.binding = CppGaussianSourceSet(
55
+ wavelength=self.wavelength.to('meter').magnitude,
56
+ jones_vector=self.polarization.element,
57
+ NA=self.NA.to('dimensionless').magnitude,
58
+ optical_power=self.optical_power.to('watt').magnitude,
59
+ is_sequential=self.is_sequential
60
+ )
@@ -40,14 +40,20 @@ class PlaneWave(BaseSource, Sequential):
40
40
 
41
41
  return value
42
42
 
43
- def _generate_binding_kwargs(self) -> None:
43
+ def _generate_binding(self) -> None:
44
44
  """
45
45
  Prepares the keyword arguments for the C++ binding based on the scatterer's properties. This
46
46
  involves evaluating material indices and organizing them into a dictionary for the C++ interface.
47
47
 
48
- Returns:
49
- None
48
+ Returns
49
+ -------
50
+ None
50
51
  """
52
+ self.mapping = {}
53
+
54
+ if not isinstance(self.polarization, BasePolarization):
55
+ self.polarization = Linear(self.polarization)
56
+
51
57
  self.binding_kwargs = dict(
52
58
  wavelength=self.wavelength,
53
59
  jones_vector=self.polarization.element,
@@ -55,16 +61,9 @@ class PlaneWave(BaseSource, Sequential):
55
61
  is_sequential=self.is_sequential
56
62
  )
57
63
 
58
- def _generate_binding(self):
59
- self.mapping = {}
60
-
61
- if not isinstance(self.polarization, BasePolarization):
62
- self.polarization = Linear(self.polarization)
63
-
64
- self._generate_binding_kwargs()
65
-
66
- binding_kwargs = {
67
- k: v.to_base_units().magnitude if isinstance(v, Quantity) else v for k, v in self.binding_kwargs.items()
68
- }
69
-
70
- self.binding = CppPlaneWaveSourceSet(**binding_kwargs)
64
+ self.binding = CppPlaneWaveSourceSet(
65
+ wavelength=self.wavelength.to('meter').magnitude,
66
+ jones_vector=self.polarization.element,
67
+ amplitude=self.amplitude.to('volt/meter').magnitude,
68
+ is_sequential=self.is_sequential
69
+ )
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
+ import numpy
4
5
  import pyvista
5
6
  from PyOptik.material.base_class import BaseMaterial
6
7
 
@@ -35,7 +36,7 @@ class CoreShell(CORESHELL, BaseScatterer):
35
36
  source: BaseSource
36
37
 
37
38
  property_names = [
38
- "size_parameter", "cross_section", "g",
39
+ "size_parameter", "radius", "volume", "cross_section", "g",
39
40
  "Qsca", "Qext", "Qabs", "Qback", "Qratio", "Qpr",
40
41
  "Csca", "Cext", "Cabs", "Cback", "Cratio", "Cpr"
41
42
  ]
@@ -85,6 +86,17 @@ class CoreShell(CORESHELL, BaseScatterer):
85
86
  source=self.source
86
87
  )
87
88
 
89
+ @property
90
+ def radius(self) -> units.Quantity:
91
+ """Return the outer radius of the scatterer."""
92
+ return self.core_diameter / 2 + self.shell_thickness
93
+
94
+ @property
95
+ def volume(self) -> units.Quantity:
96
+ """Return the volume of the scatterer."""
97
+ vol = (4/3) * numpy.pi * (self.radius ** 3)
98
+ return vol.to(units.meter ** 3)
99
+
88
100
  def _add_to_3d_ax(self, scene: pyvista.Plotter, color: str = 'black', opacity: float = 1.0) -> None:
89
101
  """
90
102
  Adds a 3D cone representation to the given PyVista plotting scene.
@@ -27,7 +27,7 @@ class Cylinder(CYLINDER, BaseScatterer):
27
27
  source: BaseSource
28
28
 
29
29
  property_names = [
30
- "size_parameter", "cross_section", "g",
30
+ "size_parameter", "radius", "cross_section", "g",
31
31
  "Qsca", "Qext", "Qabs",
32
32
  "Csca", "Cext", "Cabs"
33
33
  ]
@@ -62,6 +62,11 @@ class Cylinder(CYLINDER, BaseScatterer):
62
62
  source=self.source
63
63
  )
64
64
 
65
+ @property
66
+ def radius(self) -> units.Quantity:
67
+ """Return the radius of the cylinder."""
68
+ return self.diameter / 2
69
+
65
70
  @property
66
71
  def Cback(self) -> None:
67
72
  raise NotImplementedError
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
+ import numpy
4
5
  import pyvista
5
6
  from PyOptik.material.base_class import BaseMaterial
6
7
 
@@ -29,7 +30,7 @@ class Sphere(SPHERE, BaseScatterer):
29
30
  source: BaseSource
30
31
 
31
32
  property_names = [
32
- "size_parameter", "cross_section", "g",
33
+ "size_parameter", "radius", "volume", "cross_section", "g",
33
34
  "Qsca", "Qext", "Qabs", "Qback", "Qratio", "Qpr",
34
35
  "Csca", "Cext", "Cabs", "Cback", "Cratio", "Cpr"
35
36
  ]
@@ -66,6 +67,17 @@ class Sphere(SPHERE, BaseScatterer):
66
67
  source=self.source
67
68
  )
68
69
 
70
+ @property
71
+ def radius(self) -> units.Quantity:
72
+ """Return the radius of the sphere."""
73
+ return self.diameter / 2
74
+
75
+ @property
76
+ def volume(self) -> units.Quantity:
77
+ """Return the volume of the sphere."""
78
+ vol = (4/3) * numpy.pi * (self.radius ** 3)
79
+ return vol.to(units.meter ** 3)
80
+
69
81
  def _add_to_3d_ax(self, scene: pyvista.Plotter, color: str = 'black', opacity: float = 1.0) -> None:
70
82
  """
71
83
  Adds a 3D cone representation to the given PyVista plotting scene.
@@ -56,22 +56,21 @@ def spherical_to_cartesian(phi: numpy.ndarray, theta: numpy.ndarray, r: numpy.nd
56
56
 
57
57
 
58
58
  def rotate_on_x(phi: numpy.ndarray, theta: numpy.ndarray, angle: float) -> tuple:
59
- """
60
- Rotate spherical coordinates around the X-axis.
59
+ """Rotate spherical coordinates around the X-axis.
61
60
 
62
61
  Parameters
63
62
  ----------
64
63
  phi : numpy.ndarray
65
- The phi angles.
64
+ Azimuthal angles in radians.
66
65
  theta : numpy.ndarray
67
- The theta angles.
68
- r : numpy.ndarray
69
- The radial distances; defaults to unit radius if None.
66
+ Polar angles in radians.
67
+ angle : float
68
+ Rotation angle about the X-axis, in radians.
70
69
 
71
70
  Returns
72
71
  -------
73
- numpy.ndarray
74
- The Cartesian coordinates (x, y, z).
72
+ tuple
73
+ The rotated spherical coordinates ``(r, phi, theta)``.
75
74
  """
76
75
  # Convert to Cartesian for rotation
77
76
  x, y, z = spherical_to_cartesian(phi, theta)
Binary file
Binary file
Binary file
lib/libcpp_coreshell.a ADDED
Binary file
lib/libcpp_cylinder.a ADDED
Binary file
lib/libcpp_sphere.a ADDED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: PyMieSim
3
- Version: 3.5.4.1
3
+ Version: 3.5.4.5
4
4
  Summary: A package for light scattering computation.
5
5
  Keywords: mie,scattering,backscatter,sphere,cylinder,nanoparticle,phase function,efficiency,rayleigh,backscattering
6
6
  Author-Email: Martin Poinsinet de Sivry-Houle <martin.poinsinet.de.sivry@gmail.com>
@@ -54,22 +54,22 @@ Requires-Dist: MPSPlots==1.6.4
54
54
  Requires-Dist: pydantic<2.12.0,>=2.9.2
55
55
  Requires-Dist: pint-pandas~=0.6
56
56
  Requires-Dist: pandas~=2.3.0
57
- Requires-Dist: PyOptik==1.10.8
57
+ Requires-Dist: PyOptik==1.11.0
58
58
  Requires-Dist: tabulate~=0.9
59
59
  Requires-Dist: pyvista==0.45.2
60
60
  Provides-Extra: testing
61
61
  Requires-Dist: pytest>=0.6; extra == "testing"
62
62
  Requires-Dist: pytest-cov>=2.0; extra == "testing"
63
63
  Requires-Dist: pytest-json-report==1.5.0; extra == "testing"
64
- Requires-Dist: coverage==7.8.2; extra == "testing"
64
+ Requires-Dist: coverage==7.9.2; extra == "testing"
65
65
  Provides-Extra: documentation
66
- Requires-Dist: numpydoc==1.8.0; extra == "documentation"
66
+ Requires-Dist: numpydoc==1.9.0; extra == "documentation"
67
67
  Requires-Dist: sphinx>=5.1.1; extra == "documentation"
68
68
  Requires-Dist: sphinx-rtd-theme==3.0.2; extra == "documentation"
69
69
  Requires-Dist: sphinx-gallery==0.19.0; extra == "documentation"
70
70
  Requires-Dist: pydata-sphinx-theme==0.16.1; extra == "documentation"
71
71
  Provides-Extra: dev
72
- Requires-Dist: flake8==7.2.0; extra == "dev"
72
+ Requires-Dist: flake8==7.3.0; extra == "dev"
73
73
  Description-Content-Type: text/x-rst
74
74
 
75
75
  |logo|
@@ -86,191 +86,98 @@ Description-Content-Type: text/x-rst
86
86
  - |ci/cd|
87
87
  - |coverage|
88
88
  - |colab|
89
- * - PyPi
90
- - |PyPi|
91
- - |PyPi_download|
89
+ * - PyPI
90
+ - |PyPI|
91
+ - |PyPI_download|
92
92
  -
93
93
  * - Anaconda
94
94
  - |anaconda|
95
95
  - |anaconda_download|
96
96
  - |anaconda_date|
97
97
 
98
-
99
-
100
-
101
98
  PyMieSim
102
99
  ========
103
100
 
104
- **PyMieSim** is a Python library designed to provide a robust and flexible framework for performing Mie scattering simulations.
105
- The software is easy to install and operate, making it accessible to both new users and experienced researchers.
106
- PyMieSim enables users to explore the scattering properties of particles under various configurations, and is tailored for investigating single scattering events, as well as conducting large-scale parametric experiments.
107
-
108
- At its core, PyMieSim includes three solvers optimized for different types of scatterers:
109
-
110
- - **Spherical particles**
111
- - **Infinite cylindrical particles**
112
- - **Core-shell spherical particles**
113
-
114
- The software also allows the user to customize the light source and detector attributes, depending on the specific simulation needs. The package is modular and provides an intuitive interface for users to model complex scattering scenarios with minimal effort.
115
-
116
- |code_structure|
117
-
118
- Main Submodules
119
- ---------------
120
-
121
- PyMieSim is organized into two primary submodules:
122
-
123
- 1. **single**: Focused on analyzing individual scattering events, such as:
124
- - Far-field distributions
125
- - Scattering phase functions
126
- - Stokes parameters
127
-
128
- 2. **experiment**: Designed for exploring how scattering parameters, such as `Qsca`, `Qext`, `g`, and `coupling (power)`, behave over large datasets, incorporating variations in sources, scatterers, and detectors.
101
+ **PyMieSim** is an open-source Python package for fast and flexible Mie
102
+ scattering simulations. It supports spherical, cylindrical and core--shell
103
+ particles and provides helper classes for custom sources and detectors.
104
+ The project targets both quick single-scatterer studies and large parametric
105
+ experiments.
129
106
 
130
- Both submodules work seamlessly together, making PyMieSim adaptable for a wide range of scattering simulations.
131
-
132
-
133
- ----
134
-
135
- Getting Started
136
- ---------------
137
-
138
- To use PyMieSim in Python, simply install the package and begin incorporating it into your scripts.
107
+ Features
108
+ --------
109
+ - Solvers for spheres, cylinders and core--shell geometries.
110
+ - Built-in models for plane wave and Gaussian sources.
111
+ - Multiple detector types including photodiodes and coherent modes.
112
+ - Simple data analysis with pandas DataFrame outputs.
139
113
 
140
114
  Installation
141
- ************
142
-
143
- PyMieSim supports Windows, Linux, macOS (including Apple M1/M2 chips), and ARM architectures. To install the package, use pip:
115
+ ------------
116
+ PyMieSim is available on PyPI and Anaconda. Install it with:
144
117
 
145
118
  .. code-block:: bash
146
119
 
147
- pip install PyMieSim (using pip package manager)
148
-
149
- conda install PyMieSim (using conda environment manager)
120
+ pip install PyMieSim
121
+ conda install PyMieSim
150
122
 
151
- For more details, visit the `documentation <https://pymiesim.readthedocs.io/en/latest/>`_ for a comprehensive guide on how to use the package.
152
-
153
- ----
154
-
155
- Example Code
156
- ------------
123
+ See the `online documentation <https://pymiesim.readthedocs.io/>`_ for detailed
124
+ usage and additional examples.
157
125
 
158
- Here is an example of how to use PyMieSim for a simple Mie scattering simulation. This example demonstrates how to configure a light source, scatterer, and detector, and retrieve the scattering data:
126
+ Quick example
127
+ -------------
128
+ Below is a short example computing the scattering efficiency of a sphere.
159
129
 
160
130
  .. code-block:: python
161
131
 
162
- import numpy as np
163
-
164
- from PyMieSim.experiment.scatterer import Sphere
165
- from PyMieSim.experiment.source import Gaussian
166
- from PyMieSim.experiment import Setup
167
- from PyMieSim.units import nanometer, degree, watt, AU, RIU
168
-
169
- source = Gaussian(
170
- wavelength=np.linspace(400, 1000, 500) * nanometer,
171
- polarization=0 * degree,
172
- optical_power=1e-3 * watt,
173
- NA=0.2 * AU
174
- )
175
-
176
- scatterer = Sphere(
177
- diameter=[200] * nanometer,
178
- property=[4] * RIU,
179
- medium_property=1 * RIU,
180
- source=source
181
- )
182
-
183
- experiment = Setup(scatterer=scatterer, source=source)
184
-
185
- dataframe = experiment.get('Qsca')
186
-
187
- dataframe.plot_data(x="source:wavelength")
188
-
189
-
190
- It produces the following figure which is equivalent to the one found on `wikipedia <https://en.wikipedia.org/wiki/Mie_scattering#/media/File:N4wiki.svg>`_.
191
-
192
- |wikipedia_example|
193
-
194
-
195
- This is just one example of PyMieSim in action. You can find more examples in the
196
- `examples section <https://pymiesim.readthedocs.io/en/master/gallery/index.html>`_ of the documentation.
197
-
198
- ----
199
-
200
- Examples
201
- --------
202
-
203
- Here are a few more examples showcasing the capabilities of PyMieSim:
204
-
205
- Example 1: Plasmonic Resonances for CoreShell Particles
206
- *******************************************************
207
-
208
- |example_plasmon|
209
-
210
- Example 2: Scattering Efficiency vs Diameter for Spherical Particles
211
- ********************************************************************
212
-
213
- |example_qsca|
214
-
215
- ----
216
-
217
- Manual Building
218
- ---------------
219
-
220
- If you prefer or need to build the project manually (e.g., for Apple silicon devices), ensure you have a C++ compiler (such as gcc) and Fortran installed, as well as Python 3.7+.
221
-
222
- Build Instructions
223
- ******************
224
-
225
- Linux/MacOS
226
- ~~~~~~~~~~~
132
+ import numpy as np
133
+ from PyMieSim.experiment.scatterer import Sphere
134
+ from PyMieSim.experiment.source import Gaussian
135
+ from PyMieSim.experiment import Setup
136
+ from PyMieSim.units import nanometer, degree, watt, AU, RIU
137
+
138
+ source = Gaussian(
139
+ wavelength=np.linspace(400, 1000, 500) * nanometer,
140
+ polarization=0 * degree,
141
+ optical_power=1e-3 * watt,
142
+ NA=0.2 * AU,
143
+ )
144
+
145
+ scatterer = Sphere(
146
+ diameter=[200] * nanometer,
147
+ property=[4] * RIU,
148
+ medium_property=1 * RIU,
149
+ source=source,
150
+ )
151
+
152
+ experiment = Setup(scatterer=scatterer, source=source)
153
+ df = experiment.get("Qsca")
154
+ df.plot_data(x="source:wavelength")
155
+
156
+ Building from source
157
+ --------------------
158
+ For development or manual compilation, clone the repository and run:
227
159
 
228
160
  .. code-block:: bash
229
161
 
230
- git clone https://github.com/MartinPdeS/PyMieSim.git
231
- cd PyMieSim
232
- git submodule init && git submodule update
233
- mkdir build
234
- cd build
235
- cmake ../ -G"Unix Makefiles"
236
- sudo make install
237
- cd ..
238
- python -m pip install .
239
-
240
- For Windows, use `MinGW Makefiles` instead of `Unix Makefiles` when invoking CMake.
241
-
242
- ----
162
+ git submodule update --init
163
+ mkdir build && cd build
164
+ cmake ../ -G"Unix Makefiles"
165
+ sudo make install
166
+ cd ..
167
+ python -m pip install .
243
168
 
244
169
  Testing
245
170
  -------
246
-
247
- You can test the local version of PyMieSim by running the following commands:
171
+ Run the unit tests with:
248
172
 
249
173
  .. code-block:: bash
250
174
 
251
- git clone https://github.com/MartinPdeS/PyMieSim.git
252
- cd PyMieSim
253
- pip install PyMieSim[testing]
254
- pytest
255
-
256
- This will run the suite of unit tests and provide coverage details.
257
-
258
- ----
259
-
260
- Google Colab
261
- ------------
262
-
263
- In 2024, running code on your local machine is optional! You can leverage the power of Google Colab to run PyMieSim remotely. Use the provided
264
- `Colab notebook <https://colab.research.google.com/github/MartinPdeS/PyMieSim/blob/master/notebook.ipynb>`_ for an interactive experience.
265
-
266
- |colab|
267
-
268
- ----
175
+ pip install PyMieSim[testing]
176
+ pytest
269
177
 
270
178
  Citing PyMieSim
271
179
  ---------------
272
-
273
- If PyMieSim contributes to your research, we kindly ask that you cite the following paper:
180
+ If you use PyMieSim in academic work, please cite:
274
181
 
275
182
  .. code-block:: none
276
183
 
@@ -285,99 +192,56 @@ If PyMieSim contributes to your research, we kindly ask that you cite the follow
285
192
  doi = {10.1364/OPTCON.473102},
286
193
  }
287
194
 
288
- You can access the full article `here <https://opg.optica.org/optcon/fulltext.cfm?uri=optcon-2-3-520&id=526697>`_
289
-
290
- ----
291
-
292
- Experimental Graphical User Interface (GUI)
293
- -------------------------------------------
294
-
295
- Since version 1.7.0, PyMieSim offers an experimental GUI for users who prefer a graphical approach to simulations. While still under development, the GUI can be installed and accessed as follows:
296
-
297
- .. code-block:: bash
298
-
299
- pip install PyMieSim
300
- python -m PyMieSim
301
-
302
- The GUI is not yet as robust as the core Python API, but it provides a simplified interface for generating simulations.
303
-
304
- |example_gui|
305
-
306
- ----
307
-
308
- Contact Information
309
- -------------------
310
-
311
- PyMieSim is actively developed and maintained by Martin Poinsinet de Sivry-Houle. If you're interested in contributing or have questions, feel free to reach out.
312
-
313
- Email: `martin.poinsinet.de.sivry@gmail.ca <mailto:martin.poinsinet.de.sivry@gmail.ca?subject=PyMieSim>`_
314
-
315
- Flag_0
316
-
317
- ----
195
+ Contact
196
+ -------
197
+ For questions or contributions, contact `martin.poinsinet.de.sivry@gmail.ca <mailto:martin.poinsinet.de.sivry@gmail.ca>`_.
318
198
 
319
199
  .. |logo| image:: https://github.com/MartinPdeS/PyMieSim/raw/master/docs/images/logo.png
320
200
  :alt: PyOptik logo
321
-
322
201
  .. |python| image:: https://img.shields.io/pypi/pyversions/pymiesim.svg
323
202
  :alt: Python
324
203
  :target: https://www.python.org/
325
-
326
204
  .. |zenodo| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.5593704.svg
327
205
  :alt: Scientific article
328
206
  :target: https://doi.org/10.5281/zenodo.4556074
329
-
330
207
  .. |colab| image:: https://colab.research.google.com/assets/colab-badge.svg
331
208
  :alt: Google Colab
332
209
  :target: https://colab.research.google.com/github/MartinPdeS/PyMieSim/blob/master/notebook.ipynb
333
-
334
210
  .. |docs| image:: https://github.com/martinpdes/pymiesim/actions/workflows/deploy_documentation.yml/badge.svg
335
211
  :target: https://martinpdes.github.io/PyMieSim/
336
212
  :alt: Documentation Status
337
-
338
- .. |PyPi| image:: https://badge.fury.io/py/PyMieSim.svg
339
- :alt: PyPi version
213
+ .. |PyPI| image:: https://badge.fury.io/py/PyMieSim.svg
214
+ :alt: PyPI version
340
215
  :target: https://badge.fury.io/py/PyMieSim
341
-
342
- .. |PyPi_download| image:: https://img.shields.io/pypi/dm/PyMieSim?style=plastic&label=PyPi%20downloads&labelColor=hex&color=hex
343
- :alt: PyPI - Downloads
344
- :target: https://pypistats.org/packages/pymiesim
345
-
216
+ .. |PyPI_download| image:: https://img.shields.io/pypi/dm/PyMieSim?style=plastic&label=PyPI%20downloads&labelColor=hex&color=hex
217
+ :alt: PyPI downloads
218
+ :target: https://pypistats.org/packages/pymiesim
346
219
  .. |coverage| image:: https://raw.githubusercontent.com/MartinPdeS/PyMieSim/python-coverage-comment-action-data/badge.svg
347
220
  :alt: Unittest coverage
348
221
  :target: https://htmlpreview.github.io/?https://github.com/MartinPdeS/PyMieSim/blob/python-coverage-comment-action-data/htmlcov/index.html
349
-
350
222
  .. |ci/cd| image:: https://github.com/martinpdes/pymiesim/actions/workflows/deploy_coverage.yml/badge.svg
351
223
  :alt: Unittest Status
352
-
353
224
  .. |code_structure| image:: https://github.com/MartinPdeS/PyMieSim/raw/master/docs/images/code_structure.png
354
225
  :width: 800
355
226
  :alt: Structure of the library
356
-
357
227
  .. |example_gui| image:: https://github.com/MartinPdeS/PyMieSim/raw/master/docs/images/example_gui.png
358
228
  :width: 800
359
229
  :alt: Structure of the library
360
-
361
230
  .. |wikipedia_example| image:: https://github.com/MartinPdeS/PyMieSim/raw/master/docs/images/wikipedia_example.png
362
231
  :width: 800
363
232
  :alt: Example wikipedia
364
-
365
233
  .. |example_plasmon| image:: https://github.com/MartinPdeS/PyMieSim/raw/master/docs/images/plasmonic_resonances.png
366
234
  :width: 800
367
235
  :alt: Plasmonic resonances
368
-
369
236
  .. |example_qsca| image:: https://github.com/MartinPdeS/PyMieSim/raw/master/docs/images/Qsca_diameter.png
370
237
  :width: 800
371
238
  :alt: Qsca vs diameter
372
-
373
239
  .. |anaconda| image:: https://anaconda.org/martinpdes/pymiesim/badges/version.svg
374
- :alt: Anaconda version
375
- :target: https://anaconda.org/martinpdes/pymiesim
376
-
240
+ :alt: Anaconda version
241
+ :target: https://anaconda.org/martinpdes/pymiesim
377
242
  .. |anaconda_download| image:: https://anaconda.org/martinpdes/pymiesim/badges/downloads.svg
378
- :alt: Anaconda downloads
379
- :target: https://anaconda.org/martinpdes/pymiesim
380
-
243
+ :alt: Anaconda downloads
244
+ :target: https://anaconda.org/martinpdes/pymiesim
381
245
  .. |anaconda_date| image:: https://anaconda.org/martinpdes/pymiesim/badges/latest_release_relative_date.svg
382
246
  :alt: Latest release date
383
247
  :target: https://anaconda.org/martinpdes/pymiesim
@@ -1,11 +1,15 @@
1
+ pymiesim-3.5.4.5.dist-info/RECORD,,
2
+ pymiesim-3.5.4.5.dist-info/WHEEL,sha256=IENW9wY17TDsb9YtMIxV0tAkLi5DnoeroR3ly0Og4ic,114
3
+ pymiesim-3.5.4.5.dist-info/METADATA,sha256=UE7WvTskwDHDoTz9L7WAoBbowWUtasfF2_211pgCHdY,9562
4
+ pymiesim-3.5.4.5.dist-info/licenses/LICENSE,sha256=-QSWDJghhVqbAzChmEK86liqPX_eeQFgdwlrKTLLcIA,1088
1
5
  PyMieSim/units.py,sha256=L7Trn8rW5d5AQK1_8I-XwaHGswXklupXs5wHgWQtJNQ,4224
2
- PyMieSim/_version.py,sha256=5Tapzkw5U6lFgs0XMplhd1DKg_j63IGqiiYAseYMB5I,516
6
+ PyMieSim/_version.py,sha256=v2LXp9KAX7rDH85j1MBGjQ1-ebpfIccy0NiAxrH4Cas,516
3
7
  PyMieSim/directories.py,sha256=ohe9qvjwN0IJ7OpZHsD7LxKYGMLr4CC7xYUGgWgw-Rg,648
4
- PyMieSim/__init__.py,sha256=BGzl1hTX7-KoanQDm26IRHq6AmPFzVoIFcvOMfI0wQQ,249
8
+ PyMieSim/__init__.py,sha256=ZRdkOFRqjkVCq0qQs4DHIFnAgkdtBr19gZaq1k6bzxw,453
5
9
  PyMieSim/mesh.py,sha256=WcX_rXpWxH7WDniIqaG4rPC-pfDm4AG9ZAX-zI8GbhU,14566
6
10
  PyMieSim/polarization.py,sha256=PP8ksfWeTOnW3IOGVsAe8L183pgqe5R-KKBF99nQhaU,5487
7
- PyMieSim/special_functions.py,sha256=W9QQ1H3G5Yn-gdoqkApsRTOQMRWG10RgPGeV0VdKCiY,2082
8
- PyMieSim/__main__.py,sha256=lL91mip92hJQFpd_GYoaeppu3eaXK-vhgiTa6E_8adY,173
11
+ PyMieSim/special_functions.py,sha256=tC82qnTSpcNv0MFy5wZsVFwhbJKy_5tO8kBullijOaY,2093
12
+ PyMieSim/__main__.py,sha256=KO6-uwDgv95PHXlhpyIcyFX3qqddbI8HdQTsdqziz7g,237
9
13
  PyMieSim/single/__init__.py,sha256=GqpWQIaAkruQ4d1fa_fI2Qf8b5TGNXRFdkuHoe8LsTc,2207
10
14
  PyMieSim/single/representations.py,sha256=ThzTI0fQYhWC8LKHMLo17GOT3v6cSOa1n4iplNitn2A,29149
11
15
  PyMieSim/single/source/__init__.py,sha256=zCiDBYIE0TdYbtQXPgfU70DNz7ZxqtENU_NvrThJpTg,93
@@ -13,10 +17,10 @@ PyMieSim/single/source/planewave.py,sha256=J2t78fseCthUzCLqjH1KD7H669kGwiyBxPjkC
13
17
  PyMieSim/single/source/base.py,sha256=HKqsEVw7caNV7ev8OVNPi3zMHc4cgGuhH9s2XcgvgBw,124
14
18
  PyMieSim/single/source/gaussian.py,sha256=vVZ7UVkhlm2KvsTOf2uVcm9rjgXISSs7sv798m9otp4,4849
15
19
  PyMieSim/single/scatterer/__init__.py,sha256=2a9o-VHfqGloCEEbfIGSjLIIzWssRCt9W72AYvU2nSg,124
16
- PyMieSim/single/scatterer/core_shell.py,sha256=GOSmqYOFdSSHqmzbeP-gpohoFNVd6WIh4XhvW_nNY18,4672
20
+ PyMieSim/single/scatterer/core_shell.py,sha256=fqhu2PooEUDo7Vnotio7_iz2stozC5i5XczP8vdOKMs,5074
17
21
  PyMieSim/single/scatterer/base.py,sha256=CVVI8_nSgoF_BkEN0Fb_A61YHgMnKfOiKaKbe60NsD8,19701
18
- PyMieSim/single/scatterer/sphere.py,sha256=n0pvApEYvFH5j_OX3BC9WkofZin82TRUJ90wMj0S2to,3485
19
- PyMieSim/single/scatterer/cylinder.py,sha256=PFbsj096a_zgixP4biIY4tFdo2YMp0mVDmIicTZAnLk,3915
22
+ PyMieSim/single/scatterer/sphere.py,sha256=NVBP9iUX0pAPWdi13xbMzgLfllDPCgvF5BuJuWfUUec,3847
23
+ PyMieSim/single/scatterer/cylinder.py,sha256=GNABjAb2csnWxANlIdJW7PhuuewJHMVAlzNmlfnz7eU,4062
20
24
  PyMieSim/single/detector/uncoherent.py,sha256=DOqf5hU5ghEhj8IooC5uJX6pjMwNBveIr-FzcWkgTLk,4848
21
25
  PyMieSim/single/detector/__init__.py,sha256=os2BbDrnjrEZ3-gie6AKJAZHyE_I4OvKo0uuDEKqpE0,89
22
26
  PyMieSim/single/detector/base.py,sha256=2nKXdx-8ycg1Xm02rxV4TJIAHbQWHCOR-9T32byf5zs,11319
@@ -54,43 +58,39 @@ PyMieSim/experiment/setup.py,sha256=_dt2urIwClCKiKWJjgF4kNOB98gTj1XLNMSPf3KGYOU,
54
58
  PyMieSim/experiment/utils.py,sha256=H4KkYMN33NSm9nwman0vk-umW9ecMsPKujQ4zkctMzc,5380
55
59
  PyMieSim/experiment/dataframe_subclass.py,sha256=qPD_XW8x4WApQFdNOHJHt-Mc3BoT1b9y28dWmpZxccU,7174
56
60
  PyMieSim/experiment/source/__init__.py,sha256=tAfSmMqMTem6-obvbOHD2YK7l4UDh1g-20t789_1Ihw,64
57
- PyMieSim/experiment/source/planewave.py,sha256=lxUKI2NNV5WXEWRu0CTu-TK15juU4UovWsMTPyIMhv8,2488
61
+ PyMieSim/experiment/source/planewave.py,sha256=62RHOHCuTj0LrZ_0IAmLSiVyYyPRvRnLfBQIbdI0gwo,2480
58
62
  PyMieSim/experiment/source/base.py,sha256=QDe7CTQVQthI0KDmvLET4-5kxbv7ESuplmiU2Ubn1LM,3104
59
- PyMieSim/experiment/source/gaussian.py,sha256=hgtzhWQ41TNYNZyRv8kxIJ8YinGVHMXhN8qsQ71NoFo,2294
63
+ PyMieSim/experiment/source/gaussian.py,sha256=DRkap4C9vHHV85yE6Cj2qM3MsoZbNdX_wSilBRParE4,2331
60
64
  PyMieSim/experiment/scatterer/__init__.py,sha256=_19R38S6LSGuuFRRPTFK1Lv2jaSoFk6O1V7CdwdhLXo,124
61
- PyMieSim/experiment/scatterer/core_shell.py,sha256=SAlSDlaLqs7DpYMafv74BNIOHXyegJgchmlTvHHtiL4,3248
62
- PyMieSim/experiment/scatterer/base.py,sha256=sTbaoI0VKY8pbrbxns8p45iQJvqDRtQ5UFkvpd2X7yA,3757
63
- PyMieSim/experiment/scatterer/sphere.py,sha256=yapEd4t7iIZtEqkhA4EYANNYavw6skcv3wlwgltkpoI,2756
64
- PyMieSim/experiment/scatterer/cylinder.py,sha256=Ly4PvDME7W2cOdXO2rdgquCSxgjjkKNgma6FkkB9HkA,2449
65
+ PyMieSim/experiment/scatterer/core_shell.py,sha256=4VbxS6Evcz5sjNlB3wtMTdScXCPLHov87Vr3HNlH-AQ,3470
66
+ PyMieSim/experiment/scatterer/base.py,sha256=3hesoH2tNh2JtyOSSefU7Jl1WWjVpf8-QFmM1IfaR6Q,3879
67
+ PyMieSim/experiment/scatterer/sphere.py,sha256=tPZMCfrGlttVh6W2kJSLxzz1zvKEQNC7CmVk5yIaBSM,2845
68
+ PyMieSim/experiment/scatterer/cylinder.py,sha256=yr8fJsX-tj5HaCqxQOd4UccUxvWylZRgHXhXTL4tflE,2538
65
69
  PyMieSim/experiment/detector/photodiode.py,sha256=GBSoF3mhVRyADJbEO2g4n0LffmGU7HOc5gDGF-ojgLQ,1850
66
70
  PyMieSim/experiment/detector/coherent_mode.py,sha256=ME1CtxUfPY40E3HJoqJrW0ikje6QvhMY4RYs-yOvx0Q,1805
67
71
  PyMieSim/experiment/detector/__init__.py,sha256=pvtXHKR2pM7JOeTTcouKipeQwi0e8dZiZTpdAn9K2Ls,75
68
72
  PyMieSim/experiment/detector/base.py,sha256=j2yY_InLQDAPgDkM19ILlIEF-2koGMKRe9Hc-nFpyGc,7340
69
- PyMieSim/binary/interface_experiment.cpython-311-darwin.so,sha256=ZYR0Asnh4bKtRVz7N-fiac4rQunvw_HAo0HzPKYJm6U,473360
70
- PyMieSim/binary/libcpp_cylinder.a,sha256=NkOP-m0uVsUDLW9ejV2-Qg8bmcuI2nFXkUR2evHqrIQ,165024
71
- PyMieSim/binary/libcpp_coordinates.a,sha256=L9EfMUc2xbMbbLC7BIDYeStDkam-ec6q9oqOLkLpHOo,22432
72
- PyMieSim/binary/libcpp_source.a,sha256=Ul02IjODjve8qjOoMQGsNM02HjOtlLrRI7hpTAXuyOo,6720
73
- PyMieSim/binary/interface_experiment.cpython-310-darwin.so,sha256=UCgdLZHrbVmEZ432PUrIHE8P8lAlM_IDyx0hEZqd3nU,456752
74
- PyMieSim/binary/libcpp_sphere.a,sha256=RiG4zsdj3hjnjaoVwGKglQRxQcQyBPURcJD0BERFj1Y,175040
73
+ PyMieSim/binary/interface_experiment.cpython-311-darwin.so,sha256=j-bh2Ec8tOKyVRCQwgYr5L5Xi4LWUJUFamhlT7N5vf4,491584
74
+ PyMieSim/binary/libcpp_coordinates.a,sha256=Mt8nMTbKyfjMeKsMKIYMicXtLKPsxBeWrRVWAQ2-Xpo,22432
75
+ PyMieSim/binary/libcpp_source.a,sha256=58kr2_ce-wPQ2PQk6hXS8R0BMr0oeKTZ5HNpatoe_W4,6720
76
+ PyMieSim/binary/interface_experiment.cpython-310-darwin.so,sha256=4fBEUHQlYLuesrGM45q23MiGDHJ2SC6D6OyuFhS1kT8,474976
75
77
  PyMieSim/binary/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
- PyMieSim/binary/interface_detector.cpython-311-darwin.so,sha256=dF2k-Qb73SRJ4dIIfflq2TLhGGrpMahtc271RlxSIbQ,457200
77
- PyMieSim/binary/interface_source.cpython-310-darwin.so,sha256=rpdCj8Y6nvkHYAgsvGPdpXw6Tuc5QJrEko0qyPz80hc,223664
78
- PyMieSim/binary/libcpp_fibonacci.a,sha256=qECZN4F03_db258VVete3UmGJUvPkh_eQY2ywmXNb_c,14160
79
- PyMieSim/binary/libZBessel.a,sha256=CnDTQMHD1uabDsJYgwM7U7sKqEjiliIfA1QkUwNR46M,106200
80
- PyMieSim/binary/interface_sets.cpython-310-darwin.so,sha256=mOuQ-k55bFh1pg15iLQSAp-C3Qiqh4cCyU1OiOYSqts,544672
81
- PyMieSim/binary/libcpp_experiment.a,sha256=1ZzKcONwMTwklEqpck42NM1swZPQXV8PTJzbKy67Bk0,152376
82
- PyMieSim/binary/lib_ZBessel.a,sha256=AqhW9XL12_GFzcc2F3agMwXbRDykW-_5CtBJzsz1e0c,9840
83
- PyMieSim/binary/libcpp_coreshell.a,sha256=mP9YgRjJM6Gh0hbIrNUsp0LR5CvbppnRDiiPj4N5YKo,174096
84
- PyMieSim/binary/libcpp_mode_field.a,sha256=Q-yiBOw9obpQGlK6eG2GPN-umnll8RiI7Voc1g75AmA,10960
85
- PyMieSim/binary/interface_scatterer.cpython-310-darwin.so,sha256=H-R0X3GCRQP6pJ8IRb9z2I8bj7ClPwg67fU-Vz4QH_0,541440
86
- PyMieSim/binary/interface_detector.cpython-310-darwin.so,sha256=GX9-2miDwhgx9MVT3swRE8355ma91HLuApi8skh96tc,457136
87
- PyMieSim/binary/interface_source.cpython-311-darwin.so,sha256=AM5oXZa5UaGwoir1IfrC8_kixE_72pTlvfQ2OSid-io,223664
88
- PyMieSim/binary/interface_sets.cpython-311-darwin.so,sha256=V8GFAnAN4bVp8nNgFVuDJMtfT5UKoOGedlLtVxWovL8,544784
89
- PyMieSim/binary/libcpp_base_scatterer.a,sha256=XyIVSnaMmidouux10N9foZdS5NR8jWVVcK3zawqrCqE,176032
90
- PyMieSim/binary/libcpp_sets.a,sha256=qdNMNC3P8JgY9FgnkaTNmtUeCmiggoa6l68mBr7cl8M,152368
91
- PyMieSim/binary/interface_scatterer.cpython-311-darwin.so,sha256=RvQuN_omEsNGyiMg0wvTs728DbB3Lk4HRKn8uDLoU9Q,541504
92
- PyMieSim/binary/libcpp_detector.a,sha256=CI3qZAvXJjPFiiLGnGIgYwfi5L2FhalLuGlfjx0eHck,180536
93
- pymiesim-3.5.4.1.dist-info/RECORD,,
94
- pymiesim-3.5.4.1.dist-info/WHEEL,sha256=HextC8KDUIf6gchwfQ6LVKxqG5EqB97SIF71bsxoA1k,114
95
- pymiesim-3.5.4.1.dist-info/METADATA,sha256=lF-Jv_Pr0ijVs5CZmGwC_LF4dH68v33pIcICD6h1zMo,13472
96
- pymiesim-3.5.4.1.dist-info/licenses/LICENSE,sha256=-QSWDJghhVqbAzChmEK86liqPX_eeQFgdwlrKTLLcIA,1088
78
+ PyMieSim/binary/interface_detector.cpython-311-darwin.so,sha256=lh_RCWgRN4R1wKI3q-tWLtC_8666eV09V3H0qafR0q8,492336
79
+ PyMieSim/binary/interface_source.cpython-310-darwin.so,sha256=WKhrAqfJWndYN1ACTmjnD7W4qHu0OPZiE4kK7Zu-de0,240624
80
+ PyMieSim/binary/libcpp_fibonacci.a,sha256=MXr4xeSIAcx0S9mVmcV6PZcVOc5JYeRcdH-TjoQ8O_0,14160
81
+ PyMieSim/binary/interface_sets.cpython-310-darwin.so,sha256=67faOdm74RVKsEq-bRptcZTtagRfYbSdRkAW9njxtJ0,579360
82
+ PyMieSim/binary/libcpp_experiment.a,sha256=j2Yrg0QN9sXHbyLbDnbAJ1dJZRJVxCs9dtJUU4eGa60,169792
83
+ PyMieSim/binary/libcpp_mode_field.a,sha256=ad-2UuIk5cppPbtz9kReFaIXvhZOaIIbivX05Idv60w,10960
84
+ PyMieSim/binary/interface_scatterer.cpython-310-darwin.so,sha256=UdqKQyH0KUkGlW1PIz891BnfDiUQ08QqHRDcDQda4MI,559936
85
+ PyMieSim/binary/interface_detector.cpython-310-darwin.so,sha256=Cm8QqjfgCodblQQfRTFgh9kTxYMmS-D55E_w7ND4N9o,475776
86
+ PyMieSim/binary/interface_source.cpython-311-darwin.so,sha256=8ZwlKEMALhwE8u7vvSH_LlEpimsPcQtB8BnubLyKW0M,240624
87
+ PyMieSim/binary/interface_sets.cpython-311-darwin.so,sha256=4rRbWfSR1jQ1cF328qHIfYZN1em6sJMr3pbGw9wHALo,579440
88
+ PyMieSim/binary/libcpp_sets.a,sha256=iPv9lTLXCnny7cLccZtXdLlg4i6PH1yEmsy56wZQBOo,169784
89
+ PyMieSim/binary/interface_scatterer.cpython-311-darwin.so,sha256=W9qVZz9zvi4cRU_GgqMMQnxsx6KhKQ5cx3IaUxynYI8,576512
90
+ PyMieSim/binary/libcpp_detector.a,sha256=GyurmEyjjbn7mOzUmsJHB8Kvei2Uy4rgkaWQuMPW4zQ,197008
91
+ lib/libcpp_cylinder.a,sha256=yDA7dQyrf0DGyMjnKho5LlAoZRFGyd8C7jPV1ZN82Qs,183416
92
+ lib/libcpp_sphere.a,sha256=UdyqW1E7d7_c3-eCmhUMamcdF-6FgAOnN2SPQG7gD0M,194448
93
+ lib/libZBessel.a,sha256=4osQ_eyR5SeeP9Sf-Y_5CEmTKsqm9A1mFxS1HB1UnDg,106200
94
+ lib/lib_ZBessel.a,sha256=My2vrFOh6MECN9CD_w02sU7y9d6vMH6KHGjlshTjpFA,9840
95
+ lib/libcpp_coreshell.a,sha256=niwGl-yj2Ew3vt4OkG8_Id_8i7GEokIMlb2BKICgt3g,193240
96
+ lib/libcpp_base_scatterer.a,sha256=vbNU7blRiTAGassBRk7m9Ahin5A-QA6LYP_wMfSeMT8,194376
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: scikit-build-core 0.11.4
2
+ Generator: scikit-build-core 0.11.5
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-cp311-macosx_14_0_arm64
5
5
 
Binary file
Binary file
Binary file
Binary file