Skip to main content

Naive Bayes Classifier for 16S rRNA sequence data

Project description

phylotypy

PyPI version Python 3.11+ License: MIT

A Naive Bayesian Classifier for 16S rRNA gene sequences, inspired by the phylotypr R package by Riffomonas. Designed for classifying amplicon sequence variants (ASVs) from DADA2, QIIME2, or raw FASTA files against a reference database of 16S rRNA sequences. The RDP training data is provided here in the data directory located at the github repository. But Silva and others can be used.

Thanks to Riffomonas for the inspiration — check out the videos on his YouTube channel.


Performance

Training on the full RDP reference database takes ~30 seconds on a 2020 Apple Intel MacBook Pro. Newer systems should see a substantial increase in performance.


How to Install

Using pip:

pip install phylotypy

Using uv (recommended — how to install uv):

uv pip install phylotypy

Note: Intel Mac (x86_64) users are limited to numba 0.62.1, which is pinned in this package. Apple Silicon (M-series) users are not affected.


Training Data

Download the RDP reference training set and an example dataset before classifying:

File Description
rdp_16S_v19.dada2.fasta RDP trainset19072023, DADA2 format
dna_moving_pictures.fasta Example dataset (Moving Pictures study)
The training data fasta descriptions should a taxonomy. By default the Species level is ignored.
"Kingdom", "Phylum", "Class", "Order", "Family", "Genus", "Species"

The taxon string in the fasta description should follow the semicolon-separated format like this:

>Bacteria;Pseudomonadota;Gammaproteobacteria;Enterobacterales;Enterobacteriaceae;Citrobacter
TAGAGTTTGATCCATGGCTCAGATTGAACGCTGGCGGCAGGCCTAACAC.....

Quick Start

1. Load training data and sequences to classify

from phylotypy import classifier, results, read_fasta

rdp = read_fasta.read_taxa_fasta("rdp_16S_v19.dada2.fasta")
moving_pics = read_fasta.read_taxa_fasta("dna_moving_pictures.fasta")

2. Train the classifier

database = classifier.make_classifier(rdp)

3. Classify sequences

classified = classifier.classify_sequences(moving_pics, database)

4. Format and export results

classified = results.summarize_predictions(classified)
print(classified.columns)

Output:

Index(['id', 'sequence', 'classification', 'Kingdom', 'Phylum', 'Class',
       'Order', 'Family', 'Genus', 'observed', 'lineage'],
      dtype='object')
classified.to_csv("classified_results.csv")

Complete Code Block

from phylotypy import classifier, results, read_fasta

rdp = read_fasta.read_taxa_fasta("rdp_16S_v19.dada2.fasta")
moving_pics = read_fasta.read_taxa_fasta("dna_moving_pictures.fasta")

database = classifier.make_classifier(rdp)

classified = classifier.classify_sequences(moving_pics, database)
classified = results.summarize_predictions(classified)
print(classified.head())

classified.to_csv("classified_results.csv")

Example Classification Output

Taxonomic levels (Domain → Genus) are semicolon-separated. Numbers in parentheses represent bootstrap confidence scores. The default confidence threshold is 80%.

Bacteria(100);Pseudomonadota(99);Alphaproteobacteria(99);Rhodospirillales(99);Acetobacteraceae(99);Roseomonas(83)

Bacteria(99);Bacteroidota(97);Bacteroidia(93);Bacteroidales(93);Bacteroidales_unclassified(93);Bacteroidales_unclassified(93)

Bacteria(100);Bacteroidota(100);Bacteroidia(100);Bacteroidales(100);Bacteroidaceae(100);Bacteroides(100)

Working with Your Own Data

phylotypy works with FASTA files from DADA2, QIIME2, or any standard pipeline. See read_fasta.py for utilities to load and convert sequence data into the required format.

A complete walkthrough is available in vignette.py.


Requirements

Dependencies are installed automatically via pip. See pyproject.toml for the full list.


Citation

If you use phylotypy in your research, please cite:

  • Wang, Q., Garrity, G.M., Tiedje, J.M., Cole, J.R. (2007) Naive Bayesian Classifier for Rapid Assignment of rRNA Sequences into the New Bacterial Taxonomy. Applied and Environmental Microbiology, 73(16), 5261–5267.
  • Schloss PD.2025.phylotypr: an R package for classifying DNA sequences. Microbiol Resour Announc14:e01144-24.https://doi.org/10.1128/mra.01144-24
  • Saltikov, C. (2024) phylotypy: Python implementation of a Naive Bayesian 16S rRNA classifier. https://github.com/csaltikov/phylotypy

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

phylotypy-0.2.7.tar.gz (271.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

phylotypy-0.2.7-cp313-cp313-macosx_10_13_universal2.whl (474.7 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

phylotypy-0.2.7-cp312-cp312-macosx_10_13_universal2.whl (477.7 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

phylotypy-0.2.7-cp311-cp311-macosx_10_9_universal2.whl (477.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file phylotypy-0.2.7.tar.gz.

File metadata

  • Download URL: phylotypy-0.2.7.tar.gz
  • Upload date:
  • Size: 271.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for phylotypy-0.2.7.tar.gz
Algorithm Hash digest
SHA256 0c68e96af74a7818c782d8b4db52e845a99d727b95fd96f5775027857e9637b7
MD5 81caad4ff67babe73ec02857e058408c
BLAKE2b-256 4d1a4f483ef128ee4d98d8d90228ba504798de92e28b45c956fac1e0448b1ffd

See more details on using hashes here.

Provenance

The following attestation bundles were made for phylotypy-0.2.7.tar.gz:

Publisher: python-publish.yml on csaltikov/phylotypy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file phylotypy-0.2.7-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for phylotypy-0.2.7-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 fb5385b79d2eeff8bcd2292e1aa06343e7f2ed52b79beab388f52684a4f88e91
MD5 15415a3847c9a24564f0b9c2dfbb0ba4
BLAKE2b-256 3b4db897de1518dee0c35ad5fd68daca0aae300e3f500f7044a6dda31b906247

See more details on using hashes here.

Provenance

The following attestation bundles were made for phylotypy-0.2.7-cp313-cp313-macosx_10_13_universal2.whl:

Publisher: python-publish.yml on csaltikov/phylotypy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file phylotypy-0.2.7-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for phylotypy-0.2.7-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 f328f15446b0e6e55a92c340e75444cc9657db68178b6699aab50e078da57010
MD5 488dee54c21e17eb57d7bb7c7e894c6e
BLAKE2b-256 82d7784ca8447a5f79fdb40d7ef9abe8e10ca81e91687a3bce7a0537fa2ff231

See more details on using hashes here.

Provenance

The following attestation bundles were made for phylotypy-0.2.7-cp312-cp312-macosx_10_13_universal2.whl:

Publisher: python-publish.yml on csaltikov/phylotypy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file phylotypy-0.2.7-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for phylotypy-0.2.7-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 367b52bda1106b53c7cdfa0efa22119d41fc2f1a61f5bdba9e769f385e376d71
MD5 c98fb29344fc305900f4906222f6be9c
BLAKE2b-256 012dd0c46044bb97ad3ed6ade36e585d034e63d273403c8c3416ba62d0e24fc4

See more details on using hashes here.

Provenance

The following attestation bundles were made for phylotypy-0.2.7-cp311-cp311-macosx_10_9_universal2.whl:

Publisher: python-publish.yml on csaltikov/phylotypy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page