CASTA is a Python package for analyzing spatial transient patterns in tracking data using Hidden Markov Models (HMM). It provides tools for processing and plotting trajectory data.
pip install castagit clone https://github.com/NanoSignalingLab/photochromic-reversion.git
cd photochromic-reversion
pip install -e .import casta
casta.calculate_sta(
dir="/path/to/data/directory",
out_dir="/path/to/output/directory",
min_track_length=25,
dt=0.05,
plot=True,
image_format="svg"
)# Basic usage
python -m casta /path/to/your/track/data
# With parameters
python -m casta /path/to/data --dt 0.05 --min-track-length 25| Option | Type | Default | Description |
|---|---|---|---|
dir |
str | required | Path to directory containing input track data |
--out_dir |
str | None | Path to output directory to save results, defaults to input directory |
--dt |
float | 0.05 | Time step for analysis |
--min-track-length |
int | 25 | Minimum track length for analysis |
--plot |
bool | False | Enable additional plotting |
--image-format |
str | svg | Image format (svg, tiff) |
CASTA includes an example file.
import os
import casta
example_df, path = casta.example.load_example_data()
current_dir = os.getcwd()
casta.calculate_sta(path, out_dir=current_dir)The analysis generates:
- Excel files with detailed results (
*_CASTA_results.xlsx) - Visualization plots (optional, in specified format)
- Python 3.10.18
- NumPy 1.26.4
- Pandas 2.2.3
- Matplotlib 3.10.0
- SciPy 1.15.0
- Scikit-learn 1.6.1
- Seaborn 0.13.2
- hmm-learn 0.3.3
- Shapely 2.0.6
- xlsxwriter 3.2.3
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
If you use CASTA in your research, please cite:
Photochromic reversion enables long-term tracking of single molecules in living plants
Michelle von Arx, Kaltra Xhelilaj, Philip Schulz, Sven zur Oven-Krockhaus, Julien Gronnier
bioRxiv 2024.04.10.585335; doi: https://doi.org/10.1101/2024.04.10.585335
For questions and support, please open an issue on the GitHub repository.