nf-core/seqsubmit
nf-core pipeline for data submission to ENA
Introduction
nf-core/seqsubmit is a Nextflow pipeline for submitting sequence data to ENA.
The pipeline supports the following data types, selected via the --mode parameter:
reads— raw sequencing readsmetagenomic_assemblies— metagenomic assembliesmags— metagenome-assembled genomes (MAGs)bins— metagenomic bins
Each mode has its own samplesheet structure, prerequisites, and limitations — see the dedicated section for the mode you want to use below.
Before you start
Before running the pipeline in any mode, make sure that:
-
Nextflow
>=25.04.0is available. -
You have a Webin account registered at https://www.ebi.ac.uk/ena/submit/webin/login.
Set your Webin credentials as Nextflow secrets:
nextflow secrets set ENA_WEBIN "Webin-XXX"nextflow secrets set ENA_WEBIN_PASSWORD "XXX"Make sure to replace the values above with your own credentials.
-
Provide either a study accession or a study registration metadata file for the study the submission will be associated with. See the Submission study section below for details.
-
Depending on the chosen mode, samples, reads, or metagenomic assemblies must be pre-submitted to ENA to obtain the corresponding accessions, which you then reference in your submission. Refer to the relevant mode section below for details.
Submission study
All data submitted through this pipeline must be associated with an ENA study (project). You have two options:
Option 1 — Use an existing study
If you already have an ENA study, pass its accession (starting with PRJ or ERP) via --submission_study:
--submission_study PRJEB12345You can create a study manually via the Webin Portal following these instructions and then use the assigned study accession.
Option 2 — Register a new study automatically
Provide a study metadata file via --study_metadata and the pipeline will register the study with ENA before submitting your data:
--study_metadata study_metadata.jsonThe pipeline accepts JSON, CSV, and TSV formats.
JSON formats
Single study as a flat object:
{ "alias": "study-gut-2026", "study_title": "Gut microbiome study", "study_abstract": "Characterisation of gut microbial communities"}CSV format
alias,study_title,study_abstractstudy-gut-2026,Gut microbiome study,Characterisation of gut microbial communitiesTSV format
alias study_title study_abstractstudy-soil-2026 Soil microbiome study Survey of soil microbiotaStudy metadata fields
| Field | Required | Description |
|---|---|---|
study_title |
Yes | Descriptive title of the study. |
alias |
Yes | Unique project alias within your Webin account. Max length is 50 characters. |
study_abstract |
No | Free-text abstract describing the study. |
study_description |
No | Alternative to study_abstract. |
project_name |
No | Project name. Defaults to study_title. |
existing_study_type |
No | ENA study type (e.g. Metagenomics, Other). |
new_study_type |
No | Custom study type. Only used when existing_study_type is set to Other. |
Data privacy
You can reference private ENA data if you have access to it via your Webin account (it was submitted previously under your credentials). To use private data accessions in your submission metadata, specify the --is_private flag. The pipeline will then use your provided Webin credentials to fetch the required metadata.
You can also control the privacy of your submitted data:
- If you provide an existing study via
--submission_study, your submission will inherit the same privacy status as that study. - If no study is provided, the pipeline will register a new one for you. To keep this new study private, you must specify a release date using
--release_date YYYY-MM-DD(up to 2 years from the current date).
| Example | Source Data | Submission Visibility | Required Arguments | Result |
|---|---|---|---|---|
| Assemblies generated from public reads. Assemblies should be public immediately after submission | public | public | – | SUCCESS |
| Assemblies generated from public reads. Assemblies should remain private until 1 July 2028 submission | public | private | --release_date 2028-07-01 |
SUCCESS |
| Bins generated from private reads and assemblies. Bins should be public after submission. User has access to the reads and assemblies via Webin account | private | public | --is_private |
SUCCESS |
| Bins generated from private reads and assemblies. Bins should remain private until 1 July 2028. User has access via Webin account | private | private | --is_private --release_date 2028-07-01 |
SUCCESS |
| MAGs generated from private reads and assemblies. MAGs should be public after submission. User does not have access to the reads and assemblies via Webin account | private | public | – | ERROR (submission can only reference accessible data) |
Third party assemblies (TPA)
A Third PArty (TPA) Assembly record is an assembly or reassembly built from primary sequence data that has already been submitted to an INSDC database (ENA, GenBank, or DDBJ), rather than newly generated sequence data. TPA records must be built entirely from publicly available accessions or public sequencing reads — they cannot incorporate proprietary or unpublished data, and any newly generated sequence they contain must first be released as a primary submission in its own right.
If you use metagenomic_assemblies, mags, or bins mode to submit data assembled from public data you did not generate yourself, use --upload_tpa to flag the submission as a TPA.
See ENA’s data policies for further guidance on when a TPA designation applies to your submission.
reads mode
Prerequisites
In addition to the general prerequisites, for reads mode:
- You need to register the source BioSamples and obtain the sample accessions as described in the ENA documentation. These accessions must be provided in the
sample_accessioncolumn of the samplesheet.
Samplesheet input
You will need to create a samplesheet with information about the raw reads you would like to submit before running the pipeline. Use --input to specify its location. It must be a comma-separated file with the structure that follows assets/schema_input_reads.json.
Example:
id,sample_accession,fastq_1,fastq_2,platform,instrument,library_source,library_selection,library_strategy,insert_size,library_name,descriptionillumina_run_001,SAMEA1234567,data/reads_R1.fastq.gz,data/reads_R2.fastq.gz,ILLUMINA,Illumina HiSeq 2000,GENOMIC,RANDOM,WGS,500,HiSeq_library_001,Illumina sequencing of sample XYZpacbio_run_001,SAMEA7654321,data/pacbio_reads.fastq.gz,,PACBIO_SMRT,PacBio Sequel,GENOMIC,RANDOM,WGS,,PacBio_library_002,Long-read sequencing| Column | Required | Description |
|---|---|---|
id |
Yes | Unique identifier of this particular data entry. Used as an experiment name. |
sample_accession |
Yes | ENA sample accession (starting with SAMEA) of the sample used to generate raw reads. Samples must already be submitted to ENA. |
fastq_1 |
Yes | Path to single-end/paired-end forward reads in FASTQ format (optionally gzipped). |
fastq_2 |
No | Path to reverse reads in FASTQ format for paired-end data (optionally gzipped). Leave empty for single-end reads. |
platform |
Yes | Sequencing platform. Must be one of the ENA controlled vocabulary values listed in ENA documentation. Supported values: ILLUMINA, PACBIO_SMRT, OXFORD_NANOPORE, ION_TORRENT, CAPILLARY, DNBSEQ, ELEMENT, GENAPSYS, GENEMIND, HELICOS, LS454, BGISEQ, ULTIMA, VELA_DIAGNOSTICS. |
instrument |
Yes | Sequencer model, e.g. “Illumina HiSeq 2000”, “PacBio Sequel”, “MinION”. See ENA documentation. |
library_source |
Yes | Library source type. Options: GENOMIC, METAGENOMIC, TRANSCRIPTOMIC, METAGENOMIC SINGLE CELL, TRANSCRIPTOMIC SINGLE CELL, SYNTHETIC, VIRAL RNA, OTHER. ENA documantation. |
library_selection |
Yes | Library selection method. Options: RANDOM, PCR, RANDOM PCR, RT-PCR, MF, cDNA, cDNA_randomPriming, cDNA_oligo_dT, PolyA, Inverse rRNA, ChIP, MNase, DNase, Hybrid Selection, etc. See ENA documentation for complete list. |
library_strategy |
Yes | Library strategy. Options: WGS, WGA, WXS, RNA-Seq, miRNA-Seq, ncRNA-Seq, EST, Hi-C, ATAC-seq, WCS, RAD-Seq, CLONE, AMPLICON, POOLCLONE, etc. See ENA documentation for complete list. |
insert_size |
No | Fragment/insert size for paired-end reads (e.g., 500 for 500 bp inserts). Leave empty if not applicable. |
library_name |
No | Descriptive library name (optional). |
description |
No | Free-text description of the experiment (optional). |
reads parameters and example
reads mode does not add any parameters beyond the common parameters.
Example reads mode upload to TEST server, run command with docker:
nextflow run nf-core/seqsubmit \ -profile docker \ --mode reads \ --input samplesheet_reads.csv \ --submission_study <your_study> \ --webincli_mode submit \ --test_upload \ --outdir reads_submission/Limitations
reads mode does not support the following:
- Reads in non-FASTQ formats: Only reads provided as FASTQ (
.fastq.gz) can be submitted. Other formats (e.g. BAM) are not supported as input.
metagenomic_assemblies mode
Prerequisites
In addition to the general prerequisites, for metagenomic_assemblies mode:
- The raw reads used to generate the assemblies have to be submitted to INSDC/ENA to obtain the corresponding run accessions. Refer to the ENA documentation for details. You can use
seqsubmitinreadsmode to do this. Assigned run accessions must be provided in therun_accessioncolumn of the samplesheet.
Samplesheet input
You will need to create a samplesheet with information about the metagenomic assemblies you would like to submit before running the pipeline. Use --input to specify its location. It must be a comma-separated file with the structure that follows assets/schema_input_assembly.json.
Example:
id,fasta,fastq_1,fastq_2,coverage,run_accession,assembler,assembler_versionassembly_001,data/assembly_001.fasta.gz,data/assembly_001_R1.fastq.gz,data/assembly_001_R2.fastq.gz,,ERR011322,SPAdes,3.15.5assembly_002,data/assembly_002.fasta.gz,,,42.7,ERR011323,MEGAHIT,1.2.9| Column | Required | Description |
|---|---|---|
id |
Yes | A unique identifier for this data entry. Must be globally unique within the input dataset. |
fasta |
Yes | Path to assembly contigs in FASTA format compressed with gzip. |
fastq_1 |
Conditional | Path to single-end/paired-end forward reads in FASTQ format (optionally gzipped). Required if coverage is not provided. |
fastq_2 |
No | Path to the second read file in FASTQ format for paired-end data used to generate the source metagenomic assembly. Leave empty for single-end reads. |
coverage |
Conditional | Estimated sequencing depth of the assembly. If this value is missing, it is computed automatically during pipeline execution when reads are provided. |
run_accession |
Yes | ENA run accession for the reads used to generate the metagenomic assembly. Reads must already be submitted to ENA. |
assembler |
Yes | Name of the assembler software used to generate the assembly, e.g. MEGAHIT, SPAdes, metaSPAdes, Flye, etc. |
assembler_version |
Yes | Version of the assembler software used to generate the assembly, e.g. 1.0.0. |
Provide either read files (fastq_1, optionally fastq_2) or a coverage value for each row. If coverage is missing and reads are provided, the workflow calculates average coverage with CoverM. See the Methods documentation for more information on how coverage is calculated.
metagenomic_assemblies parameters and example
In addition to the common parameters:
| Parameter | Required | Description |
|---|---|---|
--upload_tpa |
No | Mark assemblies as third party assemblies (TPA) when required. Default: false. |
Example metagenomic_assemblies mode upload to TEST server, run command with docker:
nextflow run nf-core/seqsubmit \ -profile docker \ --mode metagenomic_assemblies \ --input samplesheet_assembly.csv \ --submission_study <your_study> \ --webincli_mode submit \ --test_upload \ --outdir assembly_submissionExample metagenomic_assemblies mode upload to LIVE server, run command with docker:
nextflow run nf-core/seqsubmit \ -profile docker \ --mode metagenomic_assemblies \ --input samplesheet_assembly.csv \ --submission_study <your_study> \ --test_upload false \ --webincli_mode submit \ --outdir assemblies_submission/Limitations
metagenomic_assemblies mode does not yet support the following:
-
Co-assemblies: Metagenomic co-assemblies are not supported. The pipeline currently expects each assembly to be derived from a single run. Tracked in issue #61, addressed in PR #66.
-
Submission of an assembly without submitting the raw reads: Assemblies that have no associated reads accession (
run_accessioncolumn in the samplesheet) are not supported, since the pipeline relies on that lineage to build the required metadata. Tracked in issue #29. -
Single-contig assemblies: Assemblies that consist of only one contig cannot be uploaded through this pipeline. ENA classifies these as “chromosomal assemblies”, which follow a different submission procedure with different metadata requirements. If you have a single-contig assembly to submit, please contact ENA support for guidance.
-
Coverage calculation from long reads:
coveragecalculation via CoverM has only been tested and validated with short reads (e.g. Illumina). It has not been tested with long reads (PacBio, Nanopore). Exercise caution when processing data generated from long reads, as issues may occur.
mags and bins modes
Prerequisites
In addition to the general prerequisites, for mags or bins mode:
- Either the raw reads alone, or the raw reads together with the metagenomic assemblies, used to generate the MAGs/bins must be submitted to INSDC/ENA to obtain the corresponding run or assembly accessions. Refer to the ENA documentation for details. You can use the pipeline in
readsandmetagenomic_assembliesmode to do this. Assigned run or assembly accessions must be provided in theaccessioncolumn of the samplesheet.
Samplesheet input
You will need to create a samplesheet with information about the MAGs/bins you would like to submit before running the pipeline. Use --input to specify its location. It must be a comma-separated file with the structure that follows assets/schema_input_genome.json.
Example:
id,fasta,accession,fastq_1,fastq_2,assembly_software,binning_software,binning_parameters,stats_generation_software,completeness,contamination,genome_coverage,metagenome,co-assembly,broad_environment,local_environment,environmental_medium,RNA_presence,NCBI_lineagemag_001,data/mag_001.fasta.gz,SRR24458089,,,SPAdes 3.15.5,MetaBAT2 2.15,default,CheckM2 1.0.1,92.81,1.09,66.04,sediment metagenome,false,marine,cable bacteria,marine sediment,false,d__Bacteria;p__Proteobacteria;s__| Column | Required | Description |
|---|---|---|
id |
Yes | A unique identifier for this data entry. Must be globally unique within the input dataset. |
fasta |
Yes | Path to MAG/bin sequences in FASTA format compressed with gzip. All names of the FASTA files must be unique to prevent pipeline errors. File should contain at least one sequence. |
accession |
Yes | ENA accession of the run or metagenomic assembly used to generate the MAG/bin. Reads or assembly must already be submitted to ENA. |
fastq_1 |
Conditional | Path to single-end/paired-end forward reads in FASTQ format (optionally gzipped) used to generate the source metagenomic assembly. Required if genome_coverage is not provided. |
fastq_2 |
No | Path to reverse reads in FASTQ format for paired-end data (optionally gzipped) used to generate the source metagenomic assembly. Leave empty for single-end reads. |
assembly_software |
Yes | Tool name and version that were used to generate the source metagenomic assembly, e.g. MEGAHIT_v1.0, SPAdes_v4.0.0, metaSPAdes_v3.15.0. |
binning_software |
Yes | Tool name and version that was used to bin data, e.g. MetaBAT2_v1.0, VAMB_2.0, MaxBin2_v1, CONCOCT_v3.0, SemiBin2_v1, COMEBin_v2.3.4, etc. |
binning_parameters |
Yes | Arguments used to bin data different from default, e.g. -min_contig_length 1000, otherwise use ‘default’. |
stats_generation_software |
No | Tool, including version, that was used to calculate completeness and contamination, e.g. CheckM2_v1.0.0. |
completeness |
No | MAG/bin completeness score: the 0<= ratio <= 100 of observed single-copy marker genes to total single-copy marker genes in chosen marker gene set (%). ENA docs: https://ena-docs.readthedocs.io/en/latest/faq/metagenomes.html#how-is-the-quality-of-a-metagenomic-assembly-defined. |
contamination |
No | MAG/bin contamination score: the 0<= ratio <= 100 of observed single-copy marker genes in ≥2 copies to total single-copy marker genes in chosen marker gene set (%). ENA docs: https://ena-docs.readthedocs.io/en/latest/faq/metagenomes.html#how-is-the-quality-of-a-metagenomic-assembly-defined. |
genome_coverage |
Conditional | Estimated average sequencing depth (>0) across the genome. If the value is missing, it is computed automatically during pipeline execution when reads are provided. |
metagenome |
Yes | Registered metagenome taxonomic identifier or name that matches an existing ENA taxonomy entry. It needs to be listed in the taxonomy tree https://www.ebi.ac.uk/ena/browser/view/408169?show=tax-tree (you might need to press “Tax tree - Show” in the right most section of the page). Full list can also be found https://github.com/EBI-Metagenomics/genome_uploader/blob/main/genomeuploader/constants.py#L22. |
co-assembly |
Yes | Whether a co-assembly strategy was used for the initial metagenomic assembly generation. Options: true or false. |
broad_environment |
Yes | Broad ecological context of the sample, for example ‘marine biome’, ‘desert biome’. It is recommended to use subclasses of EnvO ‘biome’ class (http://purl.obolibrary.org/obo/ENVO_00000428). Documentation: https://github.com/EnvironmentOntology/envo/wiki/Using-ENVO-with-MIxS. |
local_environment |
Yes | Local environmental context of the sample, for example ‘tropical dry broadleaf forest biome’, ‘marine abyssal zone biome’. It is recommended to use EnvO terms which are of smaller spatial grain than your entry for “broad-scale environmental context”. Documentation: https://github.com/EnvironmentOntology/envo/wiki/Using-ENVO-with-MIxS. |
environmental_medium |
Yes | Material surrounding and in contact with the sample, for example ‘mucus’, ‘lake water’. It is recommended to use subclasses of EnvO ‘environmental material’ class (http://purl.obolibrary.org/obo/ENVO_00010483). Documentation: https://github.com/EnvironmentOntology/envo/wiki/Using-ENVO-with-MIxS. |
RNA_presence |
No | Presence or absence of the 23S, 16S, and 5S rRNA genes and at least 18 tRNAs. This is used for MISAG/MIMAG assembly quality classification. Options: true or false. |
NCBI_lineage |
No | Full NCBI lineage - format: x;y;z. For example, the lineage for E. coli can be: ‘Bacteria;Pseudomonadati;Pseudomonadota;Gammaproteobacteria;Enterobacterales;Enterobacteriaceae;Escherichia’ or ‘2;1224;1236;91347;543;561;562’. For more info check https://www.ncbi.nlm.nih.gov/datasets/docs/v2/data-processing/taxonomy-processing/taxonomy/. |
If genome_coverage, stats_generation_software, completeness, contamination, RNA_presence, or NCBI_lineage are missing, the workflow can calculate or infer them when the required inputs are available. See the Methods documentation for more information on how metadata statistics are obtained.
Preparing the CheckM2 and CAT_pack databases
mags and bins submission modes use CheckM2 and CAT_pack tools that require specialized databases for completeness/contamination assessment and taxonomy assignment.
You can either provide pre-existing databases or let the pipeline prepare them during execution.
As database preparation can take significant time, we strongly recommend downloading them locally and storing them in a local cache folder for reuse across runs. In particular, the CAT_pack database is extremely large and may take a long time to download and compute.
-
CheckM2:
- provide the path to a local database with
--checkm2_db, otherwise the pipeline downloads the version specified with--checkm2_db_download_id(by default Zenodo accession14897628).
- provide the path to a local database with
-
CAT_pack:
- provide the path to a local database (containing
tax/anddb/folders or atar.gzarchive) with--cat_db, otherwise the pipeline builds CAT_pack DB from NCBI non-redundant protein database (nr).
- provide the path to a local database (containing
See the CAT_pack documentation and CheckM2 documentation for more details on usage and creation of databases.
Databases created/downloaded by the pipeline are published under:
<output_dir>/databases/. In subsequent pipeline runs you can reuse them using --cat_db <output_dir>/databases/cat_pack/ and --checkm2_db <output_dir>/databases/checkm2/.
mags and bins parameters and example
In addition to the common parameters:
| Parameter | Required | Description |
|---|---|---|
--upload_tpa |
No | Mark assemblies as third party assemblies (TPA) when required. Default: false. |
--checkm2_db |
No | Path to a pre-downloaded CheckM2 database. If omitted, downloads the version set by --checkm2_db_download_id. Default: 14897628 (Zenodo accession). |
--cat_db |
No | Path to a local CAT_pack database. If omitted, builds CAT_pack DB from NCBI non-redundant protein database (nr). |
Example mags mode upload to TEST server, run command with docker:
nextflow run nf-core/seqsubmit \ -profile docker \ --mode mags \ --input samplesheet_genomes.csv \ --submission_study <your_study> \ --centre_name <your_centre> \ --webincli_mode submit \ --test_upload \ --outdir mags_submission/Limitations
mags and bins modes do not yet support the following:
-
Co-assemblies: MAGs/bins generated from co-assemblies are not supported. The pipeline currently expects each MAG/bin to be derived from an assembly generated from a single run. Tracked in issue #61.
-
Eukaryotic and viral bins/MAGs: Submitting eukaryotic or viral genomes that require additional metadata generation is not supported. For such genomes tRNA and rRNA prediction, quality assessment (completeness/contamination estimation) and taxonomy assignment are not implemented. If all the required metadata (
completeness,contamination,stats_generation_software,RNA_presenceandNCBI_lineage) is already provided in the samplesheet, eukaryotic and viral bins/MAGs can still be submitted normally. Tracked in issue #40 (eukaryotic) and issue #63 (viral). -
Submission of a MAG/bin without submitting the assembly or raw reads: If a MAG/bin cannot be traced back to an assembly accession or a reads accession — i.e. only a sample accession is available — it cannot currently be submitted, since the pipeline relies on that lineage to build the required metadata. Tracked in issue #87.
-
Single-contig MAGs/bins: MAGs/bins that consist of only one contig cannot be uploaded through this pipeline. ENA classifies these as “chromosomal assemblies”, which follow a different submission procedure with different metadata requirements. If you have a single-contig MAG/bin to submit, please contact ENA support for guidance.
-
Coverage calculation from long reads:
genome_coveragecalculation via CoverM has only been tested and validated with short reads (e.g. Illumina). It has not been tested with long reads (PacBio, Nanopore). Exercise caution when processing data generated from long reads, as issues may occur.
Scalability
Some processes in this pipeline are resource intensive — in particular coverage calculation (CoverM), quality assessment (CheckM2), and taxonomic classification of MAGs/bins (BAT). For real-world data, these steps should be run on an HPC cluster or another compute environment with sufficient CPU, memory, and job scheduling capacity, rather than on a single local machine.
Depending on the resources available on your machine or cluster, you will likely need to adapt the Nextflow configuration to limit the maximum number of concurrently running jobs and other resource settings using resourceLimits in a custom config, so that the pipeline does not try to claim more resources than are actually available. See the nf-core configuration documentation for guidance on writing a custom config for your infrastructure.
When submitting a large number of records, be aware that ENA recommends limiting submissions to 5000 per day to avoid overfilling their processing queue. If you need to submit more than this, consider splitting your samplesheet and spreading the submission across several days.
Running the pipeline
General command template:
nextflow run nf-core/seqsubmit \ -profile <docker/singularity/...> \ --mode <mags|bins|metagenomic_assemblies|reads> \ --input <samplesheet.csv> \ --centre_name <your_centre> \ --submission_study <your_study> \ --outdir <outdir>Parameters common to all modes:
| Parameter | Required | Description |
|---|---|---|
--mode |
Yes | Type of the data to be submitted. Options: mags, bins, metagenomic_assemblies, reads. |
--input |
Yes | Path to samplesheet describing the data to be submitted (supported formats: csv, tsv, yaml, yml, json). Columns/fields depend on the pipeline mode. See usage docs. |
--outdir |
Yes | Path to the output directory for pipeline results. You have to use absolute paths to storage on Cloud infrastructure. |
--submission_study OR --study_metadata |
Yes (one of) | ENA study accession (PRJ/ERP) to submit the data to OR metadata file in JSON/TSV/CSV format to register a new study. |
--centre_name |
Yes | Name of the submitter’s organisation (mandatory for broker accounts). |
--test_upload |
No | Submit to the ENA TEST server instead of the LIVE server. Use that flag for development purposes or for validation of your submissions. Submission would be done to TEST ENA server instead of LIVE server. TEST server holds data 24h and removes afterwords. LIVE server does not have option to modify your submission, you can only suppress data and re-upload. Default: true. |
--webincli_mode |
No | Webin-CLI mode for ENA interaction: submit uploads data, validate performs validation only. validate mode checks correctness of manifest files, data access and validity. submit mode does validation and push data to ENA server. Default: submit. |
--is_private |
No | Use if you are referencing private data accessions in your submission. Set to true when the referenced project/reads/assembly are still private in ENA, so metadata is fetched via authenticated access. Does NOT affect the privacy of your own submission, use –release_date for that. Default: false. |
--release_date |
No | Use if you want to keep your data private in ENA after submission until a particular date (format: YYYY-MM-DD). Data stays private until this date, then is automatically released and indexed by ENA. Must be no more than 2 years from today. Omit to release the study publicly immediately. |
Each mode also has additional parameters and example commands — see its own “<mode> parameters and example” subsection above.
If you wish to repeatedly use the same parameters for multiple runs, rather than specifying each flag in the command, you can specify these in a params file.
Pipeline settings can be provided in a yaml or json file via -params-file <file>.
Do not use -c <file> to specify parameters as this will result in errors. Custom config files specified with -c must only be used for tuning process resource specifications, other infrastructural tweaks (such as output directories), or module arguments (args).
The above pipeline run specified with a params file in yaml format:
nextflow run nf-core/seqsubmit -profile docker -params-file params.yamlwith:
input: './samplesheet.csv'outdir: './results/'<...>You can also generate such YAML/JSON files via nf-core/launch.
Updating the pipeline
When you run the above command, Nextflow automatically pulls the pipeline code from GitHub and stores it as a cached version. When running the pipeline after this, it will always use the cached version if available - even if the pipeline has been updated since. To make sure that you’re running the latest version of the pipeline, make sure that you regularly update the cached version of the pipeline:
nextflow pull nf-core/seqsubmitReproducibility
It is a good idea to specify the pipeline version when running the pipeline on your data. This ensures that a specific version of the pipeline code and software are used when you run your pipeline. If you keep using the same tag, you’ll be running the same version of the pipeline, even if there have been changes to the code since.
First, go to the nf-core/seqsubmit releases page and find the latest pipeline version - numeric only (eg. 1.3.1). Then specify this when running the pipeline with -r (one hyphen) - eg. -r 1.3.1. Of course, you can switch to another version by changing the number after the -r flag.
This version number will be logged in reports when you run the pipeline, so that you’ll know what you used when you look back in the future. For example, at the bottom of the MultiQC reports.
To further assist in reproducibility, you can use share and reuse parameter files to repeat pipeline runs with the same settings without having to write out a command with every single parameter.
If you wish to share such profile (such as upload as supplementary material for academic publications), make sure to NOT include cluster specific paths to files, nor institutional specific profiles.
Core Nextflow arguments
These options are part of Nextflow and use a single hyphen (pipeline parameters use a double-hyphen)
-profile
Use this parameter to choose a configuration profile. Profiles can give configuration presets for different compute environments.
Several generic profiles are bundled with the pipeline which instruct the pipeline to use software packaged using different methods (Docker, Singularity, Podman, Shifter, Charliecloud, Apptainer, Conda) - see below.
We highly recommend the use of Docker or Singularity containers for full pipeline reproducibility, however when this is not possible, Conda is also supported.
The pipeline also dynamically loads configurations from https://github.com/nf-core/configs when it runs, making multiple config profiles for various institutional clusters available at run time. For more information and to check if your system is supported, please see the nf-core/configs documentation.
Note that multiple profiles can be loaded, for example: -profile test,docker - the order of arguments is important!
They are loaded in sequence, so later profiles can overwrite earlier profiles.
If -profile is not specified, the pipeline will run locally and expect all software to be installed and available on the PATH. This is not recommended, since it can lead to different results on different machines dependent on the computer environment.
test- A profile with a complete configuration for automated testing
- Includes links to test data so needs no other parameters
docker- A generic configuration profile to be used with Docker
singularity- A generic configuration profile to be used with Singularity
podman- A generic configuration profile to be used with Podman
shifter- A generic configuration profile to be used with Shifter
charliecloud- A generic configuration profile to be used with Charliecloud
apptainer- A generic configuration profile to be used with Apptainer
wave- A generic configuration profile to enable Wave containers. Use together with one of the above (requires Nextflow
24.03.0-edgeor later).
- A generic configuration profile to enable Wave containers. Use together with one of the above (requires Nextflow
conda- A generic configuration profile to be used with Conda. Please only use Conda as a last resort i.e. when it’s not possible to run the pipeline with Docker, Singularity, Podman, Shifter, Charliecloud, or Apptainer.
-resume
Specify this when restarting a pipeline. Nextflow will use cached results from any pipeline steps where the inputs are the same, continuing from where it got to previously. For input to be considered the same, not only the names must be identical but the files’ contents as well. For more info about this parameter, see this blog post.
You can also supply a run name to resume a specific run: -resume [run-name]. Use the nextflow log command to show previous run names.
-c
Specify the path to a specific config file (this is a core Nextflow command). See the nf-core website documentation for more information.
Custom configuration
Resource requests
Whilst the default requirements set within the pipeline will hopefully work for most people and with most input data, you may find that you want to customise the compute resources that the pipeline requests. Each step in the pipeline has a default set of requirements for number of CPUs, memory and time. For most of the pipeline steps, if the job exits with any of the error codes specified here it will automatically be resubmitted with higher resources request (2 x original, then 3 x original). If it still fails after the third attempt then the pipeline execution is stopped.
To change the resource requests, please see the max resources and customise process resources section of the nf-core website.
Custom Containers
In some cases, you may wish to change the container or conda environment used by a pipeline steps for a particular tool. By default, nf-core pipelines use containers and software from the biocontainers or bioconda projects. However, in some cases the pipeline specified version maybe out of date.
To use a different container from the default container or conda environment specified in a pipeline, please see the updating tool versions section of the nf-core website.
Custom Tool Arguments
A pipeline might not always support every possible argument or option of a particular tool used in pipeline. Fortunately, nf-core pipelines provide some freedom to users to insert additional parameters that the pipeline does not include by default.
To learn how to provide additional arguments to a particular tool of the pipeline, please see the customising tool arguments section of the nf-core website.
nf-core/configs
In most cases, you will only need to create a custom config as a one-off but if you and others within your organisation are likely to be running nf-core pipelines regularly and need to use the same settings regularly it may be a good idea to request that your custom config file is uploaded to the nf-core/configs git repository. Before you do this please can you test that the config file works with your pipeline of choice using the -c parameter. You can then create a pull request to the nf-core/configs repository with the addition of your config file, associated documentation file (see examples in nf-core/configs/docs), and amending nfcore_custom.config to include your custom profile.
See the main Nextflow documentation for more information about creating your own configuration files.
If you have any questions or issues please send us a message on Slack on the #configs channel.
Running in the background
Nextflow handles job submissions and supervises the running jobs. The Nextflow process must run until the pipeline is finished.
The Nextflow -bg flag launches Nextflow in the background, detached from your terminal so that the workflow does not stop if you log out of your session. The logs are saved to a file.
Alternatively, you can use screen / tmux or similar tool to create a detached session which you can log back into at a later time.
Some HPC setups also allow you to run nextflow within a cluster job submitted your job scheduler (from where it submits more jobs).
Nextflow memory requirements
In some cases, the Nextflow Java virtual machines can start to request a large amount of memory.
We recommend adding the following line to your environment to limit this (typically in ~/.bashrc or ~./bash_profile):
NXF_OPTS='-Xms1g -Xmx4g'