Skip to content

nf-schema

A Nextflow plugin to work with validation of pipeline parameters and sample sheets.

Info

nf-schema is the new version of the now deprecated nf-validation. Please follow the migration guide to migrate your code to this new version.

Introduction

This Nextflow plugin provides functionality that can be used in a Nextflow pipeline to work with parameter and sample sheet schema. The added functionality is:

  • ๐Ÿ“– Print usage instructions to the terminal (for use with --help)
  • โœ๏ธ Print log output showing parameters with non-default values
  • โœ… Validate supplied parameters against the pipeline schema
  • ๐Ÿ“‹ Validate the contents of supplied sample sheet files
  • ๐Ÿ› ๏ธ Create a type-casted list from a parsed sample sheet

Supported sample sheet formats are CSV, TSV, JSON and YAML.

Quick Start

Declare the plugin in your Nextflow pipeline configuration file:

nextflow.config
plugins {
  id 'nf-schema@2.2.0'
}

This is all that is needed - Nextflow will automatically fetch the plugin code at run time.

[!NOTE] The snippet above will always try to install the specified version. We encourage always pinning the plugin version to make sure the used pipeline will keep working when a new version of nf-schema with breaking changes has been released.

You can now include the plugin helper functions into your Nextflow pipeline:

main.nf
include { validateParameters; paramsSummaryLog; samplesheetToList } from 'plugin/nf-schema'

// Validate input parameters
validateParameters()

// Print summary of supplied parameters
log.info paramsSummaryLog(workflow)

// Create a new channel of metadata from a sample sheet passed to the pipeline through the --input parameter
ch_input = Channel.fromList(samplesheetToList(params.input, "assets/schema_input.json"))

Or enable the creation of the help message (using --help) in the configuration file:

nextflow.config
validation {
  help {
    enabled: true
  }
}

Dependencies

Slack channel

There is a dedicated nf-schema Slack channel in the Nextflow Slack workspace.

Credits

This plugin was written based on code initially written within the nf-core community, as part of the nf-core pipeline template.

We would like to thank the key contributors who include (but are not limited to):