AMS-BP 0.0.21__py3-none-any.whl → 0.0.24__py3-none-any.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.
- AMS_BP/__init__.py +1 -1
- AMS_BP/configio/configmodels.py +0 -4
- AMS_BP/configio/convertconfig.py +2 -1
- AMS_BP/metadata/metadata.py +2 -2
- AMS_BP/motion/condensate_movement.py +0 -45
- AMS_BP/optics/camera/detectors.py +1 -1
- AMS_BP/optics/lasers/laser_profiles.py +4 -1
- AMS_BP/optics/psf/psf_engine.py +86 -35
- AMS_BP/photophysics/state_kinetics.py +4 -1
- AMS_BP/run_cell_simulation.py +3 -3
- AMS_BP/sim_config.toml +2 -17
- AMS_BP/sim_microscopy.py +1 -1
- {ams_bp-0.0.21.dist-info → ams_bp-0.0.24.dist-info}/METADATA +3 -2
- {ams_bp-0.0.21.dist-info → ams_bp-0.0.24.dist-info}/RECORD +17 -17
- {ams_bp-0.0.21.dist-info → ams_bp-0.0.24.dist-info}/WHEEL +0 -0
- {ams_bp-0.0.21.dist-info → ams_bp-0.0.24.dist-info}/entry_points.txt +0 -0
- {ams_bp-0.0.21.dist-info → ams_bp-0.0.24.dist-info}/licenses/LICENSE +0 -0
AMS_BP/__init__.py
CHANGED
AMS_BP/configio/configmodels.py
CHANGED
@@ -21,9 +21,7 @@ class MoleculeParameters(BaseModel):
|
|
21
21
|
diffusion_coefficient: List[List[float]] = Field(
|
22
22
|
description="Diffusion coefficients in um^2/s"
|
23
23
|
)
|
24
|
-
diffusion_track_amount: List[List[float]]
|
25
24
|
hurst_exponent: List[List[float]]
|
26
|
-
hurst_track_amount: List[List[float]]
|
27
25
|
allow_transition_probability: List[bool]
|
28
26
|
transition_matrix_time_step: List[int] = Field(description="Time step in ms")
|
29
27
|
diffusion_transition_matrix: List[List[List[float]]]
|
@@ -33,9 +31,7 @@ class MoleculeParameters(BaseModel):
|
|
33
31
|
|
34
32
|
@field_validator(
|
35
33
|
"diffusion_coefficient",
|
36
|
-
"diffusion_track_amount",
|
37
34
|
"hurst_exponent",
|
38
|
-
"hurst_track_amount",
|
39
35
|
"state_probability_diffusion",
|
40
36
|
"state_probability_hurst",
|
41
37
|
)
|
AMS_BP/configio/convertconfig.py
CHANGED
@@ -324,11 +324,12 @@ class ConfigLoader:
|
|
324
324
|
):
|
325
325
|
# Create PSFParameters instance
|
326
326
|
parameters = PSFParameters(
|
327
|
-
|
327
|
+
emission_wavelength=wavelength,
|
328
328
|
numerical_aperture=float(params_config["numerical_aperture"]),
|
329
329
|
pixel_size=pixel_size,
|
330
330
|
z_step=float(params_config["z_step"]) if z_step is None else z_step,
|
331
331
|
refractive_index=float(params_config.get("refractive_index", 1.0)),
|
332
|
+
pinhole_diameter=params_config.get("pinhole_diameter", None),
|
332
333
|
)
|
333
334
|
|
334
335
|
# Create PSF engine
|
AMS_BP/metadata/metadata.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
from typing import Iterator, List, Literal, Union
|
1
|
+
from typing import Dict, Iterator, List, Literal, Union
|
2
2
|
|
3
3
|
from pydantic import BaseModel
|
4
4
|
|
@@ -77,7 +77,7 @@ class MetaData(BaseModel):
|
|
77
77
|
PhysicalSizeXUnit: Literal["nm", "m"]
|
78
78
|
PhysicalSizeY: float
|
79
79
|
PhysicalSizeYUnit: Literal["nm", "m"]
|
80
|
-
|
80
|
+
Channel: Dict[Literal["Name"], List[str]]
|
81
81
|
|
82
82
|
def __post_init__(self):
|
83
83
|
if isinstance(self.notes, (list, str)):
|
@@ -20,7 +20,6 @@ Usage:
|
|
20
20
|
condensate(times, time_unit) -> dict{"Position":np.ndarray, "Scale":float}
|
21
21
|
"""
|
22
22
|
|
23
|
-
import matplotlib.pyplot as plt
|
24
23
|
import numpy as np
|
25
24
|
|
26
25
|
from ..cells.rectangular_cell import RectangularCell
|
@@ -310,47 +309,3 @@ class Condensate:
|
|
310
309
|
# make array of length time with the last scale
|
311
310
|
scale = np.full(time.shape, last_scale)
|
312
311
|
return scale
|
313
|
-
|
314
|
-
def plot_condensate(self, ax, **kwargs):
|
315
|
-
"""
|
316
|
-
Plots the condensate
|
317
|
-
|
318
|
-
Parameters:
|
319
|
-
-----------
|
320
|
-
ax: plt.Axes
|
321
|
-
Axes to plot the condensate on.
|
322
|
-
**kwargs:
|
323
|
-
Keyword arguments to pass to the plot function.
|
324
|
-
"""
|
325
|
-
# check if the _condensate_positions exists
|
326
|
-
if not hasattr(self, "_condensate_positions"):
|
327
|
-
# if it doesn't then we need to generate the condensate positions
|
328
|
-
self.times = np.array([self.initial_time])
|
329
|
-
self.condensate_positions = np.array([self.initial_position])
|
330
|
-
self.scale = np.array([self.initial_scale])
|
331
|
-
|
332
|
-
# plot the condensate positions
|
333
|
-
ax.plot(
|
334
|
-
self.condensate_positions[:, 0], self.condensate_positions[:, 1], **kwargs
|
335
|
-
)
|
336
|
-
|
337
|
-
# plot a circle at all the positions with the scale as the radius
|
338
|
-
for i in range(len(self.condensate_positions)):
|
339
|
-
ax.add_patch(
|
340
|
-
plt.Circle(
|
341
|
-
self.condensate_positions[i], self.scale[i], color="r", fill=False
|
342
|
-
)
|
343
|
-
)
|
344
|
-
|
345
|
-
# plot the initial position in a different colour
|
346
|
-
ax.scatter(self.initial_position[0], self.initial_position[1], color="g")
|
347
|
-
# plot the final position in a different colour
|
348
|
-
ax.scatter(
|
349
|
-
self.condensate_positions[-1][0],
|
350
|
-
self.condensate_positions[-1][1],
|
351
|
-
color="b",
|
352
|
-
)
|
353
|
-
if "save_path" in kwargs:
|
354
|
-
plt.savefig(kwargs["save_path"])
|
355
|
-
# plt.show()
|
356
|
-
return ax
|
@@ -305,7 +305,7 @@ def create_binning_function(input_shape, binning_size, mode="sum"):
|
|
305
305
|
numpy.ndarray
|
306
306
|
Binned array
|
307
307
|
"""
|
308
|
-
if array.shape != input_shape:
|
308
|
+
if array.shape != tuple(input_shape):
|
309
309
|
raise ValueError(
|
310
310
|
f"Input array shape {array.shape} does not match expected shape {input_shape}"
|
311
311
|
)
|
@@ -96,7 +96,10 @@ class LaserParameters:
|
|
96
96
|
Power in watts
|
97
97
|
"""
|
98
98
|
if callable(self.power):
|
99
|
-
|
99
|
+
power = self.power(t)
|
100
|
+
if power < 0:
|
101
|
+
raise ValueError("Laser Power Cannot be Negative")
|
102
|
+
return power
|
100
103
|
return self.power
|
101
104
|
|
102
105
|
def get_position(self, t: float) -> Tuple[float, float, float]:
|
AMS_BP/optics/psf/psf_engine.py
CHANGED
@@ -5,52 +5,61 @@ from typing import Literal, Optional, Tuple
|
|
5
5
|
import numpy as np
|
6
6
|
from numpy.typing import NDArray
|
7
7
|
|
8
|
+
AIRYFACTOR = 1.0
|
9
|
+
|
8
10
|
|
9
11
|
@dataclass(frozen=True)
|
10
12
|
class PSFParameters:
|
11
|
-
"""Parameters for PSF (Point Spread Function)
|
13
|
+
"""Parameters for emission PSF (Point Spread Function) at the detector.
|
14
|
+
|
15
|
+
|
16
|
+
This class defines parameters that determine how light from a point source
|
17
|
+
(e.g., a fluorescent molecule) diffracts through the collection optics
|
18
|
+
to form a pattern at the detector.
|
12
19
|
|
13
20
|
Attributes:
|
14
|
-
|
15
|
-
numerical_aperture: Numerical aperture of the
|
16
|
-
pixel_size: Size of pixels in micrometers
|
21
|
+
emission_wavelength: Emission wavelength in nanometers
|
22
|
+
numerical_aperture: Numerical aperture of the collection objective
|
23
|
+
pixel_size: Size of pixels in micrometers at the detector
|
17
24
|
z_step: Axial step size in micrometers
|
18
25
|
refractive_index: Refractive index of the medium (default: 1.0 for air)
|
26
|
+
pinhole_diameter: Diameter of the pinhole in micrometers (default: None for widefield)
|
27
|
+
The pinhole spatially filters the emitted light before it reaches
|
28
|
+
the detector.
|
19
29
|
"""
|
20
30
|
|
21
|
-
|
31
|
+
emission_wavelength: float
|
22
32
|
numerical_aperture: float
|
23
33
|
pixel_size: float
|
24
34
|
z_step: float
|
25
35
|
refractive_index: float = 1.0
|
26
|
-
|
27
|
-
# def __post_init__(self) -> None:
|
28
|
-
# """Validate parameters after initialization."""
|
29
|
-
# if any(
|
30
|
-
# param <= 0
|
31
|
-
# for param in (
|
32
|
-
# self.wavelength,
|
33
|
-
# self.numerical_aperture,
|
34
|
-
# self.pixel_size,
|
35
|
-
# self.z_step,
|
36
|
-
# self.refractive_index,
|
37
|
-
# )
|
38
|
-
# ):
|
39
|
-
# raise ValueError("All parameters must be positive numbers")
|
40
|
-
# if self.numerical_aperture >= self.refractive_index:
|
41
|
-
# raise ValueError("Numerical aperture must be less than refractive index")
|
36
|
+
pinhole_diameter: Optional[float] = None # um
|
42
37
|
|
43
38
|
@cached_property
|
44
39
|
def wavelength_um(self) -> float:
|
45
|
-
"""
|
46
|
-
return self.
|
40
|
+
"""Emission wavelength in micrometers."""
|
41
|
+
return self.emission_wavelength / 1000.0
|
42
|
+
|
43
|
+
@cached_property
|
44
|
+
def pinhole_radius(self) -> Optional[float]:
|
45
|
+
"""Pinhole radius in micrometers."""
|
46
|
+
return (
|
47
|
+
self.pinhole_diameter / 2.0 if self.pinhole_diameter is not None else None
|
48
|
+
)
|
47
49
|
|
48
50
|
|
49
51
|
class PSFEngine:
|
50
|
-
"""Engine for
|
52
|
+
"""Engine for calculating emission light PSF at the detector.
|
53
|
+
|
54
|
+
This class calculates how light from a point source (like a fluorescent molecule)
|
55
|
+
spreads due to diffraction through the collection optics to form a pattern at
|
56
|
+
the detector. For confocal systems, it can include the effect of a pinhole
|
57
|
+
that spatially filters the light before detection.
|
51
58
|
|
52
|
-
This
|
53
|
-
|
59
|
+
Note: This PSF describes only the diffraction of emitted light through the
|
60
|
+
collection optics. While a confocal microscope uses focused illumination to
|
61
|
+
excite molecules, that illumination pattern does not affect how the emitted
|
62
|
+
light diffracts to form the PSF we calculate here.
|
54
63
|
"""
|
55
64
|
|
56
65
|
def __init__(self, params: PSFParameters):
|
@@ -79,34 +88,76 @@ class PSFEngine:
|
|
79
88
|
self._norm_sigma_xy = self._sigma_xy / 2.355
|
80
89
|
self._norm_sigma_z = self._sigma_z / 2.355
|
81
90
|
|
91
|
+
# Generate pinhole mask if specified
|
92
|
+
if self.params.pinhole_radius is not None:
|
93
|
+
if self.params.pinhole_radius < AIRYFACTOR * self._sigma_xy:
|
94
|
+
raise ValueError(
|
95
|
+
f"Pinhole size ({self.params.pinhole_radius} um) is smaller than {AIRYFACTOR} times the Airy lobe. This will diffract the emission light in the pinhole; an ideal pinhole size for this setup is {self._sigma_xy} um."
|
96
|
+
)
|
97
|
+
self._pinhole_mask = self._generate_pinhole_mask()
|
98
|
+
else:
|
99
|
+
self._pinhole_mask = None
|
100
|
+
|
101
|
+
def _generate_pinhole_mask(self) -> NDArray[np.float64]:
|
102
|
+
"""Generate a binary mask representing the pinhole's spatial filtering.
|
103
|
+
The pinhole is centered on the grid, blocking emission light based on position
|
104
|
+
in the image plane, affecting what portion of the diffracted light reaches
|
105
|
+
the detector.
|
106
|
+
"""
|
107
|
+
x, y = self._grid_xy
|
108
|
+
|
109
|
+
# Calculate the grid center
|
110
|
+
x_center = (x.max() + x.min()) / 2
|
111
|
+
y_center = (y.max() + y.min()) / 2
|
112
|
+
|
113
|
+
# Calculate radial distance from grid center
|
114
|
+
r = np.sqrt((x - x_center) ** 2 + (y - y_center) ** 2)
|
115
|
+
|
116
|
+
return (r <= self.params.pinhole_radius).astype(np.float64)
|
117
|
+
|
82
118
|
@lru_cache(maxsize=128)
|
83
119
|
def psf_z(self, z_val: float) -> NDArray[np.float64]:
|
84
|
-
"""
|
120
|
+
"""Calculate the PSF at the detector for a point source at z_val.
|
121
|
+
|
122
|
+
This represents how light from a point source at position z_val
|
123
|
+
diffracts through the collection optics to form a pattern at the
|
124
|
+
detector. If a pinhole is present, it spatially filters this pattern.
|
85
125
|
|
86
126
|
Args:
|
87
|
-
z_val: Z-position in micrometers
|
127
|
+
z_val: Z-position of the point source in micrometers
|
88
128
|
|
89
129
|
Returns:
|
90
|
-
2D array containing the
|
130
|
+
2D array containing the light intensity pattern at the detector
|
91
131
|
"""
|
92
132
|
x, y = self._grid_xy
|
93
133
|
|
94
|
-
#
|
134
|
+
# Calculate how light from the point source diffracts through collection optics
|
95
135
|
r_squared = (x / self._norm_sigma_xy) ** 2 + (y / self._norm_sigma_xy) ** 2
|
96
136
|
z_term = (z_val / self._norm_sigma_z) ** 2
|
97
|
-
|
137
|
+
psf_at_detector = np.exp(-0.5 * (r_squared + z_term))
|
138
|
+
|
139
|
+
if self._pinhole_mask is not None:
|
140
|
+
# Apply pinhole's spatial filtering
|
141
|
+
return psf_at_detector * self._pinhole_mask
|
142
|
+
|
143
|
+
return psf_at_detector
|
98
144
|
|
99
145
|
@lru_cache(maxsize=128)
|
100
146
|
def psf_z_xy0(self, z_val: float) -> float:
|
101
|
-
"""
|
147
|
+
"""Calculate the PSF intensity at the center of the detector.
|
148
|
+
|
149
|
+
For a point source at z_val, this gives the intensity of light
|
150
|
+
that reaches the detector center (x=y=0). This point is always
|
151
|
+
within the pinhole if one is present.
|
102
152
|
|
103
153
|
Args:
|
104
|
-
z_val: Z-position in micrometers
|
154
|
+
z_val: Z-position of the point source in micrometers
|
105
155
|
|
106
156
|
Returns:
|
107
|
-
|
157
|
+
Light intensity at detector center
|
108
158
|
"""
|
109
|
-
|
159
|
+
z_term = (z_val / self._norm_sigma_z) ** 2
|
160
|
+
return np.exp(-0.5 * z_term)
|
110
161
|
|
111
162
|
@cache
|
112
163
|
def _3d_normalization_A(
|
@@ -27,6 +27,7 @@ class StateTransitionCalculator:
|
|
27
27
|
self.current_global_time = current_global_time # ms (oversample motion time)
|
28
28
|
self.laser_intensity_generator = laser_intensity_generator
|
29
29
|
self.fluorescent_state_history = {} # {fluorescent.state.name : [delta time (seconds), laser_intensites], ...}
|
30
|
+
self.current_global_time_s = self.current_global_time * 1e-3
|
30
31
|
|
31
32
|
def __call__(
|
32
33
|
self,
|
@@ -48,7 +49,9 @@ class StateTransitionCalculator:
|
|
48
49
|
time = 0
|
49
50
|
transitions = self.flurophoreobj.state_history[self.current_global_time][2]
|
50
51
|
final_state_name = transitions[0].from_state
|
51
|
-
laser_intensities = self._initialize_state_hist(
|
52
|
+
laser_intensities = self._initialize_state_hist(
|
53
|
+
self.current_global_time, time + self.current_global_time_s
|
54
|
+
)
|
52
55
|
|
53
56
|
while time < self.time_duration:
|
54
57
|
stateTransitionMatrixR = [
|
AMS_BP/run_cell_simulation.py
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
"""
|
2
2
|
run_cell_simulation.py
|
3
3
|
|
4
|
-
This file contains the command-line interface (CLI) for the
|
4
|
+
This file contains the command-line interface (CLI) for the AMS_BP package.
|
5
5
|
|
6
6
|
The CLI is built using Typer and provides two main commands:
|
7
7
|
1. 'config': Generates a sample configuration file.
|
8
8
|
2. 'runsim': Runs the cell simulation using a provided configuration file.
|
9
9
|
|
10
10
|
Main Components:
|
11
|
-
-
|
11
|
+
- typer_app_asms_bp: The main Typer application object.
|
12
12
|
- cell_simulation(): Callback function that displays the version information.
|
13
13
|
- generate_config(): Command to generate a sample configuration file.
|
14
14
|
- run_cell_simulation(): Command to run the cell simulation using a configuration file.
|
@@ -37,7 +37,7 @@ from .configio.saving import save_config_frames
|
|
37
37
|
|
38
38
|
cli_help_doc = str(
|
39
39
|
"""
|
40
|
-
CLI tool to run [underline]A[/underline]dvanced [underline]M[/underline]olecule [underline]S[/underline]imulation: [underline]
|
40
|
+
CLI tool to run [underline]A[/underline]dvanced [underline]M[/underline]olecule [underline]S[/underline]imulation: [underline]AMS[/underline]-BP. GitHub: [green]https://github.com/joemans3/AMS_BP[/green].
|
41
41
|
[Version: [bold]{0}[/bold]]
|
42
42
|
""".format(__version__)
|
43
43
|
)
|
AMS_BP/sim_config.toml
CHANGED
@@ -23,18 +23,8 @@ diffusion_coefficient = [
|
|
23
23
|
0.0,
|
24
24
|
],
|
25
25
|
] # um^2/s, size of each index (eg. len(...[0]) is the # of diffusion coefficients the system can explore.
|
26
|
-
|
27
|
-
[
|
28
|
-
0.5,
|
29
|
-
0.5,
|
30
|
-
],
|
31
|
-
[
|
32
|
-
0.5,
|
33
|
-
0.5,
|
34
|
-
],
|
35
|
-
] # only usefull for initial distribution of diffusion coefficients to trajectories.
|
26
|
+
|
36
27
|
hurst_exponent = [[0.5], [0.5]]
|
37
|
-
hurst_track_amount = [[1.0], [1.0]]
|
38
28
|
allow_transition_probability = [true, true] # bool
|
39
29
|
transition_matrix_time_step = [
|
40
30
|
20,
|
@@ -193,12 +183,6 @@ to_state = "triplet"
|
|
193
183
|
photon_dependent = false
|
194
184
|
base_rate = 1 # 1/s
|
195
185
|
|
196
|
-
[fluorophores.PAmCherry.transitions.triplet_to_bleached]
|
197
|
-
from_state = "triplet"
|
198
|
-
to_state = "bleached"
|
199
|
-
photon_dependent = false
|
200
|
-
base_rate = 1 # 1/s
|
201
|
-
|
202
186
|
[fluorophores.PAmCherry.transitions.triplet_to_dark]
|
203
187
|
from_state = "triplet"
|
204
188
|
to_state = "dark"
|
@@ -275,6 +259,7 @@ custom_path = ""
|
|
275
259
|
[psf.parameters]
|
276
260
|
numerical_aperture = 1.4 # typical range: 0.1 - 1.5
|
277
261
|
refractive_index = 1.0 # default is air (1.0)
|
262
|
+
#pinhole_diameter = 1.0 # Do not include for no pinhole else float in um units
|
278
263
|
|
279
264
|
# Multiple Laser Configuration File
|
280
265
|
|
AMS_BP/sim_microscopy.py
CHANGED
@@ -276,7 +276,7 @@ class VirtualMicroscope:
|
|
276
276
|
PhysicalSizeXUnit="m",
|
277
277
|
PhysicalSizeY=self.camera.pixel_size * 1e-6,
|
278
278
|
PhysicalSizeYUnit="m",
|
279
|
-
|
279
|
+
Channel={"Name": self.channels.names},
|
280
280
|
)
|
281
281
|
|
282
282
|
# return frames in the format ZCTYX
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: AMS_BP
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.24
|
4
4
|
Summary: Advanced Microscopy Simulations developed for the Weber Lab by Baljyot Singh Parmar
|
5
5
|
Project-URL: Documentation, https://joemans3.github.io/AMS_BP/
|
6
6
|
Project-URL: Source code, https://github.com/joemans3/AMS_BP
|
@@ -10,7 +10,6 @@ License-File: LICENSE
|
|
10
10
|
Keywords: SMS
|
11
11
|
Requires-Python: >=3.10
|
12
12
|
Requires-Dist: jsonschema>=4.23.0
|
13
|
-
Requires-Dist: matplotlib>=3.6.0
|
14
13
|
Requires-Dist: numpy>=1.21.2
|
15
14
|
Requires-Dist: pydantic>=2.9.2
|
16
15
|
Requires-Dist: scikit-image>=0.18.3
|
@@ -172,3 +171,5 @@ frames, metadata = function_exp(microscope=microscope, config=config_exp)
|
|
172
171
|
from AMS_BP.configio.saving import save_config_frames
|
173
172
|
save_config_frames(metadata, frames, setup_config["base_config"].OutputParameters)
|
174
173
|
```
|
174
|
+
|
175
|
+
> A more detailed example is provided in the jupyter notebook in the examples. For starters refer to the [VisualizingIndividualModules](examples/VisualizingIndividualModules/modules_explained.ipynb)
|
@@ -1,40 +1,40 @@
|
|
1
|
-
AMS_BP/__init__.py,sha256=
|
2
|
-
AMS_BP/run_cell_simulation.py,sha256=
|
3
|
-
AMS_BP/sim_config.toml,sha256=
|
4
|
-
AMS_BP/sim_microscopy.py,sha256=
|
1
|
+
AMS_BP/__init__.py,sha256=_0wRoFCXiDI2esMHAgmC0k46izWDlMXa_aqJ_MoW48g,327
|
2
|
+
AMS_BP/run_cell_simulation.py,sha256=7InopFikjo0HfaLO2siXskBIbyCIte9avG4YXjjaWCI,7420
|
3
|
+
AMS_BP/sim_config.toml,sha256=3IqOQIJYmP5g4okk15nqQiNZb3ij7Pt63HbpI-5tySw,11672
|
4
|
+
AMS_BP/sim_microscopy.py,sha256=0UZfyT44nrB4JdfnFnRPTVBm3tPbCyOnPXiBBZs8xIc,18617
|
5
5
|
AMS_BP/cells/__init__.py,sha256=yWFScBC1uOGDkeC8i1m1ZBtIREcyt4JHxYa72LxbBZU,177
|
6
6
|
AMS_BP/cells/base_cell.py,sha256=FIPB9J8F40tb53vv7C6qG-SaAFLOI8-MGIk1mmZ-gnI,1503
|
7
7
|
AMS_BP/cells/rectangular_cell.py,sha256=5yGxvTXYvgldLXyWXpE_SD9Zx2NLerC-I2j02reHsJ0,2515
|
8
8
|
AMS_BP/cells/rod_cell.py,sha256=jQ1kLEk74Pv2rcXPRJ6-QJJhux-mYiDSytzqlxCNWfA,3181
|
9
9
|
AMS_BP/cells/spherical_cell.py,sha256=n3ou3tW0nCxXIwv6uLkVKHkYCfgoNn8VI6CVTLBIll0,2140
|
10
10
|
AMS_BP/configio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
|
-
AMS_BP/configio/configmodels.py,sha256=
|
12
|
-
AMS_BP/configio/convertconfig.py,sha256=
|
11
|
+
AMS_BP/configio/configmodels.py,sha256=Gd2Qdut0u5zS0IpjPwGIB3ur-b4Dfa9e8SbhotBKymc,2894
|
12
|
+
AMS_BP/configio/convertconfig.py,sha256=Fg9pOCZSxmWuHnrg-5xZRvhPEK6Qc1kXqu6LL9e9QYw,34741
|
13
13
|
AMS_BP/configio/experiments.py,sha256=HdfaSi0gPPJ_wLF87XcW5ICja19Uezx7-ygFEwNzi30,3995
|
14
14
|
AMS_BP/configio/saving.py,sha256=596QgAadV32rzsN4B2FngGFcBWCzCDnLFN-qtQsv3bM,857
|
15
15
|
AMS_BP/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
|
-
AMS_BP/metadata/metadata.py,sha256=
|
16
|
+
AMS_BP/metadata/metadata.py,sha256=YDumjc5sI3lY_UZx8f0ZhMqbG2qKQkysXwl7CY4ZtnY,2927
|
17
17
|
AMS_BP/motion/__init__.py,sha256=cy3W-wCRjjlN1DrTqYc-JltYwcE8SZCXMVPJ2o6q_BQ,178
|
18
|
-
AMS_BP/motion/condensate_movement.py,sha256=
|
18
|
+
AMS_BP/motion/condensate_movement.py,sha256=eig4WtD7o1cvIafWMjOk6pqxyhe_IIucgLcBEoDvasU,11648
|
19
19
|
AMS_BP/motion/track_gen.py,sha256=Z3QJLVMP1gX4SlgOXFxBg8sJhBG0Xq25ixnBoEHEAZI,19462
|
20
20
|
AMS_BP/motion/movement/__init__.py,sha256=PqovpG4dAuFFIP9M2_kt-6egQJX3P5ig4MMWVzNaswg,278
|
21
21
|
AMS_BP/motion/movement/boundary_conditions.py,sha256=jpfK3AEUY8btrTsu19bpUfx-jri7_HfyxqMFjMoxAVM,2200
|
22
22
|
AMS_BP/motion/movement/fbm_BP.py,sha256=dH-JZiAInnIaZXH1wAAo8dOIX9zafclqnZ4dOhKtnO0,9327
|
23
23
|
AMS_BP/optics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
24
|
AMS_BP/optics/camera/__init__.py,sha256=eCoDUFHcoCWgbgYdLn8EH7AULM53A3XWTXNZnV8QxeY,182
|
25
|
-
AMS_BP/optics/camera/detectors.py,sha256=
|
25
|
+
AMS_BP/optics/camera/detectors.py,sha256=_815Ovo7Aj375OZh5Xim8pFuZEEcSVtSdnLRYFqb3_8,10355
|
26
26
|
AMS_BP/optics/camera/quantum_eff.py,sha256=ZCvJ8dJESOUbjwblsJIBcCg_b-_DNdhDlkzd7HeGMDg,2378
|
27
27
|
AMS_BP/optics/filters/__init__.py,sha256=oYPk2_wuL4KrwbaZy3gktvO5biQUfdQLUColWhkU1lw,337
|
28
28
|
AMS_BP/optics/filters/filters.py,sha256=-iw7eqmDO77SEqlFTv5jJNVwpA8y93TLsjy5hhsAfiI,6406
|
29
29
|
AMS_BP/optics/filters/channels/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
30
|
AMS_BP/optics/filters/channels/channelschema.py,sha256=SConyA5yVdfnI_8sgcxVC8SV7S8tGUJYPPC6jn7lglU,906
|
31
31
|
AMS_BP/optics/lasers/__init__.py,sha256=T7dHohhyLf_pBw4TidarYHWmiwxVXGE71-Bf1aeBbuc,564
|
32
|
-
AMS_BP/optics/lasers/laser_profiles.py,sha256=
|
32
|
+
AMS_BP/optics/lasers/laser_profiles.py,sha256=dLnobLB-zZIG9EyMkU4E2P9CDl3n3OLzgR8Tx5EAd2c,22864
|
33
33
|
AMS_BP/optics/psf/__init__.py,sha256=ezrKPgpTeR4gTHOvF0mhF6u2zMMTd8Bgp8PGeOf11fA,121
|
34
|
-
AMS_BP/optics/psf/psf_engine.py,sha256=
|
34
|
+
AMS_BP/optics/psf/psf_engine.py,sha256=Do54D1jMbSrj5uljdTrrEttCvxq3qbVT74acRuOk15c,9434
|
35
35
|
AMS_BP/photophysics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
36
|
AMS_BP/photophysics/photon_physics.py,sha256=QRG_QIZ4csJ3g5qGP9Wtk7kzqm8_MUbVHfFef6cMtHQ,6671
|
37
|
-
AMS_BP/photophysics/state_kinetics.py,sha256=
|
37
|
+
AMS_BP/photophysics/state_kinetics.py,sha256=IdZtlHCLs--iSjLwDu2IQA617qXC4la8VpqosrM-vgQ,5401
|
38
38
|
AMS_BP/probabilityfuncs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
39
39
|
AMS_BP/probabilityfuncs/markov_chain.py,sha256=LV6KGr8Lv4NIvBPJqsR0CEynssa_mPH30qLaK85GObA,4339
|
40
40
|
AMS_BP/probabilityfuncs/probability_functions.py,sha256=j_rIxrupGBf_FKkQBh1TvEa34A44jAasaZQRg2u3FuY,11793
|
@@ -48,8 +48,8 @@ AMS_BP/utils/decorators.py,sha256=4qFdvzPJne0dhkhD1znPxRln1Rfr5NX8rdcCDcbATRU,62
|
|
48
48
|
AMS_BP/utils/errors.py,sha256=7BOd-L4_YeKmWn3Q4EOdTnNF3Bj_exDa3eg5X0yCZrc,759
|
49
49
|
AMS_BP/utils/maskMaker.py,sha256=2ca3n2nc8rFtUh1LurKXOJJsUmhrOpWbRnVX7fjRVvs,335
|
50
50
|
AMS_BP/utils/util_functions.py,sha256=jI6WBh09_khdABnEoVK7SK1WRvCLHuw40f5ALyflzlc,9478
|
51
|
-
ams_bp-0.0.
|
52
|
-
ams_bp-0.0.
|
53
|
-
ams_bp-0.0.
|
54
|
-
ams_bp-0.0.
|
55
|
-
ams_bp-0.0.
|
51
|
+
ams_bp-0.0.24.dist-info/METADATA,sha256=s8z9bcI32yK1EZINiomMaexx3UFZ1gGJZLDc7412oqk,5483
|
52
|
+
ams_bp-0.0.24.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
53
|
+
ams_bp-0.0.24.dist-info/entry_points.txt,sha256=MFUK9bZWW61djfsavqopMqiVPVn4lJtt6v8qzyEFyNM,76
|
54
|
+
ams_bp-0.0.24.dist-info/licenses/LICENSE,sha256=k_-JV1DQKvO0FR8WjvOisqdTl0kp6VJ7RFM3YZhao0c,1071
|
55
|
+
ams_bp-0.0.24.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|