brucetyper
In silico Bruce-ladder, Suis-ladder, AMOS PCR and an RB51 junction PCR for Brucella, run end to end from assembled genomes.
For every FASTA file the primer pairs of each requested assay are located directly in the nucleotide sequence, the resulting amplicon sizes are read the way a gel would be read, and a genotype is called. No external PCR tool, no alignment step, no database.
| Assay | Flag | Separates |
|---|---|---|
| Bruce-ladder | --bruce |
All Brucella species, plus the S19 and RB51 vaccine strains |
| Suis-ladder | --suis |
B. suis biovars 1 to 5, and suis from canis |
| AMOS PCR | --amos |
abortus bv 1/2/4, melitensis, ovis, suis bv 1, S19 |
| RB51 junction | --rb51 |
RB51 from its parent 2308, which no other assay here does |
Quick start
pip install brucetyper
# Every assay, on a folder of assemblies
brucetyper -i genomes/ -o results/
# One assay, on a single genome
brucetyper -i GCF_000054005.1.fna.gz -o results/ --amos
Or from a clone, where python bruce_ladder.py takes the same arguments as brucetyper:
git clone https://github.com/duceppemo/brucetyper
cd brucetyper
pip install biopython
python bruce_ladder.py -i genomes/ -o results/
Input is a FASTA file or a folder of them, gzipped or not, one sample per file. Assemblies, not reads. The sample name is the file name with its extension stripped. With no assay flag, all four are run.
Three kinds of report are written to --outdir: amplicons.tsv (every product found),
calls.tsv (one row per sample and assay) and one report_<assay>.tsv per assay run
(sample and call, two columns).
$ cat results/calls.tsv
sample assay call rough bands sizes extra_bands
RB51 bruce RB51 yes 152;450-451;590;774;2526 2526;774;590;450;152
RB51 amos RB51_or_2308 178;387;494 494;387;178
RB51 rb51 RB51 919 1300;919 1300
2308 bruce abortus no 152;450-451;590;774;1682 1682;774;590;450;152
2308 rb51 not_RB51 456 456
Documentation
Everything else is in the wiki, whose sources are
maintained in docs/wiki:
- Installation — pip, pipx, from a clone, and what gets installed
- Usage — inputs, every option, and the three reports
- Methods — how sizes become canonical bands, how a profile is matched, how the rough flag is read
- The assays — what each resolves, what it cannot, the RB51 junction assay in detail, and the publications
- Validation — every primer checked against its publication and every band size against 87 real genomes, including the primer sets that were checked and rejected
- Large scale validation — all 2051 GenBank assemblies under taxid 234. Of the genomes that produced a call the assay matches the organism in 97.4%, including 19 where it contradicted the submitted label and was right to; zero calls on the 333 Ochrobactrum-derived genomes
- Development — the test suite and the legacy 2023 scripts
All primers and expected band sizes live in brucetyper/assays.py and
nowhere else. Edit that
file to change how genotypes are called.
Related
- insilicoPCR — in silico PCR for assemblies and reads, with qPCR/probe assays, degenerate primers and a virtual gel. Use it for probe based assays, which brucetyper cannot represent: it reads amplicon sizes the way a gel is read, and a hydrolysis probe has no size to read.
Citation
If brucetyper is useful in your work, please cite it together with the assay publications listed on the wiki:
Duceppe, M.-O. brucetyper: in silico Bruce-ladder, Suis-ladder, AMOS and RB51 junction PCR for Brucella. https://doi.org/10.5281/zenodo.23815138
The DOI above always resolves to the latest release; see
CITATION.cff.
License
MIT. Copyright held by His Majesty the King in Right of Canada, as represented by the Canadian Food Inspection Agency.
Metadata
Release files for brucetyper 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| brucetyper-1.1.0.tar.gz | 33.3 kB | With provenance | Details for brucetyper-1.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| brucetyper-1.1.0-py3-none-any.whl | Python 3 | none | any | Details for brucetyper-1.1.0-py3-none-any.whl |
Total release size: 51.0 kB
Release files / brucetyper-1.1.0.tar.gz
| Download URL | brucetyper-1.1.0.tar.gz |
|---|---|
| Size | 33.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a743e9bd8b87bb3f6b262432e33e4c13aaeb8203a51a1483dae4745866d2ead9
|
|
BLAKE2b-256 checksum How to use checksums |
d60bc73afa67024242119e80efe7e4f041841cc817d94c3381aa140fc7d3d3c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / brucetyper-1.1.0-py3-none-any.whl
| Download URL | brucetyper-1.1.0-py3-none-any.whl |
|---|---|
| Size | 17.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6edc5e9797e2ec11e320897d302d9a86d7ad6b2fdbc62ada4e8ed68414036f7b
|
|
BLAKE2b-256 checksum How to use checksums |
6c032c034e51c139ef4bc28de55bfbabb5c5ae0e9301084451675383433eee50
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logSecurity for brucetyper 1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for brucetyper-1.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.