Track gen
track_gen.py Documentation#
Overview#
The track_gen.py module provides functionality to simulate foci dynamics in space, particularly within cell simulations. It includes a Track_generator class that generates tracks of foci movements in a simulated cell space, with options for transitions between different diffusion coefficients and Hurst exponents.
Classes#
Track_generator#
A class to generate tracks of foci movements in a simulated cell space.
Parameters#
- cell (
CellType): - A cell object defining the space for track generation.
- cycle_count (
int): - The number of frames for the simulation.
- exposure_time (
int | float): - Exposure time in milliseconds.
- interval_time (
int | float): - Interval time between frames in milliseconds.
- oversample_motion_time (
int | float): - Time for oversampling motion in milliseconds.
Methods#
__init__(self, cell: CellType, cycle_count: int, exposure_time: int | float, interval_time: int | float, oversample_motion_time: int | float) -> None:-
Initializes the
Track_generatorobject. -
_allowable_cell_types(self): -
Checks if the cell type is supported (currently only rectangular cells are supported).
-
track_generation_no_transition(self, diffusion_coefficient: float, hurst_exponent: float, track_length: int, initials: np.ndarray, start_time: int | float) -> dict: -
Simulates track generation with no transition between diffusion coefficients and Hurst exponents.
-
track_generation_with_transition(self, diffusion_transition_matrix: np.ndarray | list, hurst_transition_matrix: np.ndarray | list, diffusion_parameters: np.ndarray | list, hurst_parameters: np.ndarray | list, diffusion_state_probability: np.ndarray | list, hurst_state_probability: np.ndarray | list, track_length: int, initials: np.ndarray, start_time: int | float) -> dict: -
Generates track data with transitions between diffusion coefficients and Hurst exponents.
-
track_generation_constant(self, track_length: int, initials: np.ndarray, start_time: int) -> dict: -
Generates a constant track (no movement).
-
_convert_diffcoef_um2s_um2xms(self, diffusion_coefficient: float | np.ndarray | list) -> float | np.ndarray | list: -
Converts diffusion coefficient from
um^2/stoum^2/x ms. -
_convert_time_to_frame(self, time: int) -> int: -
Converts time in milliseconds to frame number.
-
_convert_frame_to_time(self, frame: int) -> int: - Converts frame number to time in milliseconds.
Private Methods#
_allowable_cell_types(self):- Ensures that only rectangular cells are supported for track generation.
Functions#
_initialize_points_per_time(total_time: int, oversample_motion_time: int) -> dict:-
Initializes an empty dictionary with keys for each time point.
-
_update_points_per_time(points_per_time: dict, track: dict) -> None: -
Updates the points per time dictionary with new track data.
-
_generate_constant_tracks(track_generator: Track_generator, track_lengths: list | np.ndarray | int, initial_positions: np.ndarray, starting_frames: int = 0) -> tuple[dict, dict]: -
Generates tracks with constant parameters.
-
_generate_no_transition_tracks(track_generator: Track_generator, track_lengths: list | np.ndarray | int, initial_positions: np.ndarray, starting_frames: int, diffusion_parameters: np.ndarray, hurst_parameters: np.ndarray) -> tuple[dict, dict]: -
Generates tracks without state transitions.
-
_generate_transition_tracks(track_generator: Track_generator, track_lengths: list | np.ndarray | int, initial_positions: np.ndarray, starting_frames: int, diffusion_parameters: np.ndarray, hurst_parameters: np.ndarray, diffusion_transition_matrix: np.ndarray, hurst_transition_matrix: np.ndarray, diffusion_state_probability: np.ndarray, hurst_state_probability: np.ndarray) -> tuple[dict, dict]: -
Generates tracks with state transitions.
-
_convert_tracks_to_trajectory(tracks: dict) -> dict: - Converts tracks to a trajectory format.
Dependencies#
randomnumpy(np)RectangularCell,RodCell,SphericalCellfrom..cellsFBM_BPfrom.movement.fbm_BP
Usage#
To use the Track_generator class, instantiate it with a cell object and the necessary parameters. Then, use the provided methods to generate tracks with or without transitions.
from track_gen import Track_generator
from ..cells.rectangular_cell import RectangularCell
# Example usage
cell = RectangularCell()
track_generator = Track_generator(cell, cycle_count=100, exposure_time=10, interval_time=5, oversample_motion_time=2)
# Generate a track with no transitions
track_data = track_generator.track_generation_no_transition(
diffusion_coefficient=1.0,
hurst_exponent=0.5,
track_length=100,
initials=np.array([0, 0, 0]),
start_time=0
)
print(track_data)
This will output a dictionary containing the generated track data.