A collection of scripts and utility tools for everyday processing of biological data.
For detailed tool documentation, see docs/README.md.
- Python 3.12 or later
- uv (recommended) or pip
Note: Running the demultiplexing test recipes additionally requires the Illumina BCL-convert executable, which is not bundled with this repository because its redistribution is prohibited. Download it from the Illumina website and place it in the
assets/directory. See docs/README.md for details.
# Clone repository
git clone https://github.com/fagostini/BioMate.git
cd BioMate
# Install all dependencies + dev tools
uv sync --all-extras --all-groups
# Run commands with isolated environment
uv run biomate --help
uv run pytest tests/# Generate requirements.txt from lock file
uv export --frozen --output-file=requirements.txt
# Install dependencies
pip install -r requirements.txt
# Install package in development mode
pip install -e .
# Run commands
biomate --help
pytest tests/BioMate uses a single source of truth for dependency management:
-
pyproject.toml- Source of truth- Defines all dependencies with version constraints
- Developers edit this file to change dependencies
- What gets published to PyPI
-
uv.lock- Reproducible builds- Machine-readable lock file with exact resolved versions
- Committed to repository
- Ensures reproducible builds across machines
-
requirements.txt- Generated artifact- Auto-generated from
uv.lockfor pip-only environments - NOT committed (regenerated as needed)
- Contains all transitive dependencies with hashes
- Auto-generated from
To update dependencies:
- Edit
pyproject.tomlto change version constraints - Run
uv lockto update lock file - Regenerate
requirements.txtif needed:uv export --frozen --output-file=requirements.txt - Commit:
pyproject.tomlanduv.lock
Use uv in CI pipelines (recommended):
- run: uv sync --all-extras --all-groups
- run: uv run pytest tests/Or use pip with generated requirements:
- run: uv export --frozen --output-file=requirements.txt
- run: pip install -r requirements.txt
- run: pytest tests/uv run pytest tests/ -vuv run ruff check src/
uv run ruff format src/uv run mkdocs serve# Install everything
uv sync --all-extras --all-groups
# See available tools
uv run biomate --help
# Example: Generate random sequences
uv run biomate blabber --seq-number 100 --seq-length 50
# Run tests
uv run pytest tests/ -vBioMate/
├── src/biomate/ # Main package source code
│ ├── blabber/ # Sequence generator
│ ├── dirstruct/ # Directory structure tool
│ ├── fastrewind/ # FASTQ file conversion
│ ├── index/ # Indexing tool
│ ├── nspector/ # FASTQ inspector
│ ├── strainer/ # Index analysis
│ └── web_interface.py # Tornado web UI
├── tests/ # Test suite
├── docs/ # Documentation
├── pyproject.toml # Dependency definitions
├── uv.lock # Frozen dependencies (committed)
└── README.md # This file
See LICENSE file for details.
See existing documentation for code standards and testing requirements.
Note: This project requires Python 3.12+. For development, using uv is strongly recommended for faster, more reliable dependency management.