Skip to main content

A Python tool for fetching bacterial genome metadata and sequences.

Project description

fetchm: Metadata Fetching and Analysis Tool

Overview

fetchm is a command-line tool for bacterial comparative genomics workflows. It starts from an ncbi_dataset.tsv downloaded from the NCBI Genome interface, retrieves linked BioSample metadata, standardizes key fields, summarizes the dataset, generates figures, and can optionally download the filtered genome FASTA files.

The tool is intended primarily for bacterial genomes. Metadata structures differ across organism groups, so non-bacterial datasets may not behave consistently.

Features

  • Fetch Isolation Source, Collection Date, Geographic Location, and Host from NCBI BioSample.
  • Filter records by ANI status and optional CheckM completeness threshold.
  • Standardize common missing-value strings and harmonize collection year and country names.
  • Generate summary tables, harmonization reports, and publication-ready plots.
  • Download genome FASTA files from NCBI FTP after filtering by host, year, country, continent, or subcontinent.
  • Audit an existing sequence directory with --check-only.

Installation

Create a fresh environment and install from PyPI:

conda create -n fetchm python=3.9
conda activate fetchm
pip install fetchm

fetchm uses Python dependencies only. No separate wget installation is required for the current release.

Usage

fetchm has three main commands:

fetchm metadata --input ncbi_dataset.tsv --outdir results/
fetchm run --input ncbi_dataset.tsv --outdir results/
fetchm seq --input results/<organism>/metadata_output/ncbi_clean.csv --outdir results/<organism>/sequence

Common examples:

fetchm metadata --input ncbi_dataset.tsv --outdir results/ --ani all
fetchm run --input ncbi_dataset.tsv --outdir results/ --checkm 95
fetchm seq --input ncbi_clean.csv --outdir sequence_output --country Bangladesh
fetchm seq --input ncbi_clean.csv --outdir sequence_output --cont Asia
fetchm seq --input ncbi_clean.csv --outdir sequence_output --check-only

Sequence filters:

fetchm seq \
  --input results/<organism>/metadata_output/ncbi_clean.csv \
  --outdir results/<organism>/sequence \
  --host "Homo sapiens" \
  --year 2018-2024 \
  --country Bangladesh

Legacy compatibility commands are still available:

fetchM --input ncbi_dataset.tsv --outdir results/
fetchM --input ncbi_dataset.tsv --outdir results/ --seq
fetchM-seq --input ncbi_clean.csv --outdir sequence_output

Demo Files

Two example inputs are already bundled in the repository:

  • test.tsv: quick smoke-test dataset.
  • Vibrio_v1.tsv: the larger dataset used in the manuscript workflow.

Quick smoke test:

fetchm metadata --input test.tsv --outdir test_output

Input Requirements

Download ncbi_dataset.tsv from the NCBI Genome Datasets interface.

If you are unsure which export options to pick, selecting all available columns in the NCBI table export is the safest route.

Required columns:

Column Name Description
Assembly Accession Unique identifier for the assembly
Assembly Name Name of the genome assembly
Organism Name Scientific name of the organism
ANI Check status ANI validation status from NCBI
Annotation Name Annotation pipeline name
Assembly Stats Total Sequence Length Total sequence length
Assembly BioProject Accession Linked BioProject accession
Assembly BioSample Accession Linked BioSample accession
Annotation Count Gene Total Total annotated genes
Annotation Count Gene Protein-coding Protein-coding genes
Annotation Count Gene Pseudogene Pseudogenes
CheckM completeness CheckM completeness value
CheckM contamination CheckM contamination value

Tips:

  • The file must be tab-separated.
  • Keep the original header names unchanged.
  • --checkm is optional. If you do not provide it, no CheckM filtering is applied.

Output

For each run, fetchm creates an organism-specific result directory containing:

  • metadata_output/ncbi_dataset_updated.tsv
  • metadata_output/ncbi_clean.csv
  • metadata_output/metadata_summary.csv
  • metadata_output/assembly_summary.csv
  • metadata_output/annotation_summary.csv
  • metadata_output/metadata_harmonization_report.csv
  • figures/*.tiff
  • figures/Geographic Location_map.jpg
  • sequence/*.fna when sequence downloading is enabled
  • sequence/failed_accessions.txt after sequence audit or download

The harmonization report gives a quick completeness summary for the standardized metadata fields.

Notes

  • fetchm run already includes sequence downloading.
  • fetchm metadata and fetchm run support --ani, --checkm, and --sleep.
  • fetchm seq supports --host, --year, --country, --cont, --subcont, --retries, --retry-delay, and --check-only.
  • Scatter plots are skipped automatically when the filtered dataset does not contain enough valid points.
  • Runtime depends strongly on dataset size, NCBI responsiveness, and network conditions.

License

MIT License.

Author

Tasnimul Arabi Anik

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

fetchm-0.1.10.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

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

fetchm-0.1.10-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file fetchm-0.1.10.tar.gz.

File metadata

  • Download URL: fetchm-0.1.10.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for fetchm-0.1.10.tar.gz
Algorithm Hash digest
SHA256 7558435b1e6eda561a856f7eecfd74daaca59fef506572126425cbe41d39c6f6
MD5 01867f4305e209d91176ef7a5c1b615b
BLAKE2b-256 dbd539b99eadf6fab154ae2d8ed8f039698c9a8889df6168e12a9e07a646fd3c

See more details on using hashes here.

File details

Details for the file fetchm-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: fetchm-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 19.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for fetchm-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 9badc6b4bc4f7b6f8c646ba1b29a4f0c824fd7161d8dab85e5436949ad222516
MD5 7e68ac027d6df7b0a4a0c4c66aaed863
BLAKE2b-256 00ecda47d1332048a6c8ce94f5c89872327ee2c01a10a28a5b650db824577503

See more details on using hashes here.

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