update ensemblvep and snpeff modules

This commit is contained in:
MaxUlysse 2022-05-05 12:57:14 +02:00
parent 6bb9be38c5
commit 40dd662fd2
21 changed files with 149 additions and 125 deletions

View file

@ -8,13 +8,14 @@ LABEL \
COPY environment.yml / COPY environment.yml /
RUN conda env create -f /environment.yml && conda clean -a RUN conda env create -f /environment.yml && conda clean -a
# Add conda installation dir to PATH (instead of doing 'conda activate')
ENV PATH /opt/conda/envs/nf-core-vep-104.3/bin:$PATH
# Setup default ARG variables # Setup default ARG variables
ARG GENOME=GRCh38 ARG GENOME=GRCh38
ARG SPECIES=homo_sapiens ARG SPECIES=homo_sapiens
ARG VEP_VERSION=99 ARG VEP_VERSION=104
ARG VEP_TAG=104.3
# Add conda installation dir to PATH (instead of doing 'conda activate')
ENV PATH /opt/conda/envs/nf-core-vep-${VEP_TAG}/bin:$PATH
# Download Genome # Download Genome
RUN vep_install \ RUN vep_install \
@ -27,4 +28,4 @@ RUN vep_install \
--NO_BIOPERL --NO_HTSLIB --NO_TEST --NO_UPDATE --NO_BIOPERL --NO_HTSLIB --NO_TEST --NO_UPDATE
# Dump the details of the installed packages to a file for posterity # Dump the details of the installed packages to a file for posterity
RUN conda env export --name nf-core-vep-104.3 > nf-core-vep-104.3.yml RUN conda env export --name nf-core-vep-${VEP_TAG} > nf-core-vep-${VEP_TAG}.yml

View file

@ -10,11 +10,12 @@ build_push() {
VEP_TAG=$4 VEP_TAG=$4
docker build \ docker build \
. \
-t nfcore/vep:${VEP_TAG}.${GENOME} \ -t nfcore/vep:${VEP_TAG}.${GENOME} \
software/vep/. \
--build-arg GENOME=${GENOME} \ --build-arg GENOME=${GENOME} \
--build-arg SPECIES=${SPECIES} \ --build-arg SPECIES=${SPECIES} \
--build-arg VEP_VERSION=${VEP_VERSION} --build-arg VEP_VERSION=${VEP_VERSION} \
--build-arg VEP_TAG=${VEP_TAG}
docker push nfcore/vep:${VEP_TAG}.${GENOME} docker push nfcore/vep:${VEP_TAG}.${GENOME}
} }

View file

@ -13,6 +13,7 @@ process ENSEMBLVEP {
val species val species
val cache_version val cache_version
path cache path cache
path extra_files
output: output:
tuple val(meta), path("*.ann.vcf"), emit: vcf tuple val(meta), path("*.ann.vcf"), emit: vcf

View file

@ -10,17 +10,6 @@ tools:
homepage: https://www.ensembl.org/info/docs/tools/vep/index.html homepage: https://www.ensembl.org/info/docs/tools/vep/index.html
documentation: https://www.ensembl.org/info/docs/tools/vep/script/index.html documentation: https://www.ensembl.org/info/docs/tools/vep/script/index.html
licence: ["Apache-2.0"] licence: ["Apache-2.0"]
params:
- use_cache:
type: boolean
description: |
Enable the usage of containers with cache
Does not work with conda
- vep_tag:
type: value
description: |
Specify the tag for the container
https://hub.docker.com/r/nfcore/vep/tags
input: input:
- meta: - meta:
type: map type: map
@ -47,6 +36,10 @@ input:
type: file type: file
description: | description: |
path to VEP cache (optional) path to VEP cache (optional)
- extra_files:
type: tuple
description: |
path to file(s) needed for plugins (optional)
output: output:
- vcf: - vcf:
type: file type: file

View file

@ -8,15 +8,16 @@ LABEL \
COPY environment.yml / COPY environment.yml /
RUN conda env create -f /environment.yml && conda clean -a RUN conda env create -f /environment.yml && conda clean -a
# Add conda installation dir to PATH (instead of doing 'conda activate')
ENV PATH /opt/conda/envs/nf-core-snpeff-5.0/bin:$PATH
# Setup default ARG variables # Setup default ARG variables
ARG GENOME=GRCh38 ARG GENOME=GRCh38
ARG SNPEFF_CACHE_VERSION=99 ARG SNPEFF_CACHE_VERSION=99
ARG SNPEFF_TAG=99
# Add conda installation dir to PATH (instead of doing 'conda activate')
ENV PATH /opt/conda/envs/nf-core-snpeff-${SNPEFF_TAG}/bin:$PATH
# Download Genome # Download Genome
RUN snpEff download -v ${GENOME}.${SNPEFF_CACHE_VERSION} RUN snpEff download -v ${GENOME}.${SNPEFF_CACHE_VERSION}
# Dump the details of the installed packages to a file for posterity # Dump the details of the installed packages to a file for posterity
RUN conda env export --name nf-core-snpeff-5.0 > nf-core-snpeff-5.0.yml RUN conda env export --name nf-core-snpeff-${SNPEFF_TAG} > nf-core-snpeff-${SNPEFF_TAG}.yml

5
modules/snpeff/build.sh Executable file → Normal file
View file

@ -9,10 +9,11 @@ build_push() {
SNPEFF_TAG=$3 SNPEFF_TAG=$3
docker build \ docker build \
. \
-t nfcore/snpeff:${SNPEFF_TAG}.${GENOME} \ -t nfcore/snpeff:${SNPEFF_TAG}.${GENOME} \
software/snpeff/. \
--build-arg GENOME=${GENOME} \ --build-arg GENOME=${GENOME} \
--build-arg SNPEFF_CACHE_VERSION=${SNPEFF_CACHE_VERSION} --build-arg SNPEFF_CACHE_VERSION=${SNPEFF_CACHE_VERSION} \
--build-arg SNPEFF_TAG=${SNPEFF_TAG}
docker push nfcore/snpeff:${SNPEFF_TAG}.${GENOME} docker push nfcore/snpeff:${SNPEFF_TAG}.${GENOME}
} }

View file

@ -10,18 +10,6 @@ tools:
homepage: https://pcingola.github.io/SnpEff/ homepage: https://pcingola.github.io/SnpEff/
documentation: https://pcingola.github.io/SnpEff/se_introduction/ documentation: https://pcingola.github.io/SnpEff/se_introduction/
licence: ["MIT"] licence: ["MIT"]
params:
- use_cache:
type: boolean
description: |
boolean to enable the usage of containers with cache
Enable the usage of containers with cache
Does not work with conda
- snpeff_tag:
type: value
description: |
Specify the tag for the container
https://hub.docker.com/r/nfcore/snpeff/tags
input: input:
- meta: - meta:
type: map type: map

View file

@ -0,0 +1,31 @@
//
// Run VEP to annotate VCF files
//
include { ENSEMBLVEP } from '../../../../modules/ensemblvep/main'
include { TABIX_BGZIPTABIX } from '../../../../modules/tabix/bgziptabix/main'
workflow ANNOTATION_ENSEMBLVEP {
take:
vcf // channel: [ val(meta), vcf ]
vep_genome // value: genome to use
vep_species // value: species to use
vep_cache_version // value: cache version to use
vep_cache // path: /path/to/vep/cache (optionnal)
vep_extra_files // channel: [ file1, file2...] (optionnal)
main:
ch_versions = Channel.empty()
ENSEMBLVEP(vcf, vep_genome, vep_species, vep_cache_version, vep_cache, vep_extra_files)
TABIX_BGZIPTABIX(ENSEMBLVEP.out.vcf)
// Gather versions of all tools used
ch_versions = ch_versions.mix(ENSEMBLVEP.out.versions.first())
ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions.first())
emit:
vcf_tbi = TABIX_BGZIPTABIX.out.gz_tbi // channel: [ val(meta), vcf.gz, vcf.gz.tbi ]
reports = ENSEMBLVEP.out.report // path: *.html
versions = ch_versions // path: versions.yml
}

View file

@ -0,0 +1,49 @@
name: annotation_ensemblvep
description: |
Perform annotation with ensemblvep and bgzip + tabix index the resulting VCF file
keywords:
- ensemblvep
modules:
- ensemblvep
- tabix/bgziptabix
input:
- meta:
type: map
description: |
Groovy Map containing sample information
e.g. [ id:'test', single_end:false ]
- vcf:
type: file
description: |
vcf to annotate
- genome:
type: value
description: |
which genome to annotate with
- species:
type: value
description: |
which species to annotate with
- cache_version:
type: value
description: |
which version of the cache to annotate with
- cache:
type: file
description: |
path to VEP cache (optional)
- extra_files:
type: tuple
description: |
path to file(s) needed for plugins (optional)
output:
- versions:
type: file
description: File containing software versions
pattern: "versions.yml"
- vcf_tbi:
type: file
description: Compressed vcf file + tabix index
pattern: "[ *{.vcf.gz,vcf.gz.tbi} ]"
authors:
- "@maxulysse"

View file

@ -0,0 +1,28 @@
//
// Run SNPEFF to annotate VCF files
//
include { SNPEFF } from '../../../../modules/snpeff/main'
include { TABIX_BGZIPTABIX } from '../../../../modules/tabix/bgziptabix/main'
workflow ANNOTATION_SNPEFF {
take:
vcf // channel: [ val(meta), vcf ]
snpeff_db // value: db version to use
snpeff_cache // path: /path/to/snpeff/cache (optionnal)
main:
ch_versions = Channel.empty()
SNPEFF(vcf, snpeff_db, snpeff_cache)
TABIX_BGZIPTABIX(SNPEFF.out.vcf)
// Gather versions of all tools used
ch_versions = ch_versions.mix(SNPEFF.out.versions.first())
ch_versions = ch_versions.mix(TABIX_BGZIPTABIX.out.versions.first())
emit:
vcf_tbi = TABIX_BGZIPTABIX.out.gz_tbi // channel: [ val(meta), vcf.gz, vcf.gz.tbi ]
reports = SNPEFF.out.report // path: *.html
versions = ch_versions // path: versions.yml
}

View file

@ -11,11 +11,19 @@ input:
type: map type: map
description: | description: |
Groovy Map containing sample information Groovy Map containing sample information
e.g. [ id:'test' ] e.g. [ id:'test', single_end:false ]
- input: - vcf:
type: vcf type: file
description: list containing one vcf file description: |
pattern: "[ *.{vcf,vcf.gz} ]" vcf to annotate
- db:
type: value
description: |
which db to annotate with
- cache:
type: file
description: |
path to snpEff cache (optional)
output: output:
- versions: - versions:
type: file type: file

View file

@ -1,26 +0,0 @@
//
// Run VEP to annotate VCF files
//
include { ENSEMBLVEP } from '../../../modules/ensemblvep/main'
include { TABIX_BGZIPTABIX as ANNOTATION_BGZIPTABIX } from '../../../modules/tabix/bgziptabix/main'
workflow ANNOTATION_ENSEMBLVEP {
take:
vcf // channel: [ val(meta), vcf ]
vep_genome // value: which genome
vep_species // value: which species
vep_cache_version // value: which cache version
vep_cache // path: path_to_vep_cache (optionnal)
main:
ENSEMBLVEP(vcf, vep_genome, vep_species, vep_cache_version, vep_cache)
ANNOTATION_BGZIPTABIX(ENSEMBLVEP.out.vcf)
ch_versions = ENSEMBLVEP.out.versions.first().mix(ANNOTATION_BGZIPTABIX.out.versions.first())
emit:
vcf_tbi = ANNOTATION_BGZIPTABIX.out.gz_tbi // channel: [ val(meta), vcf.gz, vcf.gz.tbi ]
reports = ENSEMBLVEP.out.report // path: *.html
versions = ch_versions // path: versions.yml
}

View file

@ -1,29 +0,0 @@
name: annotation_ensemblvep
description: |
Perform annotation with ensemblvep and bgzip + tabix index the resulting VCF file
keywords:
- ensemblvep
modules:
- ensemblvep
- tabix/bgziptabix
input:
- meta:
type: map
description: |
Groovy Map containing sample information
e.g. [ id:'test' ]
- input:
type: vcf
description: list containing one vcf file
pattern: "[ *.{vcf,vcf.gz} ]"
output:
- versions:
type: file
description: File containing software versions
pattern: "versions.yml"
- vcf_tbi:
type: file
description: Compressed vcf file + tabix index
pattern: "[ *{.vcf.gz,vcf.gz.tbi} ]"
authors:
- "@maxulysse"

View file

@ -1,23 +0,0 @@
//
// Run SNPEFF to annotate VCF files
//
include { SNPEFF } from '../../../modules/snpeff/main'
include { TABIX_BGZIPTABIX as ANNOTATION_BGZIPTABIX } from '../../../modules/tabix/bgziptabix/main'
workflow ANNOTATION_SNPEFF {
take:
vcf // channel: [ val(meta), vcf ]
snpeff_db // value: version of db to use
snpeff_cache // path: path_to_snpeff_cache (optionnal)
main:
SNPEFF(vcf, snpeff_db, snpeff_cache)
ANNOTATION_BGZIPTABIX(SNPEFF.out.vcf)
ch_versions = SNPEFF.out.versions.first().mix(ANNOTATION_BGZIPTABIX.out.versions.first())
emit:
vcf_tbi = ANNOTATION_BGZIPTABIX.out.gz_tbi // channel: [ val(meta), vcf.gz, vcf.gz.tbi ]
reports = SNPEFF.out.report // path: *.html
versions = ch_versions // path: versions.yml
}

View file

@ -10,5 +10,5 @@ workflow test_ensemblvep {
file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true) file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true)
] ]
ENSEMBLVEP ( input, "WBcel235", "caenorhabditis_elegans", "104", [] ) ENSEMBLVEP ( input, "WBcel235", "caenorhabditis_elegans", "104", [], [] )
} }

View file

@ -2,7 +2,7 @@
nextflow.enable.dsl = 2 nextflow.enable.dsl = 2
include { ANNOTATION_ENSEMBLVEP } from '../../../../subworkflows/nf-core/annotation_ensemblvep/main' include { ANNOTATION_ENSEMBLVEP } from '../../../../../subworkflows/nf-core/annotation/ensemblvep/main'
workflow annotation_ensemblvep { workflow annotation_ensemblvep {
input = [ input = [
@ -10,5 +10,5 @@ workflow annotation_ensemblvep {
file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true) file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true)
] ]
ANNOTATION_ENSEMBLVEP ( input, "WBcel235", "caenorhabditis_elegans", "104", [] ) ANNOTATION_ENSEMBLVEP ( input, "WBcel235", "caenorhabditis_elegans", "104", [], [] )
} }

View file

@ -7,7 +7,7 @@ process {
publishDir = [ enabled: false ] publishDir = [ enabled: false ]
} }
withName: ANNOTATION_BGZIPTABIX { withName: TABIX_BGZIPTABIX {
ext.prefix = { "${meta.id}_VEP.ann.vcf" } ext.prefix = { "${meta.id}_VEP.ann.vcf" }
} }

View file

@ -2,7 +2,7 @@
nextflow.enable.dsl = 2 nextflow.enable.dsl = 2
include { ANNOTATION_SNPEFF } from '../../../../subworkflows/nf-core/annotation_snpeff/main' include { ANNOTATION_SNPEFF } from '../../../../../subworkflows/nf-core/annotation_snpeff/main'
workflow annotation_snpeff { workflow annotation_snpeff {
input = [ input = [

View file

@ -7,7 +7,7 @@ process {
publishDir = [ enabled: false ] publishDir = [ enabled: false ]
} }
withName: ANNOTATION_BGZIPTABIX { withName: TABIX_BGZIPTABIX {
ext.prefix = { "${meta.id}_snpEff.ann.vcf" } ext.prefix = { "${meta.id}_snpEff.ann.vcf" }
} }