Skip to main content

nf-core Provider

CBIcall can launch registered nf-core pipelines through Nextflow. CBIcall validates the YAML, pins the registered nf-core release, writes the Nextflow params/config files, and records the run metadata. The nf-core pipeline keeps its own upstream output layout and runtime behavior.

In CBIcall terms, nf-core is a workflow provider and Nextflow is the workflow backend. Registered nf-core entries are launched through the Nextflow backend, but they are not one of the shipped CBIcall WES/WGS/mtDNA CBIcall-native implementations. Use this page when testing registered nf-core examples on a workstation or on a cluster.

Run directory location

nf-core run directories are created where cbicall run is launched, for example cbicall_nextflow_nf-core_sarek_cohort_GATK.GRCh38_<run-id>/. This differs from native CBIcall WES/WGS/mtDNA pipelines, whose run directories are created under the discovered sample/input directory.

Profiles and Container Runtimes

CBIcall passes nfcore_profile to nf-core as the Nextflow -profile value. Profiles are comma-separated and combined by Nextflow; each profile adds a different part of the runtime configuration.

ProfileWhat it does
testUses the nf-core pipeline's built-in test data and smoke-test settings. It is not a software runtime.
dockerRuns tasks with Docker. Images are pulled into the local Docker image store.
singularityRuns tasks with Singularity/Apptainer. Images are pulled into the Nextflow/Singularity cache.
condaBuilds Conda environments when the workflow supports it. Useful in some setups, but not the recommended CBIcall HPC path.

For smoke tests, combine test with a runtime profile, for example test,docker on a Docker workstation or test,singularity on HPC. If nfcore_parameters.input is set, that explicit input overrides the test input provided by the nf-core test profile.

For Singularity/Apptainer, image placement is controlled by the environment variables NXF_SINGULARITY_CACHEDIR and NXF_SINGULARITY_LIBRARYDIR, or by CBIcall's nfcore_singularity_cache_dir setting.

How CBIcall Complements nf-core

CBIcall is not a replacement for nf-core. nf-core provides community-maintained pipelines run by Nextflow; CBIcall adds a project-level execution contract around selected registered provider entries.

Aspectnf-core / NextflowCBIcall
Main roleCommunity pipeline ecosystemProject-level execution contract
ValidationParameter and samplesheet schemasPipeline/mode/genome/backend/resource compatibility
ConfigurationSamplesheets, params, profiles, configsUser YAML plus controlled registries
OutputsPipeline-native layoutDeterministic run directory and output inventory
ProvenanceNextflow reports and logslog.json, run-report.json, fingerprints, VCF hashes
Offline/HPC useRequires staged code, containers, references, and cachesRecords the resolved runtime/resource contract

Demo Smoke Test

Use nf-core/demo as a lightweight nf-core provider smoke test through the Nextflow backend. The checked-in examples/input/nf-core-demo.yaml uses test,singularity because that is the practical profile on HPC systems where Docker is not available.

For an HPC or Apptainer/Singularity test:

mode: single
pipeline: demo
workflow_backend: nextflow
workflow_provider: nf-core
resource: nf-core-demo-managed-resources-v1
nfcore_profile: test,singularity

Run it from the directory containing nf-core-demo.yaml:

../../bin/cbicall validate-parameters -p nf-core-demo.yaml --no-color
../../bin/cbicall run -p nf-core-demo.yaml -t 4 --no-color
Runtime profile, cache, and CPU notes
TopicRecommendation
Workstation Dockernfcore_profile: test,docker is possible on x86_64 hosts with Docker installed.
HPC containersPrefer test,singularity; Docker is usually unavailable inside cluster jobs.
Singularity cacheSet NXF_SINGULARITY_CACHEDIR in the shell or nfcore_singularity_cache_dir in YAML for repeated runs.
nf-core/demo CPUsUse at least -t 4 and request matching scheduler CPUs.
Tiny Sarek chr22 testCan run with -t 1, although larger Sarek runs need appropriate scheduler resources.

Sarek Examples

nf-core/sarek is launched as an nf-core provider entry through the Nextflow backend. CBIcall passes nfcore_parameters to the generated Nextflow params file.

Built-In nf-core Test

The smallest Sarek check uses nf-core's own test profile. It verifies that CBIcall can launch the registered Sarek release, write the params/config files, pull containers, parse Nextflow reports, and record software versions.

mode: cohort
pipeline: sarek
workflow_backend: nextflow
workflow_provider: nf-core
resource: nf-core-sarek-managed-resources-v1
nfcore_profile: test,singularity

This is an execution smoke test, not the HaplotypeCaller output example. The Sarek test profile supplies its own inputs and defaults to Strelka, so the CBIcall canonical HaplotypeCaller VCF pattern is expected to be missing.

CBIcall Test Data

Use examples/input/nf-core-sarek.yaml when you want the CBIcall test-data example. It points Sarek to examples/input/sarek_samplesheet.csv, uses the tiny GRCh38 chr22 interval file, and asks for HaplotypeCaller output.

mode: cohort
pipeline: sarek
workflow_backend: nextflow
workflow_provider: nf-core
resource: nf-core-sarek-managed-resources-v1
nfcore_profile: singularity
# nfcore_singularity_cache_dir: nxf-singularity-cache
nfcore_parameters:
input: sarek_samplesheet.csv
genome: GATK.GRCh38
tools: haplotypecaller
skip_tools: haplotypecaller_filter
wes: true
intervals: ../../workflows/nextflow/nf-core/sarek/grch38_chr22_test.bed
max_memory: 30.GB

Use max_memory to cap nf-core/Sarek process memory requests. CBIcall writes it to the generated nf-core parameters file and mirrors it in Nextflow process.resourceLimits, so the scheduler sees the same memory ceiling. The example interval file is a tiny GRCh38 chr22 BED stored with the registered Sarek support files. The example also skips Sarek's HaplotypeCaller filtering step because tiny single-chromosome smoke tests may not contain enough overlapping resource variants for GATK FilterVariantTranches.

On HPC, use nfcore_singularity_cache_dir when the default shared container cache contains unreadable images or when you want the cache path recorded in the generated Nextflow config. CBIcall inherits any NXF_* variables already set by the shell or scheduler bootstrap.

The Sarek registry entry also declares its canonical HaplotypeCaller VCF output:

sarek/variant_calling/haplotypecaller/*/*.haplotypecaller.vcf.gz

When this file exists, run-report.json records a normalized VCF hash so cbicall compare-runs can audit repeated Sarek runs.

Screenshot of a CBIcall HTML run comparison report for repeated nf-core/Sarek runs, showing the combined status KPI and legend row plus matching canonical HaplotypeCaller VCF fingerprints.

For the germline HaplotypeCaller smoke test, the Sarek samplesheet can use the minimal FASTQ layout shown in examples/input/sarek_samplesheet.csv:

patient,sample,lane,fastq_1,fastq_2
CNAG99901P_ex,CNAG99901P_ex,L001,/path/to/R1.fastq.gz,/path/to/R2.fastq.gz

Keep the header. Without it, Sarek may parse the first sample row as column names and fail before launching the expected pipeline steps. For the full samplesheet schema and advanced use cases, use the nf-core/Sarek documentation.

HPC Notes

On a cluster, load the runtime used by the selected nf-core profile. Check available modules:

module avail Nextflow/25.10.2
module avail apptainer
module avail singularity

For Apptainer/Singularity:

module load Nextflow/25.10.2
module load apptainer # or: module load singularity
export NXF_SINGULARITY_CACHEDIR=/path/to/singularity/cache
export NXF_SINGULARITY_LIBRARYDIR=/path/to/singularity/library

When running from a source checkout, make sure the SLURM script loads the Python runtime needed by CBIcall before calling bin/cbicall. For example:

module load Python/3.10.8-GCCcore-12.2.0
export PYTHONPATH=/software/biomed/cbi_py3/lib/python3.10/site-packages:$PYTHONPATH

The bundled SLURM examples set this directly in the generated job script rather than requiring a separate sourced bootstrap.

Additional HPC and Nextflow notes
IssueAction
Apptainer profile nameUse test,singularity if the nf-core pipeline does not accept test,apptainer.
Scheduler CPUsRequest CPUs in SLURM and pass the same value to CBIcall, for example -t "$SLURM_CPUS_PER_TASK".
CPU request errorProcess requirement exceeds available CPUs means the scheduler allocation is too small.
Nextflow 26.04 parser issueSet NXF_SYNTAX_PARSER=v1 in the shell. This is not a CBIcall parameter.
Shared cache permission errorUse a user-owned/project-owned cache and set nfcore_singularity_cache_dir.
General backend setupSee the nf-core configuration docs and Nextflow container docs.

Logs

CBIcall writes the main Nextflow launcher log in the run directory:

cbicall_nextflow_nf-core_<pipeline>_<mode>_<display-genome>_<run_id>/
nf-core_<pipeline>_<mode>.log
.nextflow.log
cbicall_external_nextflow.params.yaml
cbicall_external_nextflow.config

For task-level failures, start with .nextflow.log and the main CBIcall launcher log. Nextflow often reports the task work directory in the error text.

Debug failed nf-core tasks
CheckCommand or interpretation
Inspect task filescd work/<hash>/<task> then ls -la .command*
.command.* existsThe task reached execution; inspect .command.err, .command.out, or .command.log.
.command.* absentThe task likely failed before execution, often because scheduler resources were too small.
Generic debuggingSee the Nextflow troubleshooting documentation.