NOSE — Novel Species Identification Pipeline (Computational Biology Lab, IIT Madras)
Project description
NOvel SpEcies Identification Pipeline
A Modular Snakemake Toolkit for Novelty Identification and Characterization
NOSE is a scalable bioinformatics pipeline designed to identify and characterize novel microbial species. By integrating quality assessment, phylogenomics, and functional mapping into a unified Snakemake workflow, NOSE ensures research is reproducible, automated, and ready for HPC environments.
Table of Contents
Overview
NOSE takes a directory of genome FASTA files and returns — with full scientific evidence — whether each genome belongs to an already-described species or represents a candidate novel organism. Each module is an independent Snakemake workflow with its own conda environments, config file, and output directory.
FASTA Files → M1: Quality Check → M2: Novelty Screen → Novel / Known
↓
· M3: Phylogenetic Tree Workflow
· M4: Metagenome Mapping
· M5: Functional Characterization
· M6: Metabolic Modeling
Pipeline Structure
| Module | Name | Trigger | Key Output |
|---|---|---|---|
| M1 | Genome Summary & Classification | All input genomes | genome_summary.csv |
| M2 | Overall Genome-Relatedness (OGRI) | M1 output | compiled_results.csv · potential_novel.csv |
| M3 | Phylogenetic ML Tree | ANI < 95% (novel) | ML tree + iTOL annotation |
| M4 | Metagenome Mapping | ANI < 95% (novel) | final_report.csv |
| M5 | Functional Characterization | ANI < 95% (novel) | 7 CSV outputs |
| M6 | Metabolic Modeling | ANI < 95% (novel) | SBML models + model_summary.csv |
How to read the figure: FASTA files enter at the top. M1 and M2 run on all genomes. The ANI < 95% gate separates known species (right branch) from novel candidates (green path). All four characterization modules (M3–M6) run only on novel candidates.
Installation
Follow the guide below to install Anaconda and configure a dedicated Snakemake environment. This ensures a stable, reproducible workspace with all required bioinformatics channels pre-configured.
📖 Anaconda and Snakemake Setup & Installation
Quick setup:
# 1. Install conda and activate
source ~/anaconda3/bin/activate && conda init
# 2. Add bioinformatics channels
conda config --add channels conda-forge
conda config --add channels bioconda
conda config --set channel_priority strict
# 3. Create the Snakemake environment
conda create -n snakemake snakemake -y
conda activate snakemake
# 4. Clone the full NOSE repository
git clone https://github.com/RamanLab/NOSE.git
cd NOSE
# 5. Enter any module, edit config.yaml, then run
cd Module1
# Edit config.yaml with your paths, then:
bash Nose_Module1.sh
Modules
Module 1: Genome Summary & Classification
📁 Module 1 | Script: Nose_Module1.sh
Automated Snakemake workflow for assembly quality assessment and full taxonomic classification. A single is_euk flag in config.yaml selects the prokaryotic or eukaryotic path. Genomes passing the HQ filter are written to genome_summary.csv for downstream use.
Tools:
| Path | Tools |
|---|---|
| Prokaryotic | QUAST · CheckM2 · GTDB-Tk |
| Eukaryotic | QUAST · EukCC · CAT |
Quality thresholds: Completeness ≥ 95% · Contamination ≤ 5% · Classified to genus level minimum
Outputs:
genome_summary.csv— genomes passing QC thresholds → input for Module 2unqualified_genome_summary.csv— genomes that did not meet thresholds
Module 2: Overall Genome-Relatedness (OGRI)
📁 Module 2 | Script: Nose_Module2.sh
Computes three complementary genomic distance metrics against all RefSeq type strains in the genome's genus, downloaded automatically via the NCBI Datasets API. Supports both WGS and 16S-only input modes. Genomes with ANI < 95% are flagged as candidate novel species.
⚠️ An NCBI API key must be set in
config.yaml. Without it, reference genome downloads will be rate-limited. 🔗 How to get an NCBI API key: NCBI API Integration Guide
Tools: FastANI · AAI (aai.rb) · POCP (pocp.sh) · Barrnap · BLASTn · NCBI Datasets API
Three OGRI metrics:
| Metric | Boundary | Significance |
|---|---|---|
| ANI | < 95% = novel | Primary species-level boundary (IJSEM standard) |
| AAI | — | Broader evolutionary distances at proteome level |
| POCP | < 50% = new genus | Genus-level delineation |
Outputs:
compiled_results.csv— all genomes with ANI / AAI / POCP / 16S identitypotential_novel.csv— ANI < 95% candidates, staged for M3–M6
Module 3: Phylogenetic Tree Workflow
📁 Module 3 | Script: Nose_Module3.sh
Validates taxonomic novelty via genus-specific Maximum Likelihood (ML) trees built from concatenated Single-Copy Genes (SCGs). GToTree identifies SCGs using HMMs; IQ-TREE infers the ML tree with 1000 ultrafast bootstrap replicates; tree_annotation.py generates iTOL-ready annotation files.
⚠️ Requires manual addition of
Outroup(GCF ID) andHMMcolumns togenome_summary_mod.csvbefore running.
Tools: GToTree · IQ-TREE · iTOL · tree_annotation.py
IQ-TREE command:
iqtree \
-s Aligned_SCGs.faa \ # concatenated SCG alignment
-spp Partitions.txt \ # per-gene partition model
-m MFP \ # ModelFinder Plus
-bb 1000 \ # ultrafast bootstraps
-nt 4 \ # CPU threads
-pre {genus}_iqtree_out
Outputs: Per-genus ML tree files + iTOL annotation CSV files
Module 4: Metagenome Mapping Workflow
📁 Module 4 | Script: Nose_Module4.sh
Quantifies isolate prevalence and relative abundance across metagenomic datasets using sylph k-mer containment estimation. No BAM files or read alignment required. Species-level threshold (c=100) with minimum 5 k-mers enforced to suppress false positives.
Tools: sylph · pandas · merge_results.py
Containment thresholds:
| Threshold (c) | Resolution |
|---|---|
| 100 | Species-level (default) |
| 95 | Genus-level |
| 90 | Family-level |
Output: final_report.csv — Sample_ID · Genome · Containment · ANI · Reads_Queried · Reads_Matching
Module 5: Functional Characterization
📁 Module 5 | Script: Nose_Module5.sh
Multi-modal pipeline integrating structural annotation, COG functional classification, biosynthetic gene cluster detection, resistance and virulence screening, and mobile element identification.
Tools: Prokka · COGclassifier · antiSMASH · ABRICATE · geNomad
Workflow steps:
| Step | Tool | Output |
|---|---|---|
| Gene annotation | Prokka | .gff · .faa · .ffn · .gbk |
| Functional classification | COGclassifier | merged_classifier_count.csv |
| BGC detection | antiSMASH | AntiSMASH_results.csv |
| Resistance & virulence | ABRICATE (CARD · VFDB · BacMet · NCBI) | Per-database tabular reports |
| Phage & plasmid detection | geNomad | virus_summary.csv · plasmid_summary.csv |
💡 geNomad tells you whether resistance or virulence genes reside on mobile elements — meaning they can spread horizontally to other organisms.
Module 6: Metabolic Modeling Workflow
📁 Module 6 | Script: Nose_Module6.sh
Genome-scale metabolic reconstruction using CarveMe (top-down approach). Each GEM is validated with COBRApy unconstrained growth tests and benchmarked with MEMOTE for stoichiometric consistency. Models are exported in SBML/FBC format compatible with COBRA Toolbox, cobrapy, and OptFlux.
Tools: CarveMe · COBRApy · MEMOTE · generate_model_stats.py · compile_model_summary.py
⚠️ Always use the
--prodigalflag with CarveMe. Default gene prediction produces incomplete GEM reconstruction for certain isolates.
Output: model_summary.csv — sample · n_reactions · n_metabolites · n_genes · growth · memote_score
Authors
Developed at Computational Biology Lab, IIT Madras
| Role | Name |
|---|---|
| Principal Investigator | Prof. Karthik Raman |
| Pipeline Authors | Prithvi · Harippriya · Enos · Pratyay Sengupta |
License
This project is licensed under the MIT License — see the LICENSE file for details.
© 2026 NOSE Project Team · Computational Biology Lab · IIT Madras · Built for Novel Species Identification
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nose_pipeline-1.0.0.tar.gz.
File metadata
- Download URL: nose_pipeline-1.0.0.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c6b95b4d8a3f242566f80726921c4b256cb581437d347823f4c4ef387d6f7d7
|
|
| MD5 |
d42c2fd1fe8047af826c8b78ff4b3a8f
|
|
| BLAKE2b-256 |
85bc38838be11e0bbe1517001f69ee54781150bb85a6f05738c6f7d8d4063e48
|
File details
Details for the file nose_pipeline-1.0.0-py3-none-any.whl.
File metadata
- Download URL: nose_pipeline-1.0.0-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6d092d84ceba9cf194bf3a03709a2e615e77e7e8a111e44e66132ecc5666fc0
|
|
| MD5 |
f2c15706077ab8813ffc5833ec7b1210
|
|
| BLAKE2b-256 |
c09b90e58836aee08fa1c87f771ab0f8c39a2123d3bbc9303b58502756754880
|