AMS-BP 0.3.1__py3-none-any.whl → 0.4.0__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 +26 -12
- AMS_BP/configio/convertconfig.py +508 -632
- AMS_BP/gui/README.md +77 -0
- AMS_BP/gui/__init__.py +0 -0
- AMS_BP/gui/assets/__init__.py +0 -0
- AMS_BP/gui/assets/drawing.svg +107 -0
- AMS_BP/gui/configuration_window.py +333 -0
- AMS_BP/gui/help_docs/__init__.py +0 -0
- AMS_BP/gui/help_docs/cell_help.md +45 -0
- AMS_BP/gui/help_docs/channels_help.md +78 -0
- AMS_BP/gui/help_docs/condensate_help.md +59 -0
- AMS_BP/gui/help_docs/detector_help.md +57 -0
- AMS_BP/gui/help_docs/experiment_help.md +92 -0
- AMS_BP/gui/help_docs/fluorophore_help.md +128 -0
- AMS_BP/gui/help_docs/general_help.md +43 -0
- AMS_BP/gui/help_docs/global_help.md +47 -0
- AMS_BP/gui/help_docs/laser_help.md +76 -0
- AMS_BP/gui/help_docs/molecule_help.md +78 -0
- AMS_BP/gui/help_docs/output_help.md +5 -0
- AMS_BP/gui/help_docs/psf_help.md +51 -0
- AMS_BP/gui/help_window.py +26 -0
- AMS_BP/gui/logging_window.py +93 -0
- AMS_BP/gui/main.py +255 -0
- AMS_BP/gui/sim_worker.py +58 -0
- AMS_BP/gui/template_window_selection.py +100 -0
- AMS_BP/gui/widgets/__init__.py +0 -0
- AMS_BP/gui/widgets/camera_config_widget.py +213 -0
- AMS_BP/gui/widgets/cell_config_widget.py +225 -0
- AMS_BP/gui/widgets/channel_config_widget.py +307 -0
- AMS_BP/gui/widgets/condensate_config_widget.py +341 -0
- AMS_BP/gui/widgets/experiment_config_widget.py +259 -0
- AMS_BP/gui/widgets/flurophore_config_widget.py +513 -0
- AMS_BP/gui/widgets/general_config_widget.py +47 -0
- AMS_BP/gui/widgets/global_config_widget.py +142 -0
- AMS_BP/gui/widgets/laser_config_widget.py +255 -0
- AMS_BP/gui/widgets/molecule_config_widget.py +714 -0
- AMS_BP/gui/widgets/output_config_widget.py +61 -0
- AMS_BP/gui/widgets/psf_config_widget.py +128 -0
- AMS_BP/gui/widgets/utility_widgets/__init__.py +0 -0
- AMS_BP/gui/widgets/utility_widgets/scinotation_widget.py +21 -0
- AMS_BP/gui/widgets/utility_widgets/spectrum_widget.py +115 -0
- AMS_BP/logging/__init__.py +0 -0
- AMS_BP/logging/logutil.py +83 -0
- AMS_BP/logging/setup_run_directory.py +35 -0
- AMS_BP/{run_cell_simulation.py → main_cli.py} +27 -72
- AMS_BP/optics/filters/filters.py +2 -0
- AMS_BP/resources/template_configs/metadata_configs.json +20 -0
- AMS_BP/resources/template_configs/sim_config.toml +408 -0
- AMS_BP/resources/template_configs/twocolor_widefield_timeseries_live.toml +399 -0
- AMS_BP/resources/template_configs/twocolor_widefield_zstack_fixed.toml +406 -0
- AMS_BP/resources/template_configs/twocolor_widefield_zstack_live.toml +408 -0
- AMS_BP/run_sim_util.py +76 -0
- {ams_bp-0.3.1.dist-info → ams_bp-0.4.0.dist-info}/METADATA +46 -27
- ams_bp-0.4.0.dist-info/RECORD +103 -0
- ams_bp-0.4.0.dist-info/entry_points.txt +2 -0
- ams_bp-0.3.1.dist-info/RECORD +0 -55
- ams_bp-0.3.1.dist-info/entry_points.txt +0 -2
- {ams_bp-0.3.1.dist-info → ams_bp-0.4.0.dist-info}/WHEEL +0 -0
- {ams_bp-0.3.1.dist-info → ams_bp-0.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,78 @@
|
|
1
|
+
# Channels Configuration Help
|
2
|
+
|
3
|
+
This section allows you to define the optical channels used in the simulation, including filters for excitation and emission as well as split efficiencies.
|
4
|
+
|
5
|
+
## Fields
|
6
|
+
|
7
|
+
### `num_of_channels`
|
8
|
+
- **Type**: Integer
|
9
|
+
- **Description**: Number of optical channels. Each channel is assigned its own tab.
|
10
|
+
|
11
|
+
### `channel_names`
|
12
|
+
- **Type**: Array of Strings
|
13
|
+
- **Description**: Names of each channel (e.g., `"Channel 1"`, `"GFP"`, `"Cy5"`). Must be unique.
|
14
|
+
|
15
|
+
### `split_efficiency`
|
16
|
+
- **Type**: Array of Numbers
|
17
|
+
- **Range**: `0.0` – `1.0`
|
18
|
+
- **Description**: Efficiency of the beam splitter for each channel. Determines what fraction of signal is passed to the channel.
|
19
|
+
|
20
|
+
---
|
21
|
+
|
22
|
+
## Filter Set Configuration
|
23
|
+
|
24
|
+
Each channel defines a **filter set** with excitation and emission filters.
|
25
|
+
|
26
|
+
### `filter_set_name`
|
27
|
+
- **Type**: String
|
28
|
+
- **Description**: Descriptive name for the filter set.
|
29
|
+
|
30
|
+
### `filter_set_description`
|
31
|
+
- **Type**: String
|
32
|
+
- **Description**: Optional details about the purpose of the filter set.
|
33
|
+
|
34
|
+
---
|
35
|
+
|
36
|
+
## Excitation Filter
|
37
|
+
|
38
|
+
### `name`
|
39
|
+
- **Type**: String
|
40
|
+
- **Description**: Name of the excitation filter.
|
41
|
+
|
42
|
+
### `type`
|
43
|
+
- **Type**: String
|
44
|
+
- **Options**: `"bandpass"`, `"allow_all"`
|
45
|
+
- **Description**:
|
46
|
+
- `"bandpass"` filters light around a central wavelength.
|
47
|
+
- `"allow_all"` passes all wavelengths without filtering.
|
48
|
+
|
49
|
+
### `center_wavelength` *(only if type is `"bandpass"`)*
|
50
|
+
- **Type**: Integer
|
51
|
+
- **Unit**: Nanometers (nm)
|
52
|
+
- **Description**: Central wavelength of the bandpass filter.
|
53
|
+
|
54
|
+
### `bandwidth` *(only if type is `"bandpass"`)*
|
55
|
+
- **Type**: Integer
|
56
|
+
- **Unit**: Nanometers (nm)
|
57
|
+
- **Description**: Width of the bandpass range.
|
58
|
+
|
59
|
+
### `transmission_peak` *(only if type is `"bandpass"`)*
|
60
|
+
- **Type**: Float
|
61
|
+
- **Range**: `0.0` – `1.0`
|
62
|
+
- **Description**: Maximum transmission efficiency.
|
63
|
+
|
64
|
+
### `points`
|
65
|
+
- **Type**: Integer
|
66
|
+
- **Description**: Number of discrete sampling points in the filter curve.
|
67
|
+
|
68
|
+
---
|
69
|
+
|
70
|
+
## Emission Filter
|
71
|
+
|
72
|
+
Identical in structure to the Excitation filter.
|
73
|
+
|
74
|
+
### Notes:
|
75
|
+
- `"allow_all"` disables wavelength-specific fields.
|
76
|
+
- Bandpass filters should be configured carefully to avoid overlap between channels.
|
77
|
+
- Points determine how finely the spectrum is resolved during simulation.
|
78
|
+
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# Condensate Configuration Help
|
2
|
+
|
3
|
+
This section defines parameters for **condensate droplets** within the simulation. Each tab corresponds to a molecule type, and each type can have multiple condensates.
|
4
|
+
|
5
|
+
---
|
6
|
+
|
7
|
+
## Molecule Count
|
8
|
+
|
9
|
+
### `Number of Molecule Types`
|
10
|
+
- **Type**: Integer
|
11
|
+
- **Description**: The number of different molecule types in the simulation. Each will be assigned its own tab.
|
12
|
+
|
13
|
+
---
|
14
|
+
|
15
|
+
## Per-Molecule Condensate Parameters
|
16
|
+
|
17
|
+
### `Number of Condensates`
|
18
|
+
- **Type**: Integer
|
19
|
+
- **Description**: The number of condensates of this molecule type.
|
20
|
+
|
21
|
+
Each condensate defines the following:
|
22
|
+
|
23
|
+
### `Initial Center`
|
24
|
+
- **Type**: List of 3 Floats `[x, y, z]`
|
25
|
+
- **Unit**: Micrometers (µm)
|
26
|
+
- **Description**: The spatial center of the condensate in 3D.
|
27
|
+
|
28
|
+
### `Initial Scale`
|
29
|
+
- **Type**: Float
|
30
|
+
- **Unit**: Micrometers (µm)
|
31
|
+
- **Description**: The initial physical size (radius or diameter) of the condensate.
|
32
|
+
|
33
|
+
### `Diffusion Coefficient`
|
34
|
+
- **Type**: Float
|
35
|
+
- **Unit**: µm²/s
|
36
|
+
- **Description**: The diffusion coefficient for the condensate particles.
|
37
|
+
|
38
|
+
### `Hurst Exponent`
|
39
|
+
- **Type**: Float
|
40
|
+
- **Range**: `0.0` – `1.0`
|
41
|
+
- **Description**: Controls the memory of the random walk. `0.5` = standard Brownian motion. Values above or below indicate persistent or antipersistent motion.
|
42
|
+
|
43
|
+
---
|
44
|
+
|
45
|
+
## Density Difference
|
46
|
+
|
47
|
+
### `Density Difference`
|
48
|
+
- **Type**: Float
|
49
|
+
- **Description**: Represents the relative density difference between the condensate and its surrounding medium.
|
50
|
+
- **Location**: Set **per molecule type** (i.e., one value per tab).
|
51
|
+
|
52
|
+
---
|
53
|
+
|
54
|
+
### Notes
|
55
|
+
|
56
|
+
- All condensate values are grouped per molecule type.
|
57
|
+
- You may define different numbers of condensates for different molecule types.
|
58
|
+
- This module supports nested array generation for initialization within the simulation core.
|
59
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# Camera Configuration Help
|
2
|
+
|
3
|
+
This section configures the camera model used in the simulation. Each field controls aspects of detection, noise, resolution, and efficiency.
|
4
|
+
|
5
|
+
## Fields
|
6
|
+
|
7
|
+
### `type`
|
8
|
+
- **Type**: `String`
|
9
|
+
- **Options**: `"CMOS"`
|
10
|
+
- **Description**: Specifies the camera sensor model. Only CMOS is currently supported in the UI. Programmatically you also have access to EMCCD.
|
11
|
+
|
12
|
+
### `pixel_count`
|
13
|
+
- **Type**: `Array of Integers`
|
14
|
+
- **Shape**: `[width, height]`
|
15
|
+
- **Description**: Defines the resolution of the sensor in pixels. Affects image dimensions.
|
16
|
+
|
17
|
+
### `pixel_detector_size`
|
18
|
+
- **Type**: `Number`
|
19
|
+
- **Units**: `micrometers (μm)`
|
20
|
+
- **Description**: Physical size of a single pixel. Affects spatial resolution and magnification scaling.
|
21
|
+
|
22
|
+
### `magnification`
|
23
|
+
- **Type**: `Integer`
|
24
|
+
- **Description**: Optical magnification factor applied to the image.
|
25
|
+
|
26
|
+
### `dark_current`
|
27
|
+
- **Type**: `Number`
|
28
|
+
- **Units**: `electrons/pixel/second`
|
29
|
+
- **Description**: Rate at which thermal electrons accumulate in each pixel without illumination.
|
30
|
+
|
31
|
+
### `readout_noise`
|
32
|
+
- **Type**: `Number`
|
33
|
+
- **Units**: `electrons RMS`
|
34
|
+
- **Description**: Baseline electronic noise added during readout.
|
35
|
+
|
36
|
+
### `bit_depth`
|
37
|
+
- **Type**: `Integer`
|
38
|
+
- **Description**: Bit depth of the analog-to-digital converter. Controls the dynamic range of intensity.
|
39
|
+
|
40
|
+
### `sensitivity`
|
41
|
+
- **Type**: `Number`
|
42
|
+
- **Units**: `electrons/ADU`
|
43
|
+
- **Description**: Defines how many electrons are required to register one analog-digital unit (ADU) in the image.
|
44
|
+
|
45
|
+
### `base_adu`
|
46
|
+
- **Type**: `Integer`
|
47
|
+
- **Description**: The base offset in ADUs added to all pixel values.
|
48
|
+
|
49
|
+
### `binning_size`
|
50
|
+
- **Type**: `Integer`
|
51
|
+
- **Description**: Spatial binning size used to combine adjacent pixels. Common values are 1 (no binning), 2 (2x2 binning), etc.
|
52
|
+
|
53
|
+
### `quantum_efficiency`
|
54
|
+
- **Type**: `Array of [wavelength, efficiency] pairs`
|
55
|
+
- **Units**: `nm`, `[0-1]`
|
56
|
+
- **Description**: Describes the wavelength-dependent efficiency of the camera. Higher values mean more photons are converted to signal.
|
57
|
+
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# Experiment Configuration Help
|
2
|
+
|
3
|
+
This section defines the structure of the **experiment** to be simulated. It includes information about the type of acquisition, the z-plane positions, and the laser activation strategy.
|
4
|
+
|
5
|
+
---
|
6
|
+
|
7
|
+
## General Fields
|
8
|
+
|
9
|
+
### `name`
|
10
|
+
- **Type**: String
|
11
|
+
- **Description**: The name of the experiment. This will be used to label output files and for documentation purposes.
|
12
|
+
|
13
|
+
### `description`
|
14
|
+
- **Type**: String
|
15
|
+
- **Description**: A short description of the experiment setup or purpose.
|
16
|
+
|
17
|
+
---
|
18
|
+
|
19
|
+
## Experiment Type
|
20
|
+
|
21
|
+
### `experiment_type`
|
22
|
+
- **Type**: String
|
23
|
+
- **Enum**: `["time-series", "z-stack"]`
|
24
|
+
- **Description**: Determines the acquisition mode:
|
25
|
+
- `time-series`: Single z-plane acquired over time.
|
26
|
+
- `z-stack`: Multiple z-planes acquired in a single timepoint sweep.
|
27
|
+
|
28
|
+
---
|
29
|
+
|
30
|
+
## Z Positions
|
31
|
+
|
32
|
+
### `z_position`
|
33
|
+
- **Type**:
|
34
|
+
- Float for `time-series`
|
35
|
+
- List of Floats for `z-stack`
|
36
|
+
- **Unit**: Micrometers (µm)
|
37
|
+
- **Description**:
|
38
|
+
- In `time-series`, a single z-position is specified.
|
39
|
+
- In `z-stack`, multiple z-positions are given, each corresponding to a slice in the stack.
|
40
|
+
|
41
|
+
---
|
42
|
+
|
43
|
+
## Laser Activation
|
44
|
+
|
45
|
+
### `laser_names_active`
|
46
|
+
- **Type**: List of Strings
|
47
|
+
- **Description**: Names of the lasers to be activated during this experiment. These must match the names defined in the laser configuration section.
|
48
|
+
|
49
|
+
### `laser_powers_active`
|
50
|
+
- **Type**: List of Floats
|
51
|
+
- **Unit**: Watts
|
52
|
+
- **Description**: The power levels for each laser, in the same order as `laser_names_active`.
|
53
|
+
|
54
|
+
### `laser_positions_active`
|
55
|
+
- **Type**: List of Lists `[x, y, z]`
|
56
|
+
- **Unit**: Micrometers (µm)
|
57
|
+
- **Description**: The position of each active laser beam in space. Each laser has a position defined as `[x, y, z]`.
|
58
|
+
|
59
|
+
---
|
60
|
+
|
61
|
+
## XY Offset
|
62
|
+
|
63
|
+
### `xyoffset`
|
64
|
+
- **Type**: List `[x, y]`
|
65
|
+
- **Unit**: Micrometers (µm)
|
66
|
+
- **Description**: The lateral offset applied to the sample plane during acquisition.
|
67
|
+
|
68
|
+
---
|
69
|
+
|
70
|
+
## Time Parameters (only for `z-stack`)
|
71
|
+
|
72
|
+
### `exposure_time`
|
73
|
+
- **Type**: Integer
|
74
|
+
- **Unit**: Milliseconds (ms)
|
75
|
+
- **Description**: Exposure duration per z-slice.
|
76
|
+
|
77
|
+
### `interval_time`
|
78
|
+
- **Type**: Integer
|
79
|
+
- **Unit**: Milliseconds (ms)
|
80
|
+
- **Description**: Time between capturing consecutive z-slices.
|
81
|
+
|
82
|
+
> ⚠️ These time fields are only used for `z-stack` experiments.
|
83
|
+
> In `time-series` mode, time control should be handled globally under **Global Parameters**.
|
84
|
+
|
85
|
+
---
|
86
|
+
|
87
|
+
### Notes
|
88
|
+
|
89
|
+
- The number of `laser_names_active`, `laser_powers_active`, and `laser_positions_active` must match.
|
90
|
+
- Laser names must be defined in the Laser Configuration section.
|
91
|
+
- For `z-stack`, the total time per stack is `exposure_time × len(z_position) + interval_time × (len(z_position) - 1)`.
|
92
|
+
|
@@ -0,0 +1,128 @@
|
|
1
|
+
# Fluorophore Configuration Help
|
2
|
+
|
3
|
+
This section defines the **fluorophores** used in the simulation, including their photophysical states and transition dynamics.
|
4
|
+
|
5
|
+
Each fluorophore can contain one or more states, and transitions between them. States can be fluorescent, dark (non-emissive), or bleached (permanently off).
|
6
|
+
|
7
|
+
---
|
8
|
+
|
9
|
+
## Top-Level Fields
|
10
|
+
|
11
|
+
### `num_of_fluorophores`
|
12
|
+
- **Type**: Integer
|
13
|
+
- **Description**: Total number of distinct fluorophore types.
|
14
|
+
|
15
|
+
### `fluorophore_names`
|
16
|
+
- **Type**: List of Strings
|
17
|
+
- **Description**: Names identifying each fluorophore. These must be unique.
|
18
|
+
|
19
|
+
---
|
20
|
+
|
21
|
+
## Per-Fluorophore Fields
|
22
|
+
|
23
|
+
Each fluorophore has its own section named after its `name`.
|
24
|
+
|
25
|
+
### `name`
|
26
|
+
- **Type**: String
|
27
|
+
- **Description**: Redundant copy of the fluorophore name.
|
28
|
+
|
29
|
+
### `initial_state`
|
30
|
+
- **Type**: String
|
31
|
+
- **Description**: The state in which each fluorophore begins the simulation. Must match one of the defined state names.
|
32
|
+
|
33
|
+
---
|
34
|
+
|
35
|
+
## States Section
|
36
|
+
|
37
|
+
Each fluorophore contains a `states` section, defining its possible photophysical states.
|
38
|
+
|
39
|
+
### `states`
|
40
|
+
- **Type**: Dictionary
|
41
|
+
- **Key**: State name (e.g., `"on"`, `"off"`, `"bleached"`)
|
42
|
+
- **Value**: Dictionary with the following fields:
|
43
|
+
|
44
|
+
#### `name`
|
45
|
+
- **Type**: String
|
46
|
+
- **Description**: Name of the state.
|
47
|
+
|
48
|
+
#### `state_type`
|
49
|
+
- **Type**: Enum
|
50
|
+
- **Options**: `"fluorescent"`, `"dark"`, `"bleached"`
|
51
|
+
- **Description**: Type of the photophysical state.
|
52
|
+
|
53
|
+
#### If `state_type == "fluorescent"`, the following fields are required:
|
54
|
+
|
55
|
+
##### `quantum_yield`
|
56
|
+
- **Type**: Float
|
57
|
+
- **Range**: [0, 1]
|
58
|
+
- **Description**: Quantum yield of emission.
|
59
|
+
|
60
|
+
##### `extinction_coefficient`
|
61
|
+
- **Type**: Float
|
62
|
+
- **Unit**: M⁻¹·cm⁻¹
|
63
|
+
- **Description**: Molar extinction coefficient for light absorption.
|
64
|
+
|
65
|
+
##### `fluorescent_lifetime`
|
66
|
+
- **Type**: Float
|
67
|
+
- **Unit**: Seconds
|
68
|
+
- **Description**: Mean lifetime of the fluorophore before emitting a photon.
|
69
|
+
|
70
|
+
##### `excitation_spectrum`
|
71
|
+
- **Type**: Dictionary
|
72
|
+
- **Fields**:
|
73
|
+
- `wavelengths`: List of Floats (nm)
|
74
|
+
- `intensities`: List of Floats (normalized to [0, 1])
|
75
|
+
- **Description**: Defines the excitation efficiency across the spectrum.
|
76
|
+
|
77
|
+
##### `emission_spectrum`
|
78
|
+
- **Type**: Dictionary
|
79
|
+
- **Fields**:
|
80
|
+
- `wavelengths`: List of Floats (nm)
|
81
|
+
- `intensities`: List of Floats (normalized to [0, 1])
|
82
|
+
- **Description**: Defines the emission intensity across the spectrum.
|
83
|
+
|
84
|
+
---
|
85
|
+
|
86
|
+
## Transitions Section
|
87
|
+
|
88
|
+
Each fluorophore can also define transitions between states.
|
89
|
+
|
90
|
+
### `transitions`
|
91
|
+
- **Type**: Dictionary
|
92
|
+
- **Key**: Transition label (e.g., `"on_to_off"`)
|
93
|
+
- **Value**: Dictionary with:
|
94
|
+
|
95
|
+
#### `from_state`, `to_state`
|
96
|
+
- **Type**: Strings
|
97
|
+
- **Description**: Names of the source and target states.
|
98
|
+
|
99
|
+
#### `photon_dependent`
|
100
|
+
- **Type**: Boolean
|
101
|
+
- **Description**: Whether this transition depends on light absorption.
|
102
|
+
|
103
|
+
#### If `photon_dependent == False`:
|
104
|
+
|
105
|
+
##### `base_rate`
|
106
|
+
- **Type**: Float
|
107
|
+
- **Unit**: s⁻¹
|
108
|
+
- **Description**: Constant rate of transition (Poisson process).
|
109
|
+
|
110
|
+
#### If `photon_dependent == True`:
|
111
|
+
|
112
|
+
##### `spectrum`
|
113
|
+
- **Type**: Dictionary
|
114
|
+
- **Fields**:
|
115
|
+
- `wavelengths`: List of Floats (nm)
|
116
|
+
- `intensities`: List of Floats (normalized)
|
117
|
+
- `quantum_yield`: Float [0, 1]
|
118
|
+
- `extinction_coefficient`: Float (M⁻¹·cm⁻¹)
|
119
|
+
- **Description**: Defines the absorption characteristics that trigger the transition.
|
120
|
+
|
121
|
+
---
|
122
|
+
|
123
|
+
## Notes
|
124
|
+
|
125
|
+
- State and transition names must be unique within a fluorophore.
|
126
|
+
- Spectral data should cover the same wavelength range for excitation and emission (typically 300–800 nm).
|
127
|
+
- Transitions allow for modeling of photoswitching, blinking, and photobleaching.
|
128
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# General Configuration Help
|
2
|
+
|
3
|
+
This section defines the global settings that apply to **all units and measurements** throughout the simulation.
|
4
|
+
|
5
|
+
These values are typically fixed and should not be changed unless the simulation framework explicitly supports it.
|
6
|
+
|
7
|
+
---
|
8
|
+
|
9
|
+
## Fields
|
10
|
+
|
11
|
+
### `version`
|
12
|
+
- **Type**: String
|
13
|
+
- **Format**: `X.Y` (e.g., `0.1`, `1.0`)
|
14
|
+
- **Description**: Version of the configuration schema being used. Ensures compatibility between your configuration file and the simulation engine.
|
15
|
+
|
16
|
+
---
|
17
|
+
|
18
|
+
### `length_unit`
|
19
|
+
- **Type**: String
|
20
|
+
- **Allowed Values**: `"um"` (micrometers)
|
21
|
+
- **Description**: The base unit of length for the simulation. All spatial dimensions (e.g., cell size, laser beam width, positions) are expressed in micrometers.
|
22
|
+
|
23
|
+
---
|
24
|
+
|
25
|
+
### `time_unit`
|
26
|
+
- **Type**: String
|
27
|
+
- **Allowed Values**: `"ms"` (milliseconds)
|
28
|
+
- **Description**: The unit of time for all time-related parameters like exposure, interval, and simulation durations.
|
29
|
+
|
30
|
+
---
|
31
|
+
|
32
|
+
### `diffusion_unit`
|
33
|
+
- **Type**: String
|
34
|
+
- **Allowed Values**: `"um^2/s"`
|
35
|
+
- **Description**: The unit for diffusion coefficients. All diffusion values are given in square micrometers per second.
|
36
|
+
|
37
|
+
---
|
38
|
+
|
39
|
+
## Notes
|
40
|
+
|
41
|
+
- These units are **not editable** in most configurations and are standardized to simplify parameter consistency.
|
42
|
+
- All widgets and backend systems interpret numeric values based on these settings.
|
43
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# Global Parameters Help
|
2
|
+
|
3
|
+
This section defines the overarching timing and physical layout parameters of the simulation environment. These values affect **all molecules and the simulation timeline**.
|
4
|
+
|
5
|
+
---
|
6
|
+
|
7
|
+
## Fields
|
8
|
+
|
9
|
+
### `sample_plane_dim`
|
10
|
+
- **Type**: Array of Numbers `[width, height]`
|
11
|
+
- **Units**: Micrometers (`μm`)
|
12
|
+
- **Description**: Specifies the width and height of the simulation's imaging plane. This defines the observable region for molecule motion and fluorescence.
|
13
|
+
|
14
|
+
---
|
15
|
+
|
16
|
+
### `cycle_count`
|
17
|
+
- **Type**: Integer
|
18
|
+
- **Description**: The number of complete exposure–interval cycles to simulate. For example, a cycle count of 5 with 100ms exposure and 50ms interval simulates a total of 750ms.
|
19
|
+
|
20
|
+
---
|
21
|
+
|
22
|
+
### `exposure_time`
|
23
|
+
- **Type**: Integer
|
24
|
+
- **Units**: Milliseconds (`ms`)
|
25
|
+
- **Description**: Duration for which the camera exposes per frame. Affects motion blur and signal strength.
|
26
|
+
|
27
|
+
---
|
28
|
+
|
29
|
+
### `interval_time`
|
30
|
+
- **Type**: Integer
|
31
|
+
- **Units**: Milliseconds (`ms`)
|
32
|
+
- **Description**: Time between exposures. Combined with exposure time, it defines the total frame interval.
|
33
|
+
|
34
|
+
---
|
35
|
+
|
36
|
+
### `oversample_motion_time`
|
37
|
+
- **Type**: Integer
|
38
|
+
- **Units**: Milliseconds (`ms`)
|
39
|
+
- **Description**: The time resolution used for simulating motion in a sub-frame manner. Useful for accurate motion blur or faster dynamics within a single exposure.
|
40
|
+
|
41
|
+
---
|
42
|
+
|
43
|
+
## Notes
|
44
|
+
|
45
|
+
- Exposure and interval times together define the temporal resolution of the simulation.
|
46
|
+
- Oversample motion time enables fine-grained molecule dynamics between frames.
|
47
|
+
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# Laser Configuration Help
|
2
|
+
|
3
|
+
This section allows you to define the properties of each laser used in the simulation. Each laser must have a unique name and type, and may include physical and optical characteristics that influence excitation and activation.
|
4
|
+
|
5
|
+
---
|
6
|
+
|
7
|
+
## General Fields
|
8
|
+
|
9
|
+
### `active`
|
10
|
+
- **Type**: Array of Strings
|
11
|
+
- **Description**: The list of lasers that are active during the experiment. These names must match the defined laser entries.
|
12
|
+
|
13
|
+
---
|
14
|
+
|
15
|
+
## Laser-Specific Parameters
|
16
|
+
|
17
|
+
Each laser has a dedicated section and includes the following fields:
|
18
|
+
|
19
|
+
### `name`
|
20
|
+
- **Type**: String
|
21
|
+
- **Description**: Unique identifier for the laser. This name is used to associate laser settings with experiment configurations.
|
22
|
+
|
23
|
+
---
|
24
|
+
|
25
|
+
### `type`
|
26
|
+
- **Type**: Enum [`widefield`, `gaussian`, `hilo`]
|
27
|
+
- **Description**:
|
28
|
+
- `widefield`: Uniform illumination across the entire plane.
|
29
|
+
- `gaussian`: Focused beam with Gaussian profile.
|
30
|
+
- `hilo`: Highly inclined and laminated optical sheet—oblique angle illumination for reduced background.
|
31
|
+
|
32
|
+
---
|
33
|
+
|
34
|
+
### `preset`
|
35
|
+
- **Type**: String
|
36
|
+
- **Description**: An optional label to describe this laser's use case (e.g., `"default 488nm"`). Does not affect simulation directly.
|
37
|
+
|
38
|
+
---
|
39
|
+
|
40
|
+
### `parameters`
|
41
|
+
|
42
|
+
#### `power`
|
43
|
+
- **Type**: Float
|
44
|
+
- **Units**: Watts (W)
|
45
|
+
- **Description**: The power of the laser beam. Impacts excitation intensity and photophysics.
|
46
|
+
|
47
|
+
#### `wavelength`
|
48
|
+
- **Type**: Integer
|
49
|
+
- **Units**: Nanometers (nm)
|
50
|
+
- **Description**: The wavelength of emitted light from the laser. Should match fluorophore excitation peaks.
|
51
|
+
|
52
|
+
#### `beam_width`
|
53
|
+
- **Type**: Float
|
54
|
+
- **Units**: Micrometers (`μm`)
|
55
|
+
- **Description**: The width of the laser beam in the focal plane. Relevant for spatial precision.
|
56
|
+
|
57
|
+
#### `numerical_aperture`
|
58
|
+
- **Type**: Float
|
59
|
+
- **Description**: The NA of the illumination optics. Impacts the cone angle and axial resolution.
|
60
|
+
|
61
|
+
#### `refractive_index`
|
62
|
+
- **Type**: Float
|
63
|
+
- **Description**: The refractive index of the medium the laser is passing through (usually water or oil immersion).
|
64
|
+
|
65
|
+
#### `inclination_angle`
|
66
|
+
- **Type**: Float (only for `hilo`)
|
67
|
+
- **Units**: Degrees
|
68
|
+
- **Description**: The angle of incidence for HiLo illumination.
|
69
|
+
|
70
|
+
---
|
71
|
+
|
72
|
+
## Notes
|
73
|
+
|
74
|
+
- **Confocal Mode**: If confocal mode is enabled via PSF settings, all lasers are automatically forced to use Gaussian beams.
|
75
|
+
- The `inclination_angle` is only enabled when `type` is set to `"hilo"`.
|
76
|
+
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# Molecule Configuration Help
|
2
|
+
|
3
|
+
This section allows you to define the behavior and motion characteristics of each molecular species in the simulation. Each molecule type can follow different track models and include multiple diffusive or subdiffusive states.
|
4
|
+
|
5
|
+
---
|
6
|
+
|
7
|
+
## `num_molecules`
|
8
|
+
- **Type**: Array of Integers
|
9
|
+
- **Description**: The number of molecules for each defined type. The number of entries in this array defines the number of molecule types in the simulation.
|
10
|
+
|
11
|
+
---
|
12
|
+
|
13
|
+
## `track_type`
|
14
|
+
- **Type**: Array of Strings
|
15
|
+
- **Enum**: `["constant", "fbm"]`
|
16
|
+
- **Description**:
|
17
|
+
- `constant`: Molecules exhibit fixed diffusion.
|
18
|
+
- `fbm` (Fractional Brownian Motion): Molecules follow anomalous diffusion governed by a Hurst exponent.
|
19
|
+
|
20
|
+
---
|
21
|
+
|
22
|
+
## `diffusion_coefficient`
|
23
|
+
- **Type**: Array of Arrays of Floats
|
24
|
+
- **Units**: `μm²/s`
|
25
|
+
- **Description**: Specifies the diffusion coefficients for each molecule type. Each type can have one or more diffusion states.
|
26
|
+
|
27
|
+
---
|
28
|
+
|
29
|
+
## `diffusion_track_amount`
|
30
|
+
- **Type**: Array of Arrays of Floats
|
31
|
+
- **Description**: Initial distribution (probabilities) of molecules across each diffusion state. Must sum to 1.0 per molecule type.
|
32
|
+
|
33
|
+
---
|
34
|
+
|
35
|
+
## `hurst_exponent`
|
36
|
+
- **Type**: Array of Arrays of Floats
|
37
|
+
- **Range**: [0, 1]
|
38
|
+
- **Description**: Only used for `fbm` track types. Defines the Hurst exponents controlling subdiffusive behavior.
|
39
|
+
|
40
|
+
---
|
41
|
+
|
42
|
+
## `hurst_track_amount`
|
43
|
+
- **Type**: Array of Arrays of Floats
|
44
|
+
- **Description**: Initial distribution of molecules across each Hurst exponent state. Must sum to 1.0. Ignored for `constant` track types.
|
45
|
+
|
46
|
+
---
|
47
|
+
|
48
|
+
## `allow_transition_probability`
|
49
|
+
- **Type**: Array of Booleans
|
50
|
+
- **Description**: Whether molecules of each type can switch between diffusion or hurst states during the simulation.
|
51
|
+
|
52
|
+
---
|
53
|
+
|
54
|
+
## `transition_matrix_time_step`
|
55
|
+
- **Type**: Array of Integers
|
56
|
+
- **Units**: `ms`
|
57
|
+
- **Description**: The timestep interval at which transitions between states are evaluated. Only relevant when `allow_transition_probability` is `true`.
|
58
|
+
|
59
|
+
---
|
60
|
+
|
61
|
+
## `diffusion_transition_matrix`
|
62
|
+
- **Type**: Array of 2D Arrays (Per Molecule Type)
|
63
|
+
- **Description**: Transition probability matrices for diffusion coefficients. Each row must sum to 1. Only used if transitions are allowed.
|
64
|
+
|
65
|
+
---
|
66
|
+
|
67
|
+
## `hurst_transition_matrix`
|
68
|
+
- **Type**: Array of 2D Arrays (Per Molecule Type)
|
69
|
+
- **Description**: Transition probability matrices for hurst states. Only used for `fbm` track types and when transitions are allowed.
|
70
|
+
|
71
|
+
---
|
72
|
+
|
73
|
+
## Notes
|
74
|
+
|
75
|
+
- If `track_type` is `constant`, the hurst-related fields will be ignored and hidden in the UI.
|
76
|
+
- If a molecule type has only one state, the associated transition matrix is a 1×1 matrix with value 1.0.
|
77
|
+
- State probability fields (`diffusion_track_amount`, `hurst_track_amount`) should match the number of corresponding states.
|
78
|
+
|