diff --git a/.circleci/config.yml b/.circleci/config.yml index 0390dca9e0..62e2e17cda 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -60,10 +60,9 @@ jobs: - setup_remote_docker - run: command: docker build -t nfcore/sarekvep:dev.${GENOME} containers/vep/. --build-arg GENOME=${GENOME} --build-arg SPECIES=${SPECIES} --build-arg VEP_VERSION=${VEP_VERSION} - no_output_timeout: 45m + no_output_timeout: 1.5h - run: command: echo "$DOCKERHUB_PASS" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin ; docker push nfcore/sarekvep:dev.${GENOME} - no_output_timeout: 45m vepgrch38: docker: @@ -77,10 +76,9 @@ jobs: - setup_remote_docker - run: command: docker build -t nfcore/sarekvep:dev.${GENOME} containers/vep/. --build-arg GENOME=${GENOME} --build-arg SPECIES=${SPECIES} --build-arg VEP_VERSION=${VEP_VERSION} - no_output_timeout: 45m + no_output_timeout: 1.5h - run: command: echo "$DOCKERHUB_PASS" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin ; docker push nfcore/sarekvep:dev.${GENOME} - no_output_timeout: 45m vepgrcm38: docker: @@ -94,10 +92,9 @@ jobs: - setup_remote_docker - run: command: docker build -t nfcore/sarekvep:dev.${GENOME} containers/vep/. --build-arg GENOME=${GENOME} --build-arg SPECIES=${SPECIES} --build-arg VEP_VERSION=${VEP_VERSION} - no_output_timeout: 45m + no_output_timeout: 30m - run: command: echo "$DOCKERHUB_PASS" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin ; docker push nfcore/sarekvep:dev.${GENOME} - no_output_timeout: 45m workflows: version: 2 diff --git a/README.md b/README.md index fadcd83b64..00749a51c7 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,16 @@ **An open-source analysis pipeline to detect germline or somatic variants from whole genome or targeted sequencing**. -> :warning: This pipeline is a work in progress being ported to nf-core from [SciLifeLab/Sarek](https://github/SciLifeLab/Sarek) +> :warning: This pipeline is a work in progress being ported to nf-core from [SciLifeLab/Sarek](https://github/SciLifeLab/Sarek/) -[![Nextflow version][nextflow-badge]](https://www.nextflow.io) -[![Travis build status][travis-badge]](https://travis-ci.org/nf-core/sarek) -[![CircleCi build status][circleci-badge]](https://circleci.com/gh/nf-core/workflows/sarek) +[![Nextflow version][nextflow-badge]](https://www.nextflow.io/) +[![nf-core][nf-core-badge]](https://nf-co.re/) + +[![Travis build status][travis-badge]](https://travis-ci.com/nf-core/sarek/) +[![CircleCi build status][circleci-badge]](https://circleci.com/gh/nf-core/sarek/) [![Install with bioconda][bioconda-badge]](http://bioconda.github.io/) -[![Docker Container available][docker-sarek-badge]](https://hub.docker.com/r/nfcore/sarek) +[![Docker Container available][docker-sarek-badge]](https://hub.docker.com/r/nfcore/sarek/) [![Install with Singularity][singularity-badge]](https://www.sylabs.io/docs/) [![Join us on Slack][slack-badge]](https://nfcore.slack.com/messages/CGFUX04HZ/) @@ -33,16 +35,12 @@ It is listed on the [Elixir - Tools and Data Services Registry](https://bio.tool The nf-core/sarek pipeline comes with documentation about the pipeline, found in the `docs/` directory: 1. [Installation](https://nf-co.re/usage/installation) - * [Installation documentation](docs/INSTALL.md) - * [Installation documentation specific for UPPMAX `rackham`](docs/INSTALL_RACKHAM.md) - * [Installation documentation specific for UPPMAX `bianca`](docs/INSTALL_BIANCA.md) 2. Pipeline configuration * [Local installation](https://nf-co.re/usage/local_installation) * [Adding your own system config](https://nf-co.re/usage/adding_own_config) * [Reference genomes](https://nf-co.re/usage/reference_genomes) 3. [Running the pipeline](docs/usage.md) * [Tests documentation](docs/TESTS.md) - * [Reference files documentation](docs/REFERENCES.md) * [Configuration and profiles documentation](docs/CONFIG.md) * [Intervals documentation](docs/INTERVALS.md) * [Running the pipeline](docs/USAGE.md) @@ -51,8 +49,8 @@ The nf-core/sarek pipeline comes with documentation about the pipeline, found in * [Examples](docs/USE_CASES.md) * [Input files documentation](docs/INPUT.md) * [Processes documentation](docs/PROCESS.md) -4. [Output and how to interpret the results](docs/output.md) * [Documentation about containers](docs/CONTAINERS.md) +4. [Output and how to interpret the results](docs/output.md) * [Complementary information about ASCAT](docs/ASCAT.md) * [Complementary information about annotations](docs/ANNOTATION.md) * [Output documentation structure](docs/OUTPUT.md) @@ -69,7 +67,7 @@ You can choose which variant callers to use, plus the pipeline is capable of acc The worflow steps and tools used are as follows: -1. **Preprocessing** - `main.nf` _(based on [GATK best practices](https://software.broadinstitute.org/gatk/best-practices/))_ +1. **Preprocessing** _(based on [GATK best practices](https://software.broadinstitute.org/gatk/best-practices/))_ * Map reads to Reference * [BWA](http://bio-bwa.sourceforge.net/) * Mark Duplicates @@ -77,13 +75,13 @@ The worflow steps and tools used are as follows: * Base (Quality Score) Recalibration * [GATK BaseRecalibrator](https://github.com/broadinstitute/gatk) * [GATK ApplyBQSR](https://github.com/broadinstitute/gatk) -2. **Germline variant calling** - `germlineVC.nf` +2. **Germline variant calling** * SNVs and small indels * [GATK HaplotypeCaller](https://github.com/broadinstitute/gatk) * [Strelka2](https://github.com/Illumina/strelka) * Structural variants * [Manta](https://github.com/Illumina/manta) -3. **Somatic variant calling** - `somaticVC.nf` _(optional)_ +3. **Somatic variant calling** * SNVs and small indels * [MuTect2](https://github.com/broadinstitute/gatk) * [Freebayes](https://github.com/ekg/freebayes) @@ -92,11 +90,19 @@ The worflow steps and tools used are as follows: * [Manta](https://github.com/Illumina/manta) * Sample heterogeneity, ploidy and CNVs * [ASCAT](https://github.com/Crick-CancerGenomics/ascat) -4. **Annotation** - `annotate.nf` _(optional)_ +4. **Annotation** * Variant annotation * [SnpEff](http://snpeff.sourceforge.net/) * [VEP (Variant Effect Predictor)](https://www.ensembl.org/info/docs/tools/vep/index.html) -5. **Reporting** - `runMultiQC.nf` +5. **QC and Reporting** + * QC + * [FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) + * [Qualimap bamqc](http://qualimap.bioinfo.cipf.es/doc_html/command_line.html) + * [samtools stats](https://www.htslib.org/doc/samtools.html) + * [GATK MarkDuplicates](https://github.com/broadinstitute/gatk) + * [bcftools stats](http://www.htslib.org/doc/bcftools.html) + * [VCFtools](https://vcftools.github.io/index.html) + * [SnpEff](http://snpeff.sourceforge.net/) * Reporting * [MultiQC](http://multiqc.info) @@ -139,16 +145,17 @@ For further information or help, don't hesitate to get in touch on [Slack](https :-:|:-: [![National Genomics Infrastructure](docs/images/NGI_logo.png)](https://ngisweden.scilifelab.se/) | [![National Bioinformatics Infrastructure Sweden](docs/images/NBIS_logo.png)](https://nbis.se) -[bioconda-badge]: https://img.shields.io/badge/install%20with-bioconda-brightgreen.svg?logo=data:image/png;base64,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 +[bioconda-badge]: https://img.shields.io/badge/install%20with-bioconda-brightgreen.svg?logo=data:image/png;base64,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 [btb-link]: https://ki.se/forskning/barntumorbanken-0 [circleci-badge]: https://img.shields.io/circleci/project/github/nf-core/sarek.svg?logo=circleci [docker-sarek-badge]: https://img.shields.io/docker/automated/nfcore/sarek.svg?logo=docker [docker-snpeff-badge]: https://img.shields.io/docker/automated/nfcore/sareksnpeff.svg?logo=docker [docker-vep-badge]: https://img.shields.io/docker/automated/nfcore/sarekvep.svg?logo=docker [nbis-link]: https://nbis.se -[nextflow-badge]: https://img.shields.io/badge/nextflow-%E2%89%A519.04.0-brightgreen.svg?logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiICAgd2lkdGg9IjEyLjc5OTIyOG1tIiAgIGhlaWdodD0iMTIuODA0ODA5bW0iICAgdmlld0JveD0iMCAwIDQ1LjM1MTU5NCA0NS4zNzEzNjkiICAgaWQ9InN2Zzc2NTIiICAgdmVyc2lvbj0iMS4xIiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTEgcjEzNzI1IiAgIHNvZGlwb2RpOmRvY25hbWU9Im5leHRmbG93LWZhdmljb24td2hpdGUuc3ZnIj4gIDxkZWZzICAgICBpZD0iZGVmczc2NTQiIC8+ICA8c29kaXBvZGk6bmFtZWR2aWV3ICAgICBpZD0iYmFzZSIgICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIgICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiICAgICBpbmtzY2FwZTp6b29tPSI3LjkxOTU5NTkiICAgICBpbmtzY2FwZTpjeD0iMjAuMTEzMjM1IiAgICAgaW5rc2NhcGU6Y3k9IjIzLjE2MzkwOCIgICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIgICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIgICAgIHNob3dncmlkPSJmYWxzZSIgICAgIGZpdC1tYXJnaW4tdG9wPSIwIiAgICAgZml0LW1hcmdpbi1sZWZ0PSIwIiAgICAgZml0LW1hcmdpbi1yaWdodD0iMCIgICAgIGZpdC1tYXJnaW4tYm90dG9tPSIwIiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAxNSIgICAgIGlua3NjYXBlOndpbmRvdy14PSIwIiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjAiICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIiAvPiAgPG1ldGFkYXRhICAgICBpZD0ibWV0YWRhdGE3NjU3Ij4gICAgPHJkZjpSREY+ICAgICAgPGNjOldvcmsgICAgICAgICByZGY6YWJvdXQ9IiI+ICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4gICAgICAgIDxkYzp0eXBlICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+ICAgICAgPC9jYzpXb3JrPiAgICA8L3JkZjpSREY+ICA8L21ldGFkYXRhPiAgPGcgICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIgICAgIGlkPSJsYXllcjEiICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTQuMTA0MzcsLTQ1Mi41MzM2NikiPiAgICA8cGF0aCAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmIiAgICAgICBkPSJtIC0xMTQuMTA0MzcsNDU1LjQ2NTYyIDAsOC44NjEzMyAwLjIwMzEzLDAuMDYwNSBjIDMuODcyOTMsMS4xMzk0MyA4LjY1MjUxLDQuMzgzMiAxMi44MDA3OCw4LjY4NzUgMC45MTM2MywwLjk0ODAxIDEuOTcyNTY0LDIuMTA2ODQgMi4zNTM1MjQsMi41NzYxOCBsIDAuNjkxNCwwLjg1MzUxIC0wLjg2OTE0LDAuNzc1MzkgYyAtNC4xOTk5MDQsMy43NDE5MyAtOC45NzE5MDQsNi43NjYzNyAtMTQuMTA1NDc0LDguOTQxNDEgLTAuMzA5NzUsMC4xMzEyNCAtMC42OTcyMiwwLjI4MTIzIC0xLjA3NDIyLDAuNDI3NzMgbCAwLDkuMzA0NjkgYyAyLjY1OTkzLC0wLjg3NzkyIDUuMzA2MzksLTEuOTc1IDguMDYwNTUsLTMuMzUxNTYgNC4yNTYyMywtMi4xMjczMiA3LjU0MzI1NCwtNC4yNTc2NCAxMS4wMzcxMTQsLTcuMTU2MjUgMC45MjU4MSwtMC43NjgwOCAxLjgyMTA5LC0xLjUwNzAyIDEuOTkwMjMsLTEuNjQyNTggMC4yNzkzMSwtMC4yMjM4NCAwLjQ5MzMyLC0wLjA1MTQgMi4zMjQyMiwxLjg3ODkxIDYuMjIyNjUsNi41NjA0MSAxMy43ODMzNywxMC43NDQ0MyAyMS45Mzk0NiwxMi4yMjI2NSBsIDAsLTguOTQxNCBjIC00Ljc5NTM3LC0xLjE5NTkgLTkuNDIwMzEsLTMuNjQ1MTEgLTEzLjI1NzgyLC03LjA2NDQ2IC0xLjY4MzUxLC0xLjUwMDA2IC00LjI4NjgxLC00LjM1MDA5IC00LjM5MjU4LC00LjgwODU5IC0wLjA2ODYsLTAuMjk3MyA1LjQ3NDgsLTUuNzA5NzcgNy4yOTQ5MywtNy4xMjMwNSAzLjQ4MjczLC0yLjcwNDI0IDYuNTg4MjUsLTQuMTIwNDIgMTAuMjc1MzksLTQuNjg1NTQgMC4wMjc1LC0wLjAwNCAwLjA1MjcsLTAuMDA4IDAuMDgwMSwtMC4wMTE3IGwgMCwtOC43NSBjIC03LjkzOTI3LDIuMDIxMTQgLTE0Ljg3MDAxLDUuODc3MzggLTIxLjUsMTEuOTQzMzYgbCAtMS42MzA4NiwxLjQ5MjE4IC0yLjk5NjEsLTMuMDA3ODEgYyAtMS42NDc1NiwtMS42NTQ3IC0zLjc0MDI1LC0zLjYwMTU3IC00LjY1MjM0LC00LjMyNjE3IC01LjAwODU1NCwtMy45Nzg5OSAtMTAuMTUyOTU0LC02LjQ5OTIzIC0xNC41NzIyNzQsLTcuMTU2MjUgeiIgICAgICAgaWQ9InBhdGg3NjIwIiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY3NjY2NzY2Nzc2NzY2NzY3NjY2NjY2NzYyIgLz4gIDwvZz48L3N2Zz4= +[nextflow-badge]: https://img.shields.io/badge/nextflow-%E2%89%A519.04.0-brightgreen.svg?logo=data:image/png;base64,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 +[nf-core-badge]: https://img.shields.io/badge/nf--core-pipeline-brightgreen.svg?logo=data:image/png;base64,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 [ngi-link]: https://ngisweden.scilifelab.se/ [scilifelab-link]: https://scilifelab.se -[singularity-badge]: https://img.shields.io/badge/use%20with-singularity-purple.svg +[singularity-badge]: https://img.shields.io/badge/use%20with-singularity-purple.svg?logo=data:image/png;base64,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 [slack-badge]: https://img.shields.io/badge/slack-nfcore/sarek-blue.svg?logo=slack [travis-badge]: https://img.shields.io/travis/nf-core/sarek.svg?logo=travis diff --git a/bin/build_reference.sh b/bin/build_reference.sh index ad01808d69..faa7607645 100755 --- a/bin/build_reference.sh +++ b/bin/build_reference.sh @@ -1,7 +1,6 @@ #!/bin/bash set -xeuo pipefail -BUILD=false TEST=ALL TRAVIS_BUILD_DIR=${TRAVIS_BUILD_DIR:-.} TRAVIS=${TRAVIS:-false} @@ -15,24 +14,16 @@ do shift # past argument shift # past value ;; - -b|--build) - BUILD=true - shift # past value - ;; *) # unknown option shift # past argument ;; esac done -# Always download test data -rm -rf data -git clone --single-branch --branch sarek https://github.com/nf-core/test-datasets.git data - # Build references for smallGRCh37 -if [[ BUILD ]] && [[ $TEST != ANNOTATESNPEFF ]] && [[ $TEST != ANNOTATEVEP ]] +if [[ $TEST != ANNOTATESNPEFF ]] && [[ $TEST != ANNOTATEVEP ]] then rm -rf references - nextflow run ${TRAVIS_BUILD_DIR}/build.nf -profile docker -ansi-log false --publishDirMode link --max_memory 7.GB --max_cpus 2 -dump-channels --genome smallGRCh37 --refdir data/reference --outdir references + nextflow run ${TRAVIS_BUILD_DIR}/build.nf -profile test,docker --build --outdir references -ansi-log false -dump-channels rm -rf .nextflow* references/pipeline_info work fi diff --git a/bin/run_tests.sh b/bin/run_tests.sh index 98119c2174..beb2b77ac6 100755 --- a/bin/run_tests.sh +++ b/bin/run_tests.sh @@ -26,23 +26,25 @@ do done function run_sarek() { - nextflow run ${TRAVIS_BUILD_DIR}/main.nf -profile docker -ansi-log false --publishDirMode link --max_memory 7.GB --max_cpus 2 -dump-channels --genome smallGRCh37 --igenomes_base references $@ + nextflow run ${TRAVIS_BUILD_DIR}/main.nf -profile test,docker -ansi-log false -dump-channels $@ } if [[ ALL,GERMLINE =~ $TEST ]] then + rm -rf data + git clone --single-branch --branch sarek https://github.com/nf-core/test-datasets.git data run_sarek --sample data/testdata/tiny/normal --tools HaplotypeCaller,Strelka --noReports - run_sarek --step recalibrate --noReports + run_sarek --step recalibrate --sample results/Preprocessing/TSV/duplicateMarked.tsv --noReports fi if [[ ALL,SOMATIC =~ $TEST ]] then - run_sarek --sample data/testdata/tsv/tiny-manta.tsv --tools FreeBayes,HaplotypeCaller,Manta,Strelka,Mutect2 --noReports + run_sarek --tools FreeBayes,HaplotypeCaller,Manta,Strelka,Mutect2 --noReports fi if [[ ALL,TARGETED =~ $TEST ]] then - run_sarek --sample data/testdata/tsv/tiny-manta.tsv --tools FreeBayes,HaplotypeCaller,Manta,Strelka,Mutect2 --noReports --targetBED data/testdata/target.bed + run_sarek --tools FreeBayes,HaplotypeCaller,Manta,Strelka,Mutect2 --noReports --targetBED https://github.com/nf-core/test-datasets/raw/sarek/testdata/target.bed fi if [[ ALL,ANNOTATEALL,ANNOTATESNPEFF,ANNOTATEVEP =~ $TEST ]] @@ -57,10 +59,10 @@ then then ANNOTATOR=merge,snpEFF,VEP fi - run_sarek --step annotate --tools ${ANNOTATOR} --annotateVCF data/testdata/vcf/Strelka_1234N_variants.vcf.gz --noReports + run_sarek --step annotate --tools ${ANNOTATOR} --sample https://github.com/nf-core/test-datasets/raw/sarek/testdata/vcf/Strelka_1234N_variants.vcf.gz --noReports fi if [[ MULTIPLE =~ $TEST ]] then - run_sarek --sample data/testdata/tsv/tiny-multiple.tsv --tools FreeBayes,HaplotypeCaller,Manta,Strelka,Mutect2 --noReports + run_sarek --sample https://github.com/nf-core/test-datasets/raw/sarek/testdata/tsv/tiny-multiple.tsv --tools FreeBayes,HaplotypeCaller,Manta,Strelka,Mutect2 --noReports fi diff --git a/build.nf b/build.nf index 979601371c..583fccac5a 100644 --- a/build.nf +++ b/build.nf @@ -21,14 +21,23 @@ Usage: you're reading it BUILD REFERENCES: - nextflow run build.nf [--refdir --outdir ] - --refdir - Specify a directory containing reference files + nextflow run build.nf --build --outdir [--offline] + --build + Will build reference files for smallGRCh37 --outdir Specify an output directory + --offline + Will use data as the source for the reference files + Need to do: + `git clone --single-branch --branch sarek https://github.com/nf-core/test-datasets.git data` + Before transfering the repo to an offline location + DOWNLOAD CACHE: nextflow run build.nf --download_cache [--snpEff_cache ] [--vep_cache ] + [--cadd_cache --cadd_version ] + --download_cache + Will download specified cache --snpEff_cache Specify path to snpEff cache If none, will use snpEff version specified in configuration @@ -54,15 +63,29 @@ DOWNLOAD CACHE: // Show help message if (params.help) exit 0, helpMessage() -ch_referencesFiles = Channel.fromPath("${params.refdir}/*") - // Default value for params +params.build = null +params.offline = null params.cadd_cache = null params.cadd_version = 'v1.5' params.genome = 'smallGRCh37' params.snpEff_cache = null params.vep_cache = null +ch_referencesFiles = Channel.empty() + +if ((params.build) && (params.offline)) ch_referencesFiles = Channel.fromPath("data/reference/*") +if ((params.build) && (!params.offline)) ch_referencesFiles = ch_referencesFiles.mix( + Channel.fromPath("https://github.com/nf-core/test-datasets/raw/sarek/reference/1000G_phase1.indels.b37.small.vcf.gz"), + Channel.fromPath("https://github.com/nf-core/test-datasets/raw/sarek/reference/1000G_phase3_20130502_SNP_maf0.3.small.loci"), + Channel.fromPath("https://github.com/nf-core/test-datasets/raw/sarek/reference/1000G_phase3_20130502_SNP_maf0.3.small.loci.gc"), + Channel.fromPath("https://github.com/nf-core/test-datasets/raw/sarek/reference/Mills_and_1000G_gold_standard.indels.b37.small.vcf.gz"), + Channel.fromPath("https://github.com/nf-core/test-datasets/raw/sarek/reference/dbsnp_138.b37.small.vcf.gz"), + Channel.fromPath("https://github.com/nf-core/test-datasets/raw/sarek/reference/human_g1k_v37_decoy.small.fasta.gz"), + Channel.fromPath("https://github.com/nf-core/test-datasets/raw/sarek/reference/small.intervals")) + +ch_referencesFiles = ch_referencesFiles.dump(tag:'Reference Files') + // Check if genome exists in the config file if (params.genomes && params.genome && !params.genomes.containsKey(params.genome)) { exit 1, "The provided genome '${params.genome}' is not available in the iGenomes file. Currently the available genomes are ${params.genomes.keySet().join(", ")}" diff --git a/conf/test.config b/conf/test.config index 84e483eb2a..95a9a6ce6d 100644 --- a/conf/test.config +++ b/conf/test.config @@ -8,18 +8,18 @@ */ params { - config_profile_name = 'Test profile' config_profile_description = 'Minimal test dataset to check pipeline function' + config_profile_name = 'Test profile' // Limit resources so that this can run on Travis max_cpus = 2 - max_memory = 6.GB + max_memory = 7.GB max_time = 48.h // Input data - // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets - // TODO nf-core: Give any required params for the test so that command line flags are not needed - singleEnd = false - readPaths = [ - ['Testdata', ['https://github.com/nf-core/test-datasets/raw/exoseq/testdata/Testdata_R1.tiny.fastq.gz', 'https://github.com/nf-core/test-datasets/raw/exoseq/testdata/Testdata_R2.tiny.fastq.gz']], - ['SRR389222', ['https://github.com/nf-core/test-datasets/raw/methylseq/testdata/SRR389222_sub1.fastq.gz', 'https://github.com/nf-core/test-datasets/raw/methylseq/testdata/SRR389222_sub2.fastq.gz']] - ] + sample = 'https://github.com/nf-core/test-datasets/raw/sarek/testdata/tsv/tiny-manta-https.tsv' + // Small reference genome + // To be build with: `nextflow run build.nf --build -profile docker --outdir references` + genome = 'smallGRCh37' + igenomes_base = 'references' + // Use publishDir mode link so that work can be removed + publishDirMode = 'link' } diff --git a/docs/reference.md b/docs/reference.md new file mode 100644 index 0000000000..5d772a2733 --- /dev/null +++ b/docs/reference.md @@ -0,0 +1,21 @@ +# Genomes and reference files + +## AWS iGenomes +Sarek is using [AWS iGenomes](https://ewels.github.io/AWS-iGenomes/), which facilitate storing and sharing references. +Both `GRCh37` and `GRCh38` are available with `--genome GRCh37` or `--genome GRCh38` respectively with any profile using the `conf/igenomes.config` file, or you can specify it with `-c conf/igenomes.config`. + +Sarek currently uses `GRCh38` by default. + +Settings in `igenomes.config` can be tailored to your needs. + +The [`build.nf`](#buildnf) script is used to build the indexes for the reference test. + +Use `--genome smallGRCh37` to map against a small reference genome based on GRCh37. + +## build.nf + +The `build.nf` script can build the files needed for smallGRCh37. + +``` +nextflow run build.nf +``` diff --git a/main.nf b/main.nf index 9775904fb9..cf73043548 100644 --- a/main.nf +++ b/main.nf @@ -93,7 +93,6 @@ if (params.genomes && params.genome && !params.genomes.containsKey(params.genome // Default value for params params.annotateTools = null -params.annotateVCF = null params.annotation_cache = null params.cadd_InDels = null params.cadd_InDels_tbi = null @@ -104,10 +103,12 @@ params.noReports = null params.nucleotidesPerSecond = 1000.0 params.sample = null params.sequencing_center = null +params.snpEff_cache = null params.step = 'mapping' params.strelkaBP = true params.targetBED = null params.tools = null +params.vep_cache = null stepList = defineStepList() step = params.step ? params.step.toLowerCase() : '' @@ -117,7 +118,6 @@ if ( step.contains(',') ) exit 1, 'You can choose only one step, see --help for tools = params.tools ? params.tools.split(',').collect{it.trim().toLowerCase()} : [] annotateTools = params.annotateTools ? params.annotateTools.split(',').collect{it.trim().toLowerCase()} : [] -annotateVCF = params.annotateVCF ? params.annotateVCF.split(',').collect{it.trim()} : [] toolList = defineToolList() if ( !checkParameterList(tools,toolList) ) exit 1, 'Unknown tool(s), see --help for more information' @@ -148,7 +148,7 @@ ch_output_docs = Channel.fromPath("${baseDir}/docs/output.md") */ tsvPath = null -if (params.sample) if (hasExtension(params.sample,"tsv")) tsvPath = params.sample +if (params.sample) if (hasExtension(params.sample,"tsv") || hasExtension(params.sample,"vcf") || hasExtension(params.sample,"vcf.gz")) tsvPath = params.sample // No need for tsv file for step annotate if (!params.sample) { @@ -166,6 +166,7 @@ if (tsvPath) { case 'mapping': inputFiles = extractSample(tsvFile); break case 'recalibrate': bamFiles = extractRecal(tsvFile); break case 'variantcalling': bamFiles = extractBams(tsvFile); break + case 'annotate': break default: exit 1, "Unknown step ${step}" } } else if (params.sample) if (!hasExtension(params.sample,"tsv")) { @@ -174,9 +175,11 @@ if (tsvPath) { inputFiles = extractFastqFromDir(params.sample) (inputFiles, fastqTmp) = inputFiles.into(2) fastqTmp.toList().subscribe onNext: { - if (it.size() == 0) exit 1, "No FASTQ files found in --sample directory '${params.sample}'" -} -tsvFile = params.sample // used in the reports + if (it.size() == 0) exit 1, "No FASTQ files found in --sample directory '${params.sample}'" + } + tsvFile = params.sample // used in the reports +} else if (step == 'annotate') { + println "Annotating ${tsvFile}" } else exit 1, 'No sample were defined, see --help' if (step == 'recalibrate') (patientGenders, bamFiles) = extractGenders(bamFiles) @@ -1558,7 +1561,7 @@ vcfToAnnotate = Channel.create() if (step == 'annotate') { vcfNotToAnnotate = Channel.create() - if (annotateVCF == []) { + if (tsvPath == []) { // Sarek, by default, annotates all available vcfs that it can find in the VariantCalling directory // Excluding vcfs from FreeBayes, and g.vcf from HaplotypeCaller // Basically it's: VariantCalling/*/{HaplotypeCaller,Manta,MuTect2,Strelka}/*.vcf.gz @@ -1580,7 +1583,7 @@ if (step == 'annotate') { } else if (annotateTools == []) { // Annotate user-submitted VCFs // If user-submitted, Sarek assume that the idSample should be assumed automatically - vcfToAnnotate = Channel.fromPath(annotateVCF) + vcfToAnnotate = Channel.fromPath(tsvPath) .map{vcf -> ['userspecified', vcf.minus(vcf.fileName)[-2].toString(), vcf]} } else exit 1, "specify only tools or files to annotate, not both" @@ -1620,8 +1623,6 @@ process RunSnpeff { reducedVCF = reduceVCF(vcf) cache = (params.snpEff_cache && params.annotation_cache) ? "-dataDir \${PWD}/${dataDir}" : "" """ - echo ${task.container} - snpEff -Xmx${task.memory.toGiga()}g \ ${snpeffDb} \ -csvStats ${reducedVCF}_snpEff.csv \ diff --git a/nextflow.config b/nextflow.config index c062fb9173..e6de815088 100644 --- a/nextflow.config +++ b/nextflow.config @@ -9,17 +9,11 @@ params { // Workflow flags - // TODO nf-core: Specify your pipeline's command line flags - reads = "data/*{1,2}.fastq.gz" - singleEnd = false + genome = 'GRCh38' outdir = './results' + publishDirMode = 'symlink' // Boilerplate options - publishDirMode = 'symlink' - snpEff_cache = '' - cadd_version = '' - vep_cache = '' - genome = 'GRCh38' name = false multiqc_config = "$baseDir/assets/multiqc_config.yaml" email = false