Skip to main content

brucetyper

Tests Coverage PyPI Python 3.7+ License Documentation DOI

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.

  • 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)

Source distribution for brucetyper 1.1.0
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)

Table of built distributions (wheels) for brucetyper 1.1.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

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

Select from 2 files

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 log

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

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page