Skip to content

nf-core pipelines

Real-world pipelines rendered with nf-metro. See the Gallery for layout pattern examples and the Guide for how to write your own.

nf-core/epitopeprediction

MHC binding prediction from VCF, protein FASTA, or peptide TSV inputs through five prediction tools. GitHub

Mermaid source
examples/epitopeprediction.mmd
%%metro title: nf-core/epitopeprediction
%%metro style: dark
%%metro line_order: span
%%metro logo: examples/nf-core-epitopeprediction_logo_light.png | examples/nf-core-epitopeprediction_logo_dark.png
%%metro legend: bl
%%metro line: vcf | Variant Input | #2db572
%%metro line: protein | Protein Input | #e6550d
%%metro line: peptide | Peptide Input | #756bb1
%%metro file: VCF_IN | VCF
%%metro file: FASTA_IN | FASTA
%%metro file: TSV_IN | TSV
%%metro file: TSV_OUT | TSV
%%metro file: HTML_OUT | HTML
graph LR
subgraph input_processing [Input Processing]
VCF_IN[ ]
gunzip_vcf([Gunzip VCF])
snpsift_split([SnpSift Split])
variant_pred([Variant Pred])
FASTA_IN[ ]
fasta2peptides([Fasta2Peptides])
TSV_IN[ ]
VCF_IN -->|vcf| gunzip_vcf
gunzip_vcf -->|vcf| snpsift_split
snpsift_split -->|vcf| variant_pred
FASTA_IN -->|protein| fasta2peptides
end
subgraph binding_prediction [Binding Prediction]
split_peptides([Split Peptides])
prepare_input([Prepare Input])
mhcflurry([MHCflurry])
mhcnuggets([MHCnuggets])
mhcnuggetsii([MHCnuggetsII])
netmhcpan([NetMHCpan])
netmhciipan([NetMHCIIpan])
merge_pred([Merge Pred])
split_peptides -->|vcf,protein,peptide| prepare_input
prepare_input -->|vcf,protein,peptide| mhcflurry
prepare_input -->|vcf,protein,peptide| mhcnuggets
prepare_input -->|vcf,protein,peptide| mhcnuggetsii
prepare_input -->|vcf,protein,peptide| netmhcpan
prepare_input -->|vcf,protein,peptide| netmhciipan
mhcflurry -->|vcf,protein,peptide| merge_pred
mhcnuggets -->|vcf,protein,peptide| merge_pred
mhcnuggetsii -->|vcf,protein,peptide| merge_pred
netmhcpan -->|vcf,protein,peptide| merge_pred
netmhciipan -->|vcf,protein,peptide| merge_pred
end
subgraph reporting [Reporting]
summarize([Summarize Results])
_tsv_pad[ ]
multiqc([MultiQC])
TSV_OUT[ ]
HTML_OUT[ ]
summarize -->|vcf,protein,peptide| _tsv_pad
summarize -->|vcf,protein,peptide| multiqc
_tsv_pad -->|vcf,protein,peptide| TSV_OUT
multiqc -->|vcf,protein,peptide| HTML_OUT
end
%% Inter-section edges
variant_pred -->|vcf| split_peptides
fasta2peptides -->|protein| split_peptides
TSV_IN -->|peptide| split_peptides
merge_pred -->|vcf,protein,peptide| summarize
CLI command
Terminal window
nf-metro render examples/epitopeprediction.mmd -o epitopeprediction.svg
Rendered map
1 2 3 VCF FASTA TSV TSV HTML Split Peptides Summarize Results Gunzip VCF Prepare Input Fasta2Peptides MultiQC SnpSift Split MHCflurry MHCnuggets MHCnuggetsII NetMHCpan NetMHCIIpan Variant Pred Merge Pred Variant Input Protein Input Peptide Input created with nf-metro v1.1.0+dev

sanger-tol/genomeassembly

Genome assembly from long reads and Hi-C data through purging, polishing, scaffolding, and QC. GitHub

Mermaid source
examples/genomeassembly.mmd
%%metro title: sanger-tol/genomeassembly
%%metro style: dark
%%metro line: long_reads | Long reads | #2db572
%%metro line: hic_reads | Hi-C reads | #e6842a
%%metro line: i10x_reads | 10X reads | #756bb1
%%metro line: assemblies | Assembly | #0570b0
%%metro file: input_long_reads | FASTX
%%metro file: input_hic_reads | CRAM
%%metro file: input_10x_reads | FASTQ
%%metro line_order: span
%%metro compact_offsets: true
%%metro legend: bl
graph LR
subgraph raw_asm [Raw assembly]
%%metro exit: bottom | hic_reads
%%metro exit: right | assemblies,long_reads
input_long_reads[ ]
input_hic_reads[ ]
hifiasm[Hifiasm]
input_long_reads -->|long_reads| hifiasm
input_hic_reads -->|hic_reads| hifiasm
end
subgraph purging [Purging]
%%metro entry: left | assemblies,long_reads
%%metro exit: right | assemblies
purging_minimap2[minimap2]
purge_dups[purge_dups]
purging_minimap2 -->|assemblies,long_reads| purge_dups
end
subgraph polishing [Polishing]
%%metro entry: left | assemblies
%%metro exit: right | assemblies
input_10x_reads[ ]
longranger[Longranger]
freebayes[FreeBayes]
input_10x_reads -->|i10x_reads| longranger
longranger -->|i10x_reads,assemblies| freebayes
end
subgraph scaffolding [Scaffolding]
%%metro entry: left | assemblies
%%metro entry: bottom | hic_reads
%%metro exit: right | assemblies
scaffolding_bwamem2[bwa-mem2]
scaffolding_minimap2[minimap2]
yahs[YaHS]
pretextmap[PretextMap]
juicer[Juicer]
cooler[Cooler]
scaffolding_bwamem2 -->|assemblies,hic_reads| yahs
scaffolding_minimap2 -->|assemblies,hic_reads| yahs
yahs -->|assemblies,hic_reads| pretextmap
yahs -->|assemblies,hic_reads| juicer
yahs -->|assemblies,hic_reads| cooler
end
subgraph genome_statistics [Genome QC]
%%metro entry: left | assemblies
asmstats[asmstats]
gfastats[GFAStats]
busco[BUSCO]
merquryfk[MerquryFK]
asmstats -->|assemblies| gfastats
asmstats -->|assemblies| busco
asmstats -->|assemblies| merquryfk
end
%% Inter-section edges
hifiasm -->|assemblies,long_reads| purging_minimap2
hifiasm -->|hic_reads| scaffolding_bwamem2
hifiasm -->|hic_reads| scaffolding_minimap2
hifiasm -->|assemblies| longranger
hifiasm -->|assemblies| scaffolding_bwamem2
hifiasm -->|assemblies| scaffolding_minimap2
purge_dups -->|assemblies| longranger
purge_dups -->|assemblies| scaffolding_bwamem2
purge_dups -->|assemblies| scaffolding_minimap2
freebayes -->|assemblies| scaffolding_bwamem2
freebayes -->|assemblies| scaffolding_minimap2
hifiasm -->|assemblies| asmstats
purge_dups -->|assemblies| asmstats
freebayes -->|assemblies| asmstats
yahs -->|assemblies| asmstats
CLI command
Terminal window
nf-metro render examples/genomeassembly.mmd -o genomeassembly.svg
Rendered map
sanger-tol/genomeassembly 1 2 3 4 5 FASTX CRAM FASTQ bwa-mem2 minimap2 asmstats minimap2 GFAStats purge_dups Longranger YaHS BUSCO Hifiasm MerquryFK PretextMap FreeBayes Juicer Cooler Assembly Long reads Hi-C reads 10X reads created with nf-metro v1.1.0+dev

nf-core/hlatyping

HLA typing from FASTQ or BAM inputs via OptiType and HLA-HD. GitHub

Mermaid source
examples/hlatyping.mmd
%%metro title: nf-core/hlatyping
%%metro style: dark
%%metro logo: examples/nf-core-hlatyping_logo_light.png | examples/nf-core-hlatyping_logo_dark.png
%%metro file: fastq_in | FASTQ
%%metro file: bam_in | BAM
%%metro file: report_tsv | TSV
%%metro file: report_html | HTML
%%metro line: fastq | FASTQ | #2db572
%%metro line: bam | BAM | #e6842a
%%metro legend: bl
graph LR
subgraph preprocessing [Pre-processing]
%%metro exit: right | fastq, bam
fastq_in[ ]
bam_in[ ]
cat_fastq[cat FASTQ]
_fastq_delay[ ]
check_paired[Check Paired]
collatefastq[BAM to FASTQ]
fastqc[FastQC]
fastq_in -->|fastq| cat_fastq
cat_fastq -->|fastq| _fastq_delay
_fastq_delay -->|fastq| fastqc
bam_in -->|bam| check_paired
check_paired -->|bam| collatefastq
collatefastq -->|bam| fastqc
end
subgraph hla_typing [HLA Typing]
%%metro entry: left | fastq, bam
%%metro exit: right | fastq, bam
yara_index[Yara Index]
yara_mapper[Yara Mapper]
optitype_run[OptiType]
_hlahd_delay[ ]
hlahd_run[HLA-HD]
_hlahd_delay2[ ]
_merge1[ ]
yara_index -->|fastq,bam| yara_mapper
yara_mapper -->|fastq,bam| optitype_run
optitype_run -->|fastq,bam| _merge1
_hlahd_delay -->|fastq,bam| hlahd_run
hlahd_run -->|fastq,bam| _hlahd_delay2
_hlahd_delay2 -->|fastq,bam| _merge1
end
subgraph reporting [Reporting]
%%metro entry: left | fastq, bam
report_tsv[ ]
multiqc[MultiQC]
report_html[ ]
multiqc -->|fastq,bam| report_html
end
%% Inter-section edges
fastqc -->|fastq,bam| yara_index
fastqc -->|fastq,bam| _hlahd_delay
_merge1 -->|fastq,bam| report_tsv
_merge1 -->|fastq,bam| multiqc
CLI command
Terminal window
nf-metro render examples/hlatyping.mmd -o hlatyping.svg
Rendered map
1 2 3 FASTQ BAM TSV HTML Yara Index MultiQC Yara Mapper cat FASTQ HLA-HD Check Paired OptiType BAM to FASTQ FastQC FASTQ BAM created with nf-metro v1.1.0+dev

nf-core/rnaseq

RNA-seq analysis with multiple aligner and quantification routes (STAR/RSEM, STAR/Salmon, HISAT2, Salmon pseudo-alignment, Kallisto). GitHub

Mermaid source
examples/rnaseq_auto.mmd
%%metro title: nf-core/rnaseq
%%metro logo: examples/nf-core-rnaseq_logo_light.png | examples/nf-core-rnaseq_logo_dark.png
%%metro style: dark
%%metro line: star_rsem | Aligner: STAR, Quantification: RSEM | #0570b0
%%metro line: star_salmon | Aligner: STAR, Quantification: Salmon (default) | #2db572
%%metro line: hisat2 | Aligner: HISAT2, Quantification: None | #f5c542
%%metro line: pseudo_salmon | Pseudo-aligner: Salmon, Quantification: Salmon | #e63946
%%metro line: pseudo_kallisto | Pseudo-aligner: Kallisto, Quantification: Kallisto | #7b2d3b
%%metro legend: bl
%%metro logo_scale: 0.6
graph LR
subgraph preprocessing [Pre-processing]
cat_fastq[cat fastq]
fastqc_raw[FastQC]
infer_strandedness[infer strandedness]
umi_tools_extract[UMI-tools extract]
fastp[FastP]
trimgalore[Trim Galore!]
fastqc_trimmed[FastQC]
bbsplit[BBSplit]
sortmerna[SortMeRNA]
cat_fastq -->|star_salmon,star_rsem,hisat2,pseudo_salmon,pseudo_kallisto| fastqc_raw
fastqc_raw -->|star_salmon,star_rsem,hisat2,pseudo_salmon,pseudo_kallisto| infer_strandedness
infer_strandedness -->|star_salmon,star_rsem,hisat2,pseudo_salmon,pseudo_kallisto| umi_tools_extract
umi_tools_extract -->|star_salmon,star_rsem,hisat2,pseudo_salmon,pseudo_kallisto| fastp
umi_tools_extract -->|star_salmon,star_rsem,hisat2,pseudo_salmon,pseudo_kallisto| trimgalore
fastp -->|star_salmon,star_rsem,hisat2,pseudo_salmon,pseudo_kallisto| fastqc_trimmed
trimgalore -->|star_salmon,star_rsem,hisat2,pseudo_salmon,pseudo_kallisto| fastqc_trimmed
fastqc_trimmed -->|star_salmon,star_rsem,hisat2,pseudo_salmon,pseudo_kallisto| bbsplit
bbsplit -->|star_salmon,star_rsem,hisat2,pseudo_salmon,pseudo_kallisto| sortmerna
end
subgraph genome_align [Genome alignment & quantification]
star[STAR]
hisat2_align[HISAT2]
rsem[RSEM]
salmon_quant[Salmon]
umi_tools_dedup[UMI-tools dedup]
star -->|star_rsem| rsem
star -->|star_salmon| umi_tools_dedup
umi_tools_dedup -->|star_salmon| salmon_quant
hisat2_align -->|hisat2| umi_tools_dedup
end
subgraph postprocessing [Post-processing]
samtools[SAMtools]
picard[Picard]
bedtools[BEDTools]
bedgraph[bedGraphToBigWig]
stringtie[StringTie]
samtools -->|star_salmon,star_rsem,hisat2| picard
picard -->|star_salmon,star_rsem,hisat2| bedtools
bedtools -->|star_salmon,star_rsem,hisat2| bedgraph
bedgraph -->|star_salmon,star_rsem,hisat2| stringtie
end
subgraph pseudo_align [Pseudo-alignment & quantification]
salmon_pseudo[Salmon]
kallisto[Kallisto]
multiqc_pseudo[MultiQC]
salmon_pseudo -->|pseudo_salmon| multiqc_pseudo
kallisto -->|pseudo_kallisto| multiqc_pseudo
end
subgraph qc_report [Quality control & reporting]
rseqc[RSeQC]
preseq[Preseq]
qualimap[Qualimap]
dupradar[dupRadar]
deseq2_pca[DESeq2 PCA]
kraken2[Kraken2/Bracken]
multiqc_final[MultiQC]
rseqc -->|star_salmon,star_rsem,hisat2| preseq
preseq -->|star_salmon,star_rsem,hisat2| qualimap
qualimap -->|star_salmon,star_rsem,hisat2| dupradar
dupradar -->|star_salmon,star_rsem,hisat2| deseq2_pca
deseq2_pca -->|star_salmon,star_rsem,hisat2| kraken2
kraken2 -->|star_salmon,star_rsem,hisat2| multiqc_final
end
%% Inter-section edges
sortmerna -->|star_salmon,star_rsem| star
sortmerna -->|hisat2| hisat2_align
sortmerna -->|pseudo_salmon| salmon_pseudo
sortmerna -->|pseudo_kallisto| kallisto
salmon_quant -->|star_salmon| samtools
rsem -->|star_rsem| samtools
umi_tools_dedup -->|hisat2| samtools
stringtie -->|star_salmon,star_rsem,hisat2| rseqc
CLI command
Terminal window
nf-metro render examples/rnaseq_auto.mmd -o rnaseq_auto.svg
Rendered map
1 2 4 3 5 cat fastq STAR SAMtools RSeQC HISAT2 Salmon Kallisto FastQC RSEM Picard Preseq UMI-tools dedup MultiQC infer strandedness BEDTools Qualimap Salmon UMI-tools extract bedGraphToBigWig dupRadar FastP StringTie DESeq2 PCA Trim Galore! FastQC Kraken2/Bracken BBSplit MultiQC SortMeRNA Aligner: STAR, Quantification: RSEM Aligner: STAR, Quantification: Salmon (default) Aligner: HISAT2, Quantification: None Pseudo-aligner: Salmon, Quantification: Salmon Pseudo-aligner: Kallisto, Quantification: Kallisto created with nf-metro v1.1.0+dev

nf-core/sarek

Germline and somatic variant calling, covering germline, tumor-only, and tumor-normal paired analysis through SNP/indel, SV/CNV, and MSI callers with downstream variant annotation. GitHub

Mermaid source
examples/sarek_metro.mmd
%%metro title: Example analysis pathways
%%metro caption: Adapted from: Fellows Yates, James A., et al. PeerJ 9 (2021)
%%metro style: dark
%%metro logo: examples/nf-core-sarek_logo_light.png | examples/nf-core-sarek_logo_dark.png
%%metro logo_scale: 1.0
%%metro font_scale: 1.3
%%metro legend_logo_gap: 40
%%metro legend: br
%%metro label_angle: 45
%%metro line_spread: rails | calling
%%metro grid: preprocessing | 0,0
%%metro grid: variantcalling | 1,0
%%metro grid: annotation | 2,0
%%metro grid: calling | 0,1,1,3
%%metro line: core | Core workflow | #2db572
%%metro line: germline | Germline | #0570b0
%%metro line: tumor_only | Tumor only | #d62728
%%metro line: pair_n | Tumor-normal (normal) | #0570b0
%%metro line: pair_t | Tumor-normal (tumor) | #d62728
%% Tumor-normal pair is the normal + tumor lines bundled together; give the
%% combination a single legend entry instead of two separate rows.
%%metro legend_combo: pair_n, pair_t | Tumor-normal pair
%%metro files: ubam_in | uBAM
%%metro files: spring_in | spring
%%metro files: fastq_in | FASTQ
%%metro file: vcf_ann | VCF
%%metro file: vcf_vc | VCF
%%metro files: cram_call | CRAM
%%metro file: out | VCF
%%metro file: out | TXT
%%metro files: out | ...
%% Intermediate alignment artefacts written off the trunk at the step that
%% produces them (mapping, samtools, recalibration prep, applybqsr).
%%metro files: mapped_out | BAM/CRAM
%%metro files: samtools_out | CRAM
%%metro files: recalprep_out | CRAM
%%metro files: recal_out | CRAM
%% ubam and spring need conversion, so they feed convert; fastq is already in
%% the right format and joins the trunk at FastQC, past convert. spring and
%% fastq lift off the trunk as off-track inputs with an S-curve. The bam/cram
%% outputs hang off their producer the same way (off_track anchors a sink to
%% its source).
%%metro off_track: fastq_in
%%metro off_track: spring_in
%%metro off_track: mapped_out
%%metro off_track: samtools_out
%%metro off_track: recalprep_out
%%metro off_track: recal_out
%%metro off_track: vcf_vc
%% Marker key. Optional steps use the standard station pill (undistinguished);
%% only mandatory / accelerated steps get a marker shape. Acceleration is shown
%% by fill colour: Parabricks (green), Sentieon (navy), or both (teal) on
%% whatever shape the step already carries.
%%metro marker_legend: square, solid | Mandatory
%%metro marker_legend: square, #4CAF50 | Parabricks accelerated
%%metro marker_legend: square, #1b3a6b | Sentieon accelerated
%%metro marker_legend: square, #2f7f74 | Parabricks & Sentieon accelerated
%%metro marker_legend: pill, open | Expanded in pathways panel
%% Caller families along the pathways trunk.
%%metro group: SNPs & Indels | deepvariant, freebayes, haplotypecaller, haplotyper, dnascope, tnscope, lofreq, muse, mpileup, mutect2, strelka2
%%metro group: SV & CNV | indexcov, manta, tiddit, ascat, controlfreec, cnvkit
%%metro group: MSI | msisensor2, msisensorpro
%% --- markers: mandatory steps get a square; acceleration is the fill colour.
%% mapping and markduplicates are accelerable by both Parabricks and Sentieon
%% (teal); the BQSR steps are Parabricks-only (green); the Sentieon callers in
%% the pathways panel are Sentieon-only (navy).
%%metro marker: convert | square, solid
%%metro marker: bam_convert | square, solid
%%metro marker: mapping | square, #2f7f74
%%metro marker: markduplicates | square, #2f7f74
%%metro marker: prepare_recal | circle, #4CAF50
%%metro marker: applybqsr | circle, #4CAF50
%%metro marker: vc_anchor | pill, open
%% Sentieon-accelerated callers in the pathways panel (navy circles). Single-rail
%% callers (haplotyper, dnascope) show the marker; tnscope spans two rails and
%% renders as a plain interchange (a marker on a spanning rail station is drawn
%% as the interchange bar, not the glyph).
%%metro marker: haplotyper | circle, #1b3a6b
%%metro marker: dnascope | circle, #1b3a6b
%%metro marker: tnscope | circle, #1b3a6b
graph LR
subgraph preprocessing [Pre-processing]
ubam_in[ ]
spring_in[ ]
fastq_in[ ]
convert[convert]
fastqc[FastQC]
umi[UMI]
fastp[FastP]
bbsplit[BBsplit]
mapping[mapping]
bam_convert[convert]
markduplicates[markduplicates]
mosdepth[mosdepth, samtools]
prepare_recal[prepare recalibration]
applybqsr[applybqsr]
mosdepth_qc[mosdepth, samtools]
ngscheckmate[NGSCheckmate]
mapped_out[ ]
samtools_out[ ]
recalprep_out[ ]
recal_out[ ]
ubam_in -->|core| convert
spring_in -->|core| convert
fastq_in -->|core| fastqc
convert -->|core| fastqc
fastqc -->|core| umi
umi -->|core| fastp
fastp -->|core| bbsplit
bbsplit -->|core| mapping
mapping -->|core| bam_convert
mapping -->|core| markduplicates
bam_convert -->|core| mosdepth
markduplicates -->|core| mosdepth
mosdepth -->|core| prepare_recal
prepare_recal -->|core| applybqsr
applybqsr -->|core| mosdepth_qc
mosdepth_qc -->|core| ngscheckmate
mapping -->|core| mapped_out
mosdepth -->|core| samtools_out
prepare_recal -->|core| recalprep_out
applybqsr -->|core| recal_out
end
subgraph variantcalling [Variant calling]
vc_anchor[variant calling]
bcftools[bcftools]
samtools_vc[samtools]
varlociraptor[Varlociraptor]
finalise[finalise]
normalise[normalise]
consensus[consensus]
_vc_merge[ ]
vcf_vc[ ]
vc_anchor -->|core| bcftools
bcftools -->|core| samtools_vc
samtools_vc -->|core| varlociraptor
samtools_vc -->|core| finalise
finalise -->|core| normalise
normalise -->|core| consensus
varlociraptor -->|core| _vc_merge
consensus -->|core| _vc_merge
_vc_merge -->|core| vcf_vc
end
subgraph annotation [Annotation]
snpeff[snpEff]
ensemblvep[ensemblVEP]
bcftools_annotate[bcftools annotate]
multiqc[MultiQC]
vcf_ann[ ]
snpeff -->|core| ensemblvep
ensemblvep -->|core| bcftools_annotate
bcftools_annotate -->|core| multiqc
multiqc -->|core| vcf_ann
end
subgraph calling [Example analysis pathways]
cram_call[ ]
deepvariant[DeepVariant]
freebayes[FreeBayes]
haplotypecaller[HaplotypeCaller]
haplotyper[Sentieon Haplotyper]
dnascope[Sentieon DNAscope]
tnscope[Sentieon TNscope]
lofreq[LoFreq]
muse[MuSE]
mpileup[mpileup]
mutect2[Mutect2]
strelka2[Strelka2]
indexcov[indexcov]
manta[Manta]
tiddit[TIDDIT]
ascat[ASCAT]
controlfreec[Control-FREEC]
cnvkit[CNVkit]
msisensor2[MSIsensor2]
msisensorpro[MSIsensor-pro]
out[ ]
%% Germline route (top rail): deepvariant, haplotypecaller, haplotyper,
%% dnascope are germline-only; freebayes/mpileup/strelka2/manta/tiddit/
%% cnvkit/indexcov are shared.
cram_call -->|germline| deepvariant
deepvariant -->|germline| freebayes
freebayes -->|germline| haplotypecaller
haplotypecaller -->|germline| haplotyper
haplotyper -->|germline| dnascope
dnascope -->|germline| mpileup
mpileup -->|germline| strelka2
strelka2 -->|germline| indexcov
indexcov -->|germline| manta
manta -->|germline| tiddit
tiddit -->|germline| cnvkit
cnvkit -->|germline| out
%% Tumour-only route (middle rail): tnscope, lofreq, mutect2, msisensor2
%% join here; mpileup/indexcov run tumour but not the combined pair.
cram_call -->|tumor_only| freebayes
freebayes -->|tumor_only| tnscope
tnscope -->|tumor_only| lofreq
lofreq -->|tumor_only| mpileup
mpileup -->|tumor_only| mutect2
mutect2 -->|tumor_only| indexcov
indexcov -->|tumor_only| manta
manta -->|tumor_only| tiddit
tiddit -->|tumor_only| controlfreec
controlfreec -->|tumor_only| cnvkit
cnvkit -->|tumor_only| msisensor2
msisensor2 -->|tumor_only| out
%% Tumour-normal pair route (bottom rail): muse, ascat, msisensorpro are
%% combined-only; strelka2 runs germline + combined (not tumour-only).
cram_call -->|pair_n,pair_t| freebayes
freebayes -->|pair_n,pair_t| tnscope
tnscope -->|pair_n,pair_t| muse
muse -->|pair_n,pair_t| mutect2
mutect2 -->|pair_n,pair_t| strelka2
strelka2 -->|pair_n,pair_t| manta
manta -->|pair_n,pair_t| tiddit
tiddit -->|pair_n,pair_t| ascat
ascat -->|pair_n,pair_t| controlfreec
controlfreec -->|pair_n,pair_t| cnvkit
cnvkit -->|pair_n,pair_t| msisensorpro
msisensorpro -->|pair_n,pair_t| out
end
%% Inter-section: core workflow flows through the top three sections.
ngscheckmate -->|core| vc_anchor
_vc_merge -->|core| snpeff
CLI command
Terminal window
nf-metro render examples/sarek_metro.mmd -o sarek_metro.svg
Rendered map
1 2 3 4 uBAM spring FASTQ BAM/ CRAM CRAM CRAM CRAM VCF VCF CRAM VCF TXT ... variant calling snpEff convert bcftools ensemblVEP DeepVariant FastQC samtools bcftools annotate FreeBayes UMI Varlociraptor MultiQC HaplotypeCaller finalise FastP Sentieon Haplotyper normalise BBsplit Sentieon DNAscope consensus mapping Sentieon TNscope convert LoFreq markduplicates mosdepth, samtools MuSE prepare recalibration mpileup applybqsr Mutect2 mosdepth, samtools Strelka2 NGSCheckmate indexcov Manta TIDDIT ASCAT Control-FREEC CNVkit MSIsensor2 MSIsensor-pro SNPs & Indels SV & CNV MSI Core workflow Germline Tumor only Tumor-normal pair Mandatory Parabricks accelerated Sentieon accelerated Parabricks & Sentieon accelerated Expanded in pathways panel created with nf-metro v1.1.0+dev Adapted from: Fellows Yates, James A., et al. PeerJ 9 (2021)

nf-core/seqinspector

Dedicated QC-only pipeline for sequencing data, running FASTQ, BAM, and run-folder QC tools in parallel and aggregating everything into a MultiQC report. GitHub

Mermaid source
examples/showcase/seqinspector.mmd
%%metro title: nf-core/seqinspector
%%metro style: dark
%%metro logo: examples/showcase/nf-core-seqinspector_logo_light.png | examples/showcase/nf-core-seqinspector_logo_dark.png
%%metro line: run_folder | Run Folder | #1f77b4
%%metro line: fastq_files | FASTQ Files | #ff7f0e
%%metro line: bam_files | BAM Files | #24B064
%%metro file: fastq_in | FASTQ | | banner
%%metro dir: rundir_in | RUNDIR
%%metro file: multiqc | HTML | | banner
%%metro center_ports: true
%%metro compact_offsets: true
%%metro legend: bl
%%metro grid: fastq_files | 0,0,2
%%metro grid: run_folder | 1,0
%%metro grid: bam_files | 1,1
%%metro grid: multiqc | 2,0,2
graph LR
subgraph fastq_files [FASTQ Files]
fastq_in[ ]
bbmap[BBMap Clumpify]
fastp[FastP]
fastqc[FASTQC]
fastqe[FASTQE]
fastqscreen[FastQ Screen]
fq_lint[FQ Lint]
kraken2[Kraken2]
krona[Krona]
seqfu[SeqFu Stats]
seqkit[SeqKit Stats]
seqtk[Seqtk sample]
sequali[Sequali]
toulligqc[ToulligQC]
fastq_in -->|fastq_files| seqtk
seqtk -->|fastq_files| kraken2
kraken2 -->|fastq_files| krona
subgraph bam_files [BAM Files]
bwamem2[BWAmem2]
picardhs[Picard collecthsmetrics]
picardmultiple[Picard collectmultiplemetrics]
riker[Riker multi]
bwamem2 -->|bam_files| picardhs
bwamem2 -->|bam_files| picardmultiple
bwamem2 -->|bam_files| riker
end
seqtk -->|fastq_files| bbmap
seqtk -->|fastq_files| bwamem2
seqtk -->|fastq_files| fastp
seqtk -->|fastq_files| fastqc
seqtk -->|fastq_files| fastqe
seqtk -->|fastq_files| fastqscreen
seqtk -->|fastq_files| fq_lint
seqtk -->|fastq_files| seqfu
seqtk -->|fastq_files| seqkit
seqtk -->|fastq_files| sequali
seqtk -->|fastq_files| toulligqc
end
subgraph run_folder [Run Folder]
rundir_in[ ]
checkqc[CheckQC]
rundirparser[Rundirparser]
rundir_in -->|run_folder| checkqc
rundir_in -->|run_folder| rundirparser
end
subgraph multiqc [MultiQC]
multiqc[MultiQC]
bbmap -->|fastq_files| multiqc
checkqc -->|run_folder| multiqc
fastp -->|fastq_files| multiqc
fastqc -->|fastq_files| multiqc
fastqe -->|fastq_files| multiqc
fastqscreen -->|fastq_files| multiqc
fq_lint -->|fastq_files| multiqc
krona -->|fastq_files| multiqc
picardhs -->|bam_files| multiqc
picardmultiple -->|bam_files| multiqc
riker -->|bam_files| multiqc
rundirparser -->|run_folder| multiqc
seqfu -->|fastq_files| multiqc
seqkit -->|fastq_files| multiqc
sequali -->|fastq_files| multiqc
toulligqc -->|fastq_files| multiqc
end
CLI command
Terminal window
nf-metro render examples/showcase/seqinspector.mmd -o seqinspector.svg
Rendered map
1 3 2 4 FASTQ RUNDIR HTML BWAmem2 CheckQC Rundirparser Picard collecthsmetrics Seqtk sample Picard collectmultiplemetrics Riker multi BBMap Clumpify FastP FASTQC FASTQE FastQ Screen FQ Lint Kraken2 SeqFu Stats SeqKit Stats Sequali ToulligQC Krona Run Folder FASTQ Files BAM Files created with nf-metro v1.1.0+dev

nf-core/variantbenchmarking

Benchmarking of variant callers against truth sets with Truvari, hap.py, RTGtools, and more. GitHub

Mermaid source
examples/variantbenchmarking.mmd
%%metro title: nf-core/variantbenchmarking
%%metro style: dark
%%metro line_order: span
%%metro legend: bl
%%metro compact_offsets: true
%%metro grid: inputs | 0,0
%%metro grid: preprocess | 1,0
%%metro grid: normalization | 2,0
%%metro grid: filtering | 3,0
%%metro grid: stats | 4,0
%%metro grid: benchmarking | 3,1
%%metro grid: ensembl_truth | 4,1
%%metro grid: output_processing | 1,1,1,2
%%metro file: ref_genome_file | FASTA
%%metro file: truth_vcf_file | VCF
%%metro file: regions_bed_file | BED
%%metro file: targets_bed_file | BED
%%metro file: samplesheet_file | TSV
%%metro file: snv_stats_out | TSV
%%metro file: sv_stats_out | TSV
%%metro file: merged_csvs_out | CSV
%%metro file: html_report_out | HTML
%%metro file: multiqc_out | HTML
%%metro line: truth | Truth Preprocessing | #4CAF50
%%metro line: test | Test Preprocessing | #ff9800
%%metro line: sv_cnv | SV/CNV Benchmarking | #E53935
%%metro line: snv_indel | SNV/INDEL Benchmarking | #AB47BC
%%metro line: concordance | Concordance | #FFB300
%%metro line: intersection | Intersection | #26A69A
%%metro line: output | Output Processing | #03A9F4
graph LR
subgraph inputs [Inputs]
%%metro exit: right | truth, test
ref_genome_file[ ]
ref_genome[Reference Genome]
truth_vcf_file[ ]
truth_vcf[Truth VCF]
regions_bed_file[ ]
regions_bed[Regions BED]
targets_bed_file[ ]
targets_bed[Targets BED]
samplesheet_file[ ]
samplesheet[Samplesheet]
_inputs_hub[hidden]
ref_genome_file -->|truth| ref_genome
truth_vcf_file -->|truth| truth_vcf
regions_bed_file -->|truth| regions_bed
targets_bed_file -->|truth| targets_bed
samplesheet_file -->|test| samplesheet
ref_genome -->|truth| _inputs_hub
truth_vcf -->|truth| _inputs_hub
regions_bed -->|truth| _inputs_hub
targets_bed -->|truth| _inputs_hub
samplesheet -->|test| _inputs_hub
end
subgraph preprocess ["Preprocessing (Optional)"]
%%metro entry: left | truth, test
%%metro exit: right | truth, test
subsample[Subsample]
liftover["Liftover\n(Picard, UCSC)"]
subsample -->|test| liftover
end
subgraph normalization ["Variant Normalization (Optional)"]
%%metro entry: left | truth, test
%%metro exit: right | truth, test
sv_processing[SV\nProcessing]
var_norm[Variant\nNormalization]
sv_processing -->|test| var_norm
end
subgraph filtering ["Variant Filtering (Optional)"]
%%metro entry: left | test
%%metro exit: right | test
filter_contigs[Filter\nContigs]
bcftools_filter[bcftools\nfilter]
survivor_filter[SURVIVOR\nfilter]
filter_contigs -->|test| bcftools_filter
filter_contigs -->|test| survivor_filter
end
subgraph ensembl_truth [Ensembl Truth]
%%metro direction: TB
%%metro entry: top | test
%%metro exit: left | truth
_ensembl_hub[hidden]
survivor_merge[SURVIVOR\nmerge]
bcftools_merge[bcftools\nmerge]
consensus_filter[Consensus\nFilter]
_ensembl_hub -->|test| survivor_merge
_ensembl_hub -->|test| bcftools_merge
survivor_merge -->|test| consensus_filter
bcftools_merge -->|test| consensus_filter
end
subgraph benchmarking [Benchmarking]
%%metro direction: RL
%%metro entry: top | test, truth
%%metro entry: right | test, truth
bench_hub[ ]
truvari[Truvari]
rtg_vcfeval[RTGtools vcfeval]
svanalyzer[SVanalyzer]
rtg_bndeval[RTGtools bndeval]
happy[hap.py]
wittyer[wittyer]
sompy[som.py]
intersection_tool[Intersection]
gatk4_conc[GATK4 Concordance]
bench_hub -->|sv_cnv| truvari
bench_hub -->|snv_indel| rtg_vcfeval
bench_hub -->|sv_cnv| svanalyzer
bench_hub -->|sv_cnv| rtg_bndeval
bench_hub -->|snv_indel| happy
bench_hub -->|sv_cnv| wittyer
bench_hub -->|snv_indel| sompy
bench_hub -->|intersection| intersection_tool
bench_hub -->|concordance| gatk4_conc
%%metro exit: left | sv_cnv, snv_indel, concordance, intersection
end
subgraph output_processing [Output Processing]
%%metro direction: RL
%%metro entry: right | sv_cnv, snv_indel, concordance, intersection
results_hub[ ]
merge_res[Merge\nTP/FP/FN]
vcf2csv[VCF to\nCSV]
sum_stats[Summary\nStats]
plots[Plots]
datavzrd_tool[datavzrd]
merged_csvs[Merged\nCSVs]
merged_csvs_out[ ]
bench_summaries[Benchmarking\nSummaries]
html_report[HTML\nReport]
html_report_out[ ]
multiqc[MultiQC\nReport]
multiqc_out[ ]
results_hub -->|output| merge_res
merge_res -->|output| vcf2csv
results_hub -->|output| sum_stats
sum_stats -->|output| plots
sum_stats -->|output| datavzrd_tool
vcf2csv -->|output| plots
vcf2csv -->|output| merged_csvs
merged_csvs -->|output| merged_csvs_out
results_hub -->|output| bench_summaries
datavzrd_tool -->|output| html_report
html_report -->|output| html_report_out
sum_stats -->|output| multiqc
bench_summaries -->|output| multiqc
plots -->|output| multiqc
multiqc -->|output| multiqc_out
end
subgraph stats [Variant Statistics]
%%metro entry: left | test
%%metro exit: right | test, output
bcftools_stats[bcftools\nstats]
survivor_stats[SURVIVOR\nstats]
snv_stats[SNV stats]
sv_stats[SV stats]
snv_stats_out[ ]
sv_stats_out[ ]
bcftools_stats -->|output| snv_stats
survivor_stats -->|output| sv_stats
snv_stats -->|output| snv_stats_out
sv_stats -->|output| sv_stats_out
end
%% Section 1 -> 2: test through Subsample, truth to Liftover
_inputs_hub -->|test| subsample
_inputs_hub -->|truth| liftover
%% Section 2 -> 3: test to SV Processing, truth to Var Norm
liftover -->|test| sv_processing
liftover -->|truth| var_norm
%% Section 1 -> 3 (bypass section 2)
_inputs_hub -->|test| sv_processing
_inputs_hub -->|truth| var_norm
%% Section 3 -> 4
var_norm -->|test| filter_contigs
%% Section 4 -> 5: each filter to its corresponding stats
bcftools_filter -->|test| bcftools_stats
survivor_filter -->|test| survivor_stats
%% Section 4 -> Ensembl Truth
bcftools_filter -->|test| _ensembl_hub
survivor_filter -->|test| _ensembl_hub
%% Multiple sections -> Benchmarking
filter_contigs -->|test| bench_hub
var_norm -->|truth| bench_hub
consensus_filter -->|truth| bench_hub
%% Benchmarking -> Output Processing
truvari -->|sv_cnv| results_hub
svanalyzer -->|sv_cnv| results_hub
rtg_bndeval -->|sv_cnv| results_hub
wittyer -->|sv_cnv| results_hub
rtg_vcfeval -->|snv_indel| results_hub
happy -->|snv_indel| results_hub
sompy -->|snv_indel| results_hub
intersection_tool -->|intersection| results_hub
gatk4_conc -->|concordance| results_hub
CLI command
Terminal window
nf-metro render examples/variantbenchmarking.mmd -o variantbenchmarking.svg
Rendered map
nf-core/variantbenchmarking 1 2 3 4 6 7 8 5 FASTA VCF BED BED TSV CSV HTML HTML TSV TSV Subsample SVProcessing FilterContigs bcftoolsstats SURVIVORstats Truvari SVanalyzer bcftoolsfilter RTGtools bndeval Samplesheet SURVIVORmerge SURVIVORfilter wittyer Reference Genome Liftover(Picard, UCSC) VariantNormalization bcftoolsmerge RTGtools vcfeval Truth VCF hap.py Regions BED som.py Targets BED GATK4 Concordance MergeTP/FP/FN SNV stats Intersection SummaryStats SV stats BenchmarkingSummaries ConsensusFilter VCF toCSV datavzrd MergedCSVs Plots HTMLReport MultiQCReport Test Preprocessing Truth Preprocessing SV/CNV Benchmarking SNV/INDEL Benchmarking Concordance Intersection Output Processing created with nf-metro v1.1.0+dev

nf-core/variantprioritization

Somatic and germline variant prioritization using PCGR and CPSR. GitHub

Mermaid source
examples/variantprioritization.mmd
%%metro title: nf-core/variantprioritization
%%metro file: cna_in | CNA
%%metro file: vcf_in | VCF
%%metro file: report_pcgr | HTML
%%metro file: report_cpsr | HTML
%%metro line: somatic | Somatic | #4CAF50
%%metro line: germline | Germline | #9923A0
%%metro line: reference | Reference | #2196F3
graph LR
subgraph preprocessing [Pre-processing of vcf files]
vcf_in[ ]
tabix[tabix]
bcftools_norm[bcftools/norm]
bcftools_filter[bcftools/filter]
vcf_in -->|somatic,germline| tabix
tabix -->|somatic,germline| bcftools_norm
bcftools_norm -->|somatic,germline| bcftools_filter
end
subgraph format_files [Prepare files for PCGR]
reformat_vcf[Reformat VCF]
intersect[Intersect VCF]
prepare_pcgr[Prepare VCF]
cna_in[ ]
reformat_cna[Reformat CNA]
reformat_vcf -->|somatic| intersect
reformat_vcf -->|somatic| prepare_pcgr
intersect -->|somatic| prepare_pcgr
cna_in -->|somatic| reformat_cna
end
subgraph get_reference [Reference]
get_pcgr[PCGR DB]
get_vep[VEP Cache]
end
subgraph run_pcgr [PCGR]
pcgr[PCGR]
report_pcgr[ ]
pcgr -->|somatic| report_pcgr
end
subgraph run_cpsr [CPSR]
cpsr[CPSR]
report_cpsr[ ]
cpsr -->|germline| report_cpsr
end
%% Inter-section edges
get_pcgr -->|reference| cpsr
get_vep -->|reference| cpsr
bcftools_filter -->|germline| cpsr
bcftools_filter -->|somatic| reformat_vcf
reformat_cna -->|somatic| pcgr
prepare_pcgr -->|somatic| pcgr
get_pcgr -->|reference| pcgr
get_vep -->|reference| pcgr
CLI command
Terminal window
nf-metro render examples/variantprioritization.mmd -o variantprioritization.svg
Rendered map
nf-core/variantprioritization 1 3 2 5 4 VCF CNA HTML HTML Reformat VCF PCGR CPSR PCGR DB VEP Cache Intersect VCF tabix Reformat CNA bcftools/norm Prepare VCF bcftools/filter Somatic Germline Reference created with nf-metro v1.1.0+dev