probe-tester is a modular Python toolkit for evaluating primers and probes against large collections of genomes.
It supports automated download of NCBI genomes, in silico PCR (IPCRESS) matching, summary/statistics reporting, and modern, user-friendly CLI progress indicators.
- Automated download of GenBank genomes by species, genus, or custom set (NCBI Datasets CLI required)
- Flexible in silico PCR (IPCRESS): test any forward/reverse/probe set on downloaded genomes
- Multiprocessing support: scale up to thousands of genomes
- Rich progress bars (if available) or clean fallback output
- Summary and specificity panelization: separates “target” and “non-target” organisms for true molecular diagnostics benchmarking
- CSV/Markdown export, table summaries, and metadata in results
- Graceful error handling, dependency checks, and quality-of-life CLI features
python >= 3.8ncbi-datasets-cli- Python packages: (optionally)
rich,
Easiest, install with conda
mamba env create -f environment.yamlDownload a specific taxonomic level of genomes:
Ex. Download 5 genomes for the species "Mycoplasmopsis bovis:
python main.py download --taxon "Mycoplasmopsis bovis" --mode species --max-genomes 5Or knowing the target species, download genomes from the upper taxonomic level.
Ex. Download 5 genomes for all members of the genus that "Mycoplasmopsis bovis" belongs to.
python main.py download --taxon "Mycoplasmopsis bovis" --mode parent --max-genomes 5Add --dry-run to preview downloads, or --force to skip confirmation for large jobs.
Test your primers and probe against all genomes:
python main.py assay \
--forward TCTAATTTTTTCATCATCGCTAATGC \
--reverse TCAGGCCTTTGCTACAATGAAC \
--probe AACTGCATCATATCACATACT \
--run-name Parker-2017 \
--threads 4- Uses multiprocessing (
--threads) if desired for speed. IPCRESSis called under the hood.- Results are written to a JSON file (named by run or timestamp).
Get a sensitivity/specificity table, with targets vs. non-targets, in pretty, CSV, or markdown format:
python main.py summarize --input results-Parker-2017.json \
--target "Mycoplasmopsis-bovis" \
--format textOr for all Mycoplasmopsis- species:
python main.py summarize --input results-Parker-2017.json \
--target "Mycoplasmopsis-*"Export to CSV/markdown for figures or publication:
python main.py summarize --input results.json --format csv --target "Mycoplasmopsis-bovis"-
List available species/genomes:
python main.py list --taxon "Mycoplasmopsis" --mode parent
- Use
--dry-runto preview large downloads before running them. - Use
--run-namefor descriptive result files. - Use
--threads Non modern CPUs for much faster assay runs. - Regularly update the NCBI Datasets CLI for the latest assembly info.
# Download up to 10 genomes for all organisms belonging to Mycoplasmopsis bovis's genus.
python main.py download --taxon "Mycoplasmopsis bovis" --max-genomes 10
# Run probe set against all genomes, using 8 CPU threads
python main.py assay --forward ... --reverse ... --probe ... --threads 8 --run-name my-panel
# Summarize, showing only Mycoplasmopsis-bovis as the target
python main.py summarize --input results-my-panel.json --target "Mycoplasmopsis-bovis" --format csvHappy analyzing!