Skip to content

Latest commit

 

History

51 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

DOI

DNAStoralator — Extended Error Model

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.


What's New

The original DNAStoralator models sequencing/synthesis errors in a single phase. This fork adds a three-phase error pipeline:

  1. Phase 0: Aging — DNA degradation errors (substitutions only, with empirically-derived base bias)
  2. Phase 1: PCR Amplification — PCR replication errors (substitutions only, platform-selectable)
  3. 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

Setup

Python 3.8.6 is required.

pip install PyQt5 scipy Pillow matplotlib edlib leven

Linux/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".


Running the App

python dnaSimulator/app.py

Input: one DNA strand per line (see input/strands_in.txt for an example).


Testing Infrastructure

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.py

Each 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.


Project Structure

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

References

  • 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages