Skip to content

Nextflow workflow syntax highlighting and snippets for Sublime Text 4

License

Notifications You must be signed in to change notification settings

peterk87/sublime-nextflow

Repository files navigation

nf-core/sublime

Nextflow and nf-core workflow completions, commands, syntax highlighting and snippets for Sublime Text 4

  • ⚠️WARNING⚠️: Sublime Text 3 is no longer supported by this package as of version 1.0.0. Only Sublime Text 4 is supported since this package requires Python 3.8 and new features in ST4.
  • ❗NOTE❗: Only DSL-2 Nextflow workflows are supported by this package.

This package provides Nextflow workflow language:

  • completions (params., conda, <PROCESS/WORKFLOW>.out.<emit name>)
  • informative popups for processes and sub-workflows
  • commands (insert container directive, insert module import statement)
  • syntax highlighting
  • snippets

Essentially, this package tries to make Nextflow workflow development a bit easier especially when trying to develop nf-core conventions and best practices for developing Nextflow pipelines.

Nextflow completions and commands

Process module include command

  • ctrl+l,p in an .nf file where you want to import your process

  • select the process you wish to import
  • something like the following will be inserted
include { MAKE_BED_MASK } from '../modules/local/make_bed_mask' addParams( options: modules['make_bed_mask'] )

The addParams( options: modules['make_bed_mask'] ) may not be needed and can be removed; it assumes that you have a conf/modules.config with a map of your module args, publish_dir, etc (see nf-core/modules for more info).

Workflow params

NOTE: Completions and info popups for params depend on a valid nextflow_schema.json in your workflow root directory. Example nextflow_schema.json for nf-core/viralrecon workflow.

Navigate cursor to a params.<variable> to show a popup with info pulled from the nextflow_schema.json for that workflow parameter.

Conda completion

NOTE: Conda must be installed along with any channels (e.g. bioconda, conda-forge) to get packages information (needs to be able to run conda search).

  • Open the command palette (ctrl+shift+p) and run the Nextflow: Fetch Conda packages information command to fetch the latest Conda package info (runs conda search; may take a while).
  • In your process definition, inside the conda directive string press ctrl+space to bring up the completion list. This may have a little delay since the package list may be very large.
process PANGOLIN {
  conda '<press ctrl+space to bring up completion list>'
}

Process output channel completion

Get process named output (i.e. using the emit option) completions after typing <PROCESS_NAME>.out..

  • completion shows what's on the channel as well!

Process output channel popup

Show useful info about what output the a process is emitting.

Container directive insert command

This command inserts similar code to what you'd find in an nf-core modules process definition with respect to process container directives. The Biocontainers information is pulled from the Singularity images https://depot.galaxyproject.org/singularity/ and cached as a Python pickle file. Docker container image tags point to the Biocontainers Quay.io page.

  • Open the command palette (ctrl+shift+p) and run the Nextflow: Fetch Biocontainers information command to fetch the latest Biocontainers list fetched from
  • In your process definition, press ctrl+l,c, search for the container you're interested in

  • Select the program and version you're interested in to output the following:
if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) {
  container 'https://depot.galaxyproject.org/singularity/fastqc:0.11.9--hdfd78af_1'
} else {
  container 'quay.io/biocontainers/fastqc:0.11.9--hdfd78af_1'
}

Nextflow Syntax Highlighting

Nextflow syntax highlighting extends Sublime Text 4's Groovy syntax with highlighting of:

  • imports (DSL-2 modules)
  • workflow definitions
  • process definitions
  • channel highlighting based on matching ch_*
  • some invalid syntax checks (into channel in input tag and from channel in output tag)
  • highlighting special Nextflow functions and variables (workflow, params, task, etc)

Process syntax highlighting and scoping allows one to easily go to the definition or usages of a process (ctrl+shift+g keyboard shortcut):

Nextflow Snippets

Type one of the following and press TAB:

  • !env: #!/usr/bin/env nextflow
  • proc: process snippet
  • tag: tag process directive snippet
  • pub: publishDir process directive snippet
  • conda: conda process directive snippet
  • illumina: Illumina paired-end reads file pairs channel
  • cpus: insert "${task.cpus}" into a process script
  • script_path: specify user script (e.g. Python script) to use from scripts/ directory in workflow base directory
  • info: log.info snippet
  • done: on workflow complete or error message

Changelog

1.1.0 - [2022-05-13]

Added:

  • more informative popups for showing info about process output so it's easier to select the correct output channel without referencing the process code.
  • subworkflow completions and info popups about take and emit channels
  • conda directive snippet

Fixed:

  • comment toggling

1.0.0 - [2021-06-30]

  • Added syntax highlighting for Nextflow DSL-2
  • Added completions and commands for workflow params, PROCESS.out., conda, container, module include
  • Removed some not very useful snippets

0.1.0-alpha.1 - [2019-03-27]

  • Initial release with Groovy-based syntax highlighting and basic snippets

License

MIT License

Copyright (c) Peter Kruczkiewicz