Condaenv
This commit is contained in:
parent
7a615af575
commit
dd2c1efd91
@ -7,12 +7,36 @@ image: ${IMAGE}
|
|||||||
variables:
|
variables:
|
||||||
BASEIMAGE: ${CI_REGISTRY}/${CURRENT_TEMPLATE_IMAGE}
|
BASEIMAGE: ${CI_REGISTRY}/${CURRENT_TEMPLATE_IMAGE}
|
||||||
|
|
||||||
|
.install-nextflow: &install-nextflow |
|
||||||
|
wget -qO- https://get.nextflow.io | bash
|
||||||
|
|
||||||
|
.install-conda: &install-conda |
|
||||||
|
wget -q https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
|
||||||
|
bash Miniconda3-latest-Linux-x86_64.sh -b -p ./miniconda
|
||||||
|
source ./miniconda/bin/activate
|
||||||
|
conda init
|
||||||
|
|
||||||
|
|
||||||
|
conda-run:
|
||||||
|
image: ubuntu:20.04
|
||||||
|
stage: build_and_run
|
||||||
|
before_script:
|
||||||
|
- apt update && apt install -y wget default-jre
|
||||||
|
- *install-nextflow
|
||||||
|
- *install-conda
|
||||||
|
script:
|
||||||
|
- ./nextflow run workflow.nf
|
||||||
|
-w ${OUTPUT}/workspace
|
||||||
|
-profile conda
|
||||||
|
--reads test_data/reads.fq.gz
|
||||||
|
--out_dir ${OUTPUT}
|
||||||
|
|
||||||
|
|
||||||
build-image:
|
build-image:
|
||||||
stage: build_and_run
|
stage: build_and_run
|
||||||
variables:
|
|
||||||
before_script:
|
before_script:
|
||||||
- apk add wget openjdk11 bash
|
- apk add wget openjdk11 bash
|
||||||
- wget -qO- https://get.nextflow.io | bash
|
- *install-nextflow
|
||||||
script:
|
script:
|
||||||
- echo ${CI_BUILD_TOKEN} | docker login --username gitlab-ci-token --password-stdin ${CI_REGISTRY}
|
- echo ${CI_BUILD_TOKEN} | docker login --username gitlab-ci-token --password-stdin ${CI_REGISTRY}
|
||||||
- TAG="${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHORT_SHA}"
|
- TAG="${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHORT_SHA}"
|
||||||
|
|||||||
10
Dockerfile
10
Dockerfile
@ -1,13 +1,13 @@
|
|||||||
ARG BASEIMAGE=epi2melabs/base-workflow-image:latest
|
ARG BASEIMAGE=epi2melabs/base-workflow-image:latest
|
||||||
FROM $BASEIMAGE
|
FROM $BASEIMAGE
|
||||||
|
|
||||||
# Minimal install for example purposes
|
# Minimal install for example purposes
|
||||||
|
COPY environment.yaml $HOME/environment.yaml
|
||||||
RUN \
|
RUN \
|
||||||
. $CONDA_DIR/etc/profile.d/mamba.sh \
|
. $CONDA_DIR/etc/profile.d/mamba.sh \
|
||||||
&& micromamba activate \
|
&& micromamba activate \
|
||||||
&& micromamba install -y \
|
&& micromamba install --help \
|
||||||
pysam \
|
&& micromamba install --file $HOME/environment.yaml \
|
||||||
-c anaconda -c conda-forge -c bioconda -q -y \
|
|
||||||
&& fix-permissions $CONDA_DIR \
|
&& fix-permissions $CONDA_DIR \
|
||||||
&& fix-permissions $HOME
|
&& fix-permissions $HOME
|
||||||
|
|
||||||
|
|||||||
43
README.md
43
README.md
@ -1,12 +1,19 @@
|
|||||||
# Workflow template
|
# Workflow template
|
||||||
|
|
||||||
This repository contains a nextflow workflow template and associated
|
This repository contains a Nextflow workflow template and associated Docker
|
||||||
container build.
|
container build. The workflow also supports using conda environments as an
|
||||||
|
alternative software isolation method to Docker.
|
||||||
|
|
||||||
## Quickstart
|
## Quickstart
|
||||||
|
|
||||||
|
### Building the container
|
||||||
|
|
||||||
|
> This step is not necessary if you intend to run the workflow using
|
||||||
|
> conda environments.
|
||||||
|
|
||||||
|
The Docker container image can be built with the following command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# build the container
|
|
||||||
CONTAINER_TAG=template-workflow
|
CONTAINER_TAG=template-workflow
|
||||||
docker build \
|
docker build \
|
||||||
-t ${CONTAINER_TAG} -f Dockerfile \
|
-t ${CONTAINER_TAG} -f Dockerfile \
|
||||||
@ -16,11 +23,17 @@ docker build \
|
|||||||
|
|
||||||
The `BASEIMAGE` argument here can be changed to use an alternative image.
|
The `BASEIMAGE` argument here can be changed to use an alternative image.
|
||||||
|
|
||||||
|
### Running the workflow
|
||||||
|
|
||||||
The template includes a simple workflow that outputs a file with the lengths
|
The template includes a simple workflow that outputs a file with the lengths
|
||||||
of sequences contained in a .fastq.gz file.
|
of sequences contained in a .fastq.gz file.
|
||||||
|
|
||||||
|
**Running the workflow with Docker containers**
|
||||||
|
|
||||||
|
To run the workflow using Docker containers supply the `-profile standard`
|
||||||
|
argument to `nextflow run`:
|
||||||
|
|
||||||
```
|
```
|
||||||
# run the pipeline with the test data
|
|
||||||
OUTPUT=template-workflow
|
OUTPUT=template-workflow
|
||||||
nextflow run workflow.nf \
|
nextflow run workflow.nf \
|
||||||
-w ${OUTPUT}/workspace \
|
-w ${OUTPUT}/workspace \
|
||||||
@ -32,3 +45,25 @@ nextflow run workflow.nf \
|
|||||||
The output of the pipeline will be found in `./template-workflow` for the above
|
The output of the pipeline will be found in `./template-workflow` for the above
|
||||||
example. This directory contains the nextflow working directories alongside
|
example. This directory contains the nextflow working directories alongside
|
||||||
the two primary outputs of the pipeline.
|
the two primary outputs of the pipeline.
|
||||||
|
|
||||||
|
**Using conda environments**
|
||||||
|
|
||||||
|
To run the workflow backed by conda environments, simply provide the
|
||||||
|
`-profile conda` argument to `nextflow run`.
|
||||||
|
|
||||||
|
```
|
||||||
|
# run the pipeline with the test data
|
||||||
|
OUTPUT=template-workflow
|
||||||
|
nextflow run workflow.nf \
|
||||||
|
-w ${OUTPUT}/workspace \
|
||||||
|
-profile conda \
|
||||||
|
--reads test_data/reads.fq.gz \
|
||||||
|
--out_dir ${OUTPUT}
|
||||||
|
```
|
||||||
|
|
||||||
|
This will create a conda environment with all required software within the
|
||||||
|
workspace directory. When running multiple analyses on distinct datasets
|
||||||
|
it may not be desirable to have Nextflow create a conda environment for each
|
||||||
|
analysis. To avoid the situation editing the file `nextflow.config` will
|
||||||
|
be necessary. Search for the term `cacheDir` and set this to a directory
|
||||||
|
where you wish the conda environment to be placed.
|
||||||
|
|||||||
7
environment.yaml
Normal file
7
environment.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
name: epi2melabs-nf-template-workflow
|
||||||
|
channels:
|
||||||
|
- bioconda
|
||||||
|
- conda-forge
|
||||||
|
- defaults
|
||||||
|
dependencies:
|
||||||
|
- pysam
|
||||||
@ -1,3 +1,14 @@
|
|||||||
|
//
|
||||||
|
// Notes to End Users.
|
||||||
|
//
|
||||||
|
// The workflow should run without editing this configuration file,
|
||||||
|
// however there may be instances in which you wish to edit this
|
||||||
|
// file for compute performance or other reasons. Please see:
|
||||||
|
//
|
||||||
|
// https://nextflow.io/docs/latest/config.html#configuration
|
||||||
|
//
|
||||||
|
// for further help editing this file.
|
||||||
|
|
||||||
|
|
||||||
process {
|
process {
|
||||||
withLabel:containerCPU {
|
withLabel:containerCPU {
|
||||||
@ -16,4 +27,18 @@ profiles {
|
|||||||
runOptions = "--user \$(id -u):\$(id -g) --group-add 100"
|
runOptions = "--user \$(id -u):\$(id -g) --group-add 100"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// profile using conda environments rather than docker
|
||||||
|
// containers
|
||||||
|
conda {
|
||||||
|
docker {
|
||||||
|
enabled = false
|
||||||
|
}
|
||||||
|
process {
|
||||||
|
conda = "environment.yaml"
|
||||||
|
}
|
||||||
|
conda {
|
||||||
|
cacheDir = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user