Trim lots of metagenomics samples all at once.
We keep writing pipelines that start with read trimming. Rather than copy-pasting code each time, this standalone Snaketool handles our trimming needs. The tool will collect sample names and files from a directory or TSV file, optionally remove host reads, and trim with your favourite read trimmer. Read trimming methods supported so far:
- Fastp
- Prinseq++
- BBtools for Round A/B viral metagenomics
- Filtlong + Rasusa for longreads
Trimnami is still in development but can be easily installed with pip:
Easy install
pip install trimnamiDeveloper install
git clone https://github.com/beardymcjohnface/Trimnami.git
cd Trimnami/
pip install -e .Trimnami comes with inbuilt tests which you can run to check everything works fine.
# test fastp only (default method)
trimnami test
# test all SR methods
trimnami test fastp prinseq roundAB
# test all SR methods with host removal
trimnami testhost fastp prinseq roundAB
# test nanopore method (with host removal)
trimnami testnpTrim reads with Fastp or Prinseq++
# Fastp (default)
trimnami run --reads reads/
# Prinseq++
trimnami run --reads reads/ prinseq
# Why not both!
trimnami run --reads reads/ fastp prinseqInclude host removal
trimnami run --reads reads/ --host host_genome.fastaLongreads with host removal. Specify 'nanopore' for targets and use the appropriate minimap preset.
trimnami run \
--reads reads/ \
--host host_genome.fasta \
--minimap map-ont \
nanoporeYou can pass either a directory of reads or a TSV file to --reads.
- Directory: Trimnami will infer sample names and _R1/_R2 pairs from the filenames.
- TSV file: Trimnami expects 2 or 3 columns, with column 1 being the sample name and columns 2 and 3 the reads files.
More information and examples here
You can customise the trimming parameters via the config file. Copy the default config file.
trimnami configThen edit the config file trimnami.out/trimnami.config.yaml in your favourite text editor.
Run trimnami like normal, or point to your custom config file if you've moved it.
trimnami run ... --configfile /my/awesome/config.yamlTrimmed reads will be saved in various subfolders in the output directory.
e.g. if trimming with Fastp or Prinseq++,
trimmed reads will be in trimnami.out/fastp/ or trimnami.out/prinseq/.
Paired reads will yield three files:
The R1 and R2 paired reads, and any singletons from trimming or host removal.
Subsampling will produce extra files of subsampled trimmed reads.
Multiqc-fastqc reports for any runs will be available in trimnami.out/reports/
Click to expand
prinseq
trimnami.out/
└── prinseq
├── A13-04-182-06_TAGCTT.paired.R1.fastq.gz
├── A13-04-182-06_TAGCTT.paired.R2.fastq.gz
├── A13-04-182-06_TAGCTT.paired.S.fastq.gz
├── A13-12-250-06_GGCTAC.paired.R1.fastq.gz
├── A13-12-250-06_GGCTAC.paired.R2.fastq.gz
├── A13-12-250-06_GGCTAC.paired.S.fastq.gz
└── A13-135-177-06_AGTTCC.single.fastq.gz
prinseq with fastqc reports
trimnami.out/
├── prinseq
│ ├── A13-04-182-06_TAGCTT.paired.R1.fastq.gz
│ ├── A13-04-182-06_TAGCTT.paired.R2.fastq.gz
│ ├── A13-04-182-06_TAGCTT.paired.S.fastq.gz
│ ├── A13-12-250-06_GGCTAC.paired.R1.fastq.gz
│ ├── A13-12-250-06_GGCTAC.paired.R2.fastq.gz
│ ├── A13-12-250-06_GGCTAC.paired.S.fastq.gz
│ └── A13-135-177-06_AGTTCC.single.fastq.gz
└── reports
├── prinseq.fastqc.html
└── untrimmed.fastqc.html
prinseq with host removal
trimnami.out/
└── prinseq
├── A13-04-182-06_TAGCTT.host_rm.paired.R1.fastq.gz
├── A13-04-182-06_TAGCTT.host_rm.paired.R2.fastq.gz
├── A13-04-182-06_TAGCTT.host_rm.paired.S.fastq.gz
├── A13-12-250-06_GGCTAC.host_rm.paired.R1.fastq.gz
├── A13-12-250-06_GGCTAC.host_rm.paired.R2.fastq.gz
├── A13-12-250-06_GGCTAC.host_rm.paired.S.fastq.gz
└── A13-135-177-06_AGTTCC.host_rm.single.fastq.gz
prinseq with host removal and subsampling
trimnami.out/
└── prinseq
├── A13-04-182-06_TAGCTT.host_rm.paired.R1.fastq.gz
├── A13-04-182-06_TAGCTT.host_rm.paired.R1.subsampled.fastq.gz
├── A13-04-182-06_TAGCTT.host_rm.paired.R2.fastq.gz
├── A13-04-182-06_TAGCTT.host_rm.paired.R2.subsampled.fastq.gz
├── A13-04-182-06_TAGCTT.host_rm.paired.S.fastq.gz
├── A13-04-182-06_TAGCTT.host_rm.paired.S.subsampled.fastq.gz
├── A13-12-250-06_GGCTAC.host_rm.paired.R1.fastq.gz
├── A13-12-250-06_GGCTAC.host_rm.paired.R1.subsampled.fastq.gz
├── A13-12-250-06_GGCTAC.host_rm.paired.R2.fastq.gz
├── A13-12-250-06_GGCTAC.host_rm.paired.R2.subsampled.fastq.gz
├── A13-12-250-06_GGCTAC.host_rm.paired.S.fastq.gz
├── A13-12-250-06_GGCTAC.host_rm.paired.S.subsampled.fastq.gz
├── A13-135-177-06_AGTTCC.host_rm.single.fastq.gz
└── A13-135-177-06_AGTTCC.host_rm.single.subsampled.fastq.gz
