Chapter 7: nf-core Architecture, Linting & Community Modules
Tested Stacks:
GATK 4.6.1
Samtools 1.21
Nextflow 24.10
Seurat v5.1
Python 3.12
Prerequisites: Basic Linux CLI & Sequencing Formats
📚 Chapter 7 of 13
0% Course Completed
Chapter 7: nf-core Architecture, Linting & Community Modules
nf-core is a global community effort to curate peer-reviewed, best-practice bioinformatics pipelines built on Nextflow. Instead of writing custom processes from scratch, developers share standardized, atomic modules indexed in the central nf-core registry.
The nf-core Philosophy
- One Pipeline per Problem: Avoid fragmented duplication (e.g.
nf-core/rnaseq,nf-core/sarek). - Strict Portability: Every pipeline must run seamlessly across any POSIX environment, cluster, or cloud.
- Continuous Automated Testing: Every commit is tested against full synthetic datasets using GitHub Actions.
1. Working with the nf-core CLI
# Install nf-core tools via pip or conda
pip install nf-core
# 1. List available community pipelines
nf-core pipelines list
# 2. Download a pipeline with all containers for offline HPC execution
nf-core download rnaseq --revision 3.14.0 --container-system singularity
# 3. Create a new standard pipeline template
nf-core create --name mygenomicspipeline --description "Custom variant caller"2. Installing Atomic Community Modules
# Install pre-built, tested FastQC module into local repository
nf-core modules install fastqc
# Creates:
# modules/nf-core/fastqc/
# ├── main.nf
# ├── meta.yml
# └── environment.yml3. Parameter Validation with JSON Schema
nf-core pipelines enforce parameter integrity using a nextflow_schema.json file. Nextflow parses command line flags against this schema, rejecting invalid file paths or missing arguments before scheduling any compute tasks.
⚠️
Common Pitfalls & Troubleshooting Checklist
- Java Heap Exhaustion (GATK / Picard): If processes terminate with
java.lang.OutOfMemoryError, set your environment variable explicitly:export _JAVA_OPTIONS="-Xmx16g -Djava.io.tmpdir=/tmp". - Index Timestamp Mismatch: If tools complain that a BAM index is missing or out of date, regenerate with
samtools index -@ 4 sample.bam. - Conda Channel Conflicts: Avoid ABI incompatibilities between bioconda and conda-forge by setting strict priority:
conda config --set channel_priority strict. - Chromosome Naming Contamination: Always verify whether reference FASTA headers use
chr1or1; divergent naming causes silent alignment drops.
Was this guide helpful to your research?
Help us maintain 100% accurate, peer-reviewed bioinformatics standards.