An analysis workflow for detecting known OTUs (viruses) by matching reads against a reference of known virus genomes.
- Map default isolates. Identify potentially present OTUs by mapping against representative (default) isolates of each OTU.
- Build isolate index. Build a mapping index of all isolates of the previously identified OTUs.
- Map all isolates. Map sample reads against all isolates of OTU candidates.
- Map and eliminate subtractions. Map reads with alignment in previous step against the user-selected subtraction to eliminate contaminating reads (usually host).
- Reassignment. Use Pathoscope 2.0 to statistically reassign read weight to the most likely reference genomes of origin. Minimize the impact of multi-mapping and similar reference genomes on the analysis.
The project uses Docker containers for development and testing to ensure consistent environments. The development container (dev
service) automatically starts when running tests and includes all necessary dependencies including Rust toolchain, Python, and bioinformatics tools (bowtie2, HMMER, FastQC, pigz).
The container mounts the project directory and uses persistent volumes for build artifacts (.venv
, target
, and UV cache) to speed up subsequent builds. All test commands (mise run test
, mise run test:rust
, mise run test:python
) automatically ensure the development container is running via the dev:start
dependency. You can also interact with the container directly using mise run dev
for an interactive shell, or manage it with mise run dev:stop
, mise run dev:clean
, and mise run dev:rebuild
.
Run all tests (Rust + Python):
mise run test
Run only Rust unit tests:
mise run test:rust
Run only Python/e2e tests:
mise run test:python
Pass arguments to pytest:
mise run test:python -- -vv
mise run test:python -- --snapshot-update
mise run test:python -- tests/test_workflow.py::test_map_isolates
Run clippy for linting:
mise run clippy
All commits must follow the Conventional Commits specification. See the Virtool development documentation for detailed commit guidelines and examples.