Downloads a nf-core pipeline to the local file system.*columns: str | ProgressColumn, console: Console | None = None, auto_refresh: bool = True, refresh_per_second: float = 10, speed_estimate_period: float = 30.0, transient: bool = False, redirect_stdout: bool = True, redirect_stderr: bool = True, get_time: Callable[[], float] | None = None, disable: bool = False, expand: bool = False)

Bases: Progress

Custom Progress bar class, allowing us to have two progress bars with different columns / layouts.


Get a number of renderables for the progress display., release=None, outdir=None, compress_type=None, force=False, container=None, singularity_cache_only=False, parallel_downloads=4)

Bases: object

Downloads a nf-core workflow from GitHub to the local file system.

Can also download its Singularity container image if required.

  • Parameters:
    • pipeline (str) – A nf-core pipeline name.
    • release (str) – The workflow release version to download, like 1.0. Defaults to None.
    • singularity (bool) – Flag, if the Singularity container should be downloaded as well. Defaults to False.
    • outdir (str) – Path to the local download directory. Defaults to None.


Take the downloaded files and make a compressed .tar.gz archive.


Downloads the centralised config profiles from nf-core/configs to self.outdir.


Downloads workflow files from GitHub to the self.outdir.


Starts a nf-core workflow download.


Find container image names for workflow.

Starts by using nextflow config to pull out any process.container declarations. This works for DSL1.

Second, we look for DSL2 containers. These can’t be found with nextflow config at the time of writing, so we scrape the pipeline files.


Find specified release / branch hash


Loop through container names and download Singularity images


Ask user if we should compress the downloaded files


Prompt whether to download container images or not


Prompt for the pipeline name if not set with a flag


Prompt for pipeline release / branch


Ask if we should only use $NXF_SINGULARITY_CACHEDIR without copying into target


Prompt about using $NXF_SINGULARITY_CACHEDIR if not already set

singularity_copy_cache_image(container, out_path, cache_path)

Copy Singularity image from NXF_SINGULARITY_CACHEDIR to target folder.

singularity_download_image(container, out_path, cache_path, progress)

Download a singularity image from the web.

Use native Python to download the file.

  • Parameters:
    • container (str) – A pipeline’s container name. Usually it is of similar format to
    • out_path (str) – The final target output path
    • cache_path (str*,* None) – The NXF_SINGULARITY_CACHEDIR path if set, None if not
    • progress (Progress) – Rich progress bar instance to add tasks to.


Check Singularity cache for image, copy to destination folder if found.

  • Parameters: container (str) – A pipeline’s container name. Can be direct download URL or a Docker Hub repository ID.
  • Returns: Returns True if we have the image in the target location. : Returns a download path if not.
  • Return type: results (bool, str)

singularity_pull_image(container, out_path, cache_path, progress)

Pull a singularity image using singularity pull

Attempt to use a local installation of singularity to pull the image.

  • Parameters: container (str) – A pipeline’s container name. Usually it is of similar format to nfcore/name:version.
  • Raises: Various exceptions possible from subprocess execution of Singularity.

validate_md5(fname, expected=None)

Calculates the md5sum for a file on the disk and validate with expected.

  • Parameters:
    • fname (str) – Path to a local file.
    • expected (str) – The expected md5sum.
  • Raises: IOError**,** if the md5sum does not match the remote sum.


Edit the downloaded nextflow.config file to use the local config files