This is a research fork of DNAStoralator, a DNA storage simulator developed at the Technion - Israel Institute of Technology. It extends the original with a multi-phase error pipeline and testing infrastructure.
For the original tool documentation, see the official wiki.
The original DNAStoralator models sequencing/synthesis errors in a single phase. This fork adds a three-phase error pipeline:
- Phase 0: Aging — DNA degradation errors (substitutions only, with empirically-derived base bias)
- Phase 1: PCR Amplification — PCR replication errors (substitutions only, platform-selectable)
- Phase 2: Sequencing/Synthesis — Original DNAStoralator error model (deletions, insertions, substitutions)
Additional features:
- DNA Degradation: simulate complete strand loss at a configurable rate
- Position-dependent deletion length bias (optional, per sequencing technology)
- Error tracking infrastructure (
dnaSimulator/error_sim_tests/) for validating individual phases in isolation
Python 3.8.6 is required.
pip install PyQt5 scipy Pillow matplotlib edlib levenLinux/Mac only — grant execute permissions:
chmod 777 dnaSimulator/reconstruction_algs/*
chmod 777 dnaSimulator/shuffle_prog/*Mac note: If macOS blocks the executables, go to System Preferences > Security & Privacy > General and click "Open Anyway".
python dnaSimulator/app.pyInput: one DNA strand per line (see input/strands_in.txt for an example).
Standalone test scripts are in dnaSimulator/error_sim_tests/. Each phase can be tested in isolation:
python dnaSimulator/error_sim_tests/test_aging_errors.py
python dnaSimulator/error_sim_tests/test_pcr_errors.py
python dnaSimulator/error_sim_tests/test_sequencing_errors.py
python dnaSimulator/error_sim_tests/test_full_pipeline.pyEach script saves timestamped CSV results and PNG visualizations (position distributions, substitution/insertion matrices, error type frequency) to dnaSimulator/error_sim_tests/output/.
See dnaSimulator/error_sim_tests/README.md for full details.
DNAStoralator/
├── input/
│ └── strands_in.txt
├── dnaSimulator/
│ ├── app.py # Main GUI entry point
│ ├── simulator.py # Simulation pipeline
│ ├── strand_error_sim.py # Per-strand error application
│ ├── aging.py # Phase 0: aging/degradation model
│ ├── worker.py # Threading (QThread wrappers)
│ ├── index_clustering.py # Index-based clustering
│ ├── hash_based_clustering.py
│ ├── filepath.py # Cross-platform path helpers
│ ├── error_sim_tests/ # Phase testing scripts
│ ├── reconstruction_algs/ # Platform binaries (Win/Linux/Mac)
│ ├── shuffle_prog/ # Shuffle binaries
│ └── solqc/ # SOLQC quality control tool (unchanged)
└── output/ # Generated after running the simulator
- Original paper: "DNA-Storalator: a simulation and synthesis error characterization tool for DNA data storage", BMC Bioinformatics (2025) — link
- PCR error rates: PLoS ONE (2016) — doi:10.1371/journal.pone.0169774
- Software archive: Zenodo DOI 10.5281/zenodo.15763805