From 485ac145a9fd25a8bfd0e6fcc185af0d88fa50ab Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Thu, 28 Nov 2019 17:28:27 +0100 Subject: [PATCH 01/14] update docs --- .github/CONTRIBUTING.md | 48 +++-- .github/ISSUE_TEMPLATE/bug_report.md | 43 ++-- .github/ISSUE_TEMPLATE/feature_request.md | 18 +- .github/PULL_REQUEST_TEMPLATE.md | 23 ++- .github/workflows/branch.yml | 2 +- CHANGELOG.md | 241 ++++++++++++---------- README.md | 23 +-- 7 files changed, 219 insertions(+), 179 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index c8210fced..8c8447976 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,47 +1,53 @@ # nf-core/sarek: Contributing Guidelines -Hi there! Many thanks for taking an interest in improving nf-core/sarek. +Hi there! +Many thanks for taking an interest in improving nf-core/sarek. -We try to manage the required tasks for nf-core/sarek using GitHub issues, you probably came to this page when creating one. Please use the pre-filled template to save time. - -However, don't be put off by this template - other more general issues and suggestions are welcome! Contributions to the code are even more welcome ;) - -> If you need help using or modifying nf-core/sarek then the best place to ask is on the pipeline channel on [Slack](https://nf-core-invite.herokuapp.com/). +We try to manage the required tasks for nf-core/sarek using GitHub issues, you probably came to this page when creating one. +Please use the pre-filled template to save time. +However, don't be put off by this template - other more general issues and suggestions are welcome! +Contributions to the code are even more welcome ;) +> If you need help using or modifying nf-core/sarek then the best place to ask is on the nf-core Slack [#sarek](https://nfcore.slack.com/channels/sarek) channel ([join our Slack here](https://nf-co.re/join/slack)). ## Contribution workflow -If you'd like to write some code for nf-core/sarek, the standard workflow -is as follows: -1. Check that there isn't already an issue about your idea in the - [nf-core/sarek issues](https://github.com/nf-core/sarek/issues) to avoid - duplicating work. +If you'd like to write some code for nf-core/sarek, the standard workflow is as follows: + +1. Check that there isn't already an issue about your idea in the [nf-core/sarek issues](https://github.com/nf-core/sarek/issues) to avoid duplicating work * If there isn't one already, please create one so that others know you're working on this -2. Fork the [nf-core/sarek repository](https://github.com/nf-core/sarek) to your GitHub account +2. [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the [nf-core/sarek repository](https://github.com/nf-core/sarek) to your GitHub account 3. Make the necessary changes / additions within your forked repository -4. Submit a Pull Request against the `dev` branch and wait for the code to be reviewed and merged. - -If you're not used to this workflow with git, you can start with some [basic docs from GitHub](https://help.github.com/articles/fork-a-repo/) or even their [excellent interactive tutorial](https://try.github.io/). +4. Submit a Pull Request against the `dev` branch and wait for the code to be reviewed and merged +If you're not used to this workflow with git, you can start with some [docs from GitHub](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests) or even their [excellent `git` resources](https://try.github.io/). ## Tests -When you create a pull request with changes, [Travis CI](https://travis-ci.org/) will run automatic tests. + +When you create a pull request with changes, [GitHub Actions](https://github.com/features/actions) will run automatic tests. Typically, pull-requests are only fully reviewed when these tests are passing, though of course we can help out before then. There are typically two types of tests that run: ### Lint Tests -The nf-core has a [set of guidelines](http://nf-co.re/guidelines) which all pipelines must adhere to. + +`nf-core` has a [set of guidelines](https://nf-co.re/developers/guidelines) which all pipelines must adhere to. To enforce these and ensure that all pipelines stay in sync, we have developed a helper tool which runs checks on the pipeline code. This is in the [nf-core/tools repository](https://github.com/nf-core/tools) and once installed can be run locally with the `nf-core lint ` command. If any failures or warnings are encountered, please follow the listed URL for more documentation. ### Pipeline Tests -Each nf-core pipeline should be set up with a minimal set of test-data. -Travis CI then runs the pipeline on this data to ensure that it exists successfully. + +Each `nf-core` pipeline should be set up with a minimal set of test-data. +`GitHub Actions` then runs the pipeline on this data to ensure that it exits successfully. If there are any failures then the automated tests fail. -These tests are run both with the latest available version of Nextflow and also the minimum required version that is stated in the pipeline code. +These tests are run both with the latest available version of `Nextflow` and also the minimum required version that is stated in the pipeline code. + +## Patch + +When patching a release, please work on your fork on a new branch named `patch` ## Getting help -For further information/help, please consult the [nf-core/sarek documentation](https://github.com/nf-core/sarek#documentation) and don't hesitate to get in touch on the [sarek pipeline channel](https://nfcore.slack.com/channels/sarek) on [Slack](https://nf-co.re/join/slack). + +For further information/help, please consult the [nf-core/sarek documentation](https://github.com/nf-core/sarek#documentation) and don't hesitate to get in touch on the nf-core Slack [#sarek](https://nfcore.slack.com/channels/sarek) channel ([join our Slack here](https://nf-co.re/join/slack)). diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 6df6c5052..5e62bedd6 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,31 +1,42 @@ +# nf-core/sarek bug report + Hi there! -Thanks for telling us about a problem with the pipeline. Please delete this text and anything that's not relevant from the template below: +Thanks for telling us about a problem with the pipeline. +Please delete this text and anything that's not relevant from the template below: + +## Describe the bug -#### Describe the bug A clear and concise description of what the bug is. -#### Steps to reproduce +## Steps to reproduce + Steps to reproduce the behaviour: + 1. Command line: `nextflow run ...` 2. See error: _Please provide your error message_ -#### Expected behaviour +## Expected behaviour + A clear and concise description of what you expected to happen. -#### System: - - Hardware: [e.g. HPC, Desktop, Cloud...] - - Executor: [e.g. slurm, local, awsbatch...] - - OS: [e.g. CentOS Linux, macOS, Linux Mint...] - - Version [e.g. 7, 10.13.6, 18.3...] +## System + +- Hardware: [e.g. HPC, Desktop, Cloud...] +- Executor: [e.g. slurm, local, awsbatch...] +- OS: [e.g. CentOS Linux, macOS, Linux Mint...] +- Version [e.g. 7, 10.13.6, 18.3...] + +## Nextflow Installation + +- Version: [e.g. 0.31.0] + +## Container engine -#### Nextflow Installation: - - Version: [e.g. 0.31.0] +- Engine: [e.g. Conda, Docker or Singularity] +- version: [e.g. 1.0.0] +- Image tag: [e.g. nfcore/sarek:2.5.1] -#### Container engine: - - Engine: [e.g. Conda, Docker or Singularity] - - version: [e.g. 1.0.0] - - Image tag: [e.g. nfcore/sarek:1.0.0] +## Additional context -#### Additional context Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 1f025b779..e3f009a72 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,16 +1,24 @@ +# nf-core/sarek feature request + Hi there! -Thanks for suggesting a new feature for the pipeline! Please delete this text and anything that's not relevant from the template below: +Thanks for suggesting a new feature for the pipeline! +Please delete this text and anything that's not relevant from the template below: + +## Is your feature request related to a problem? Please describe -#### Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. + Ex. I'm always frustrated when [...] -#### Describe the solution you'd like +## Describe the solution you'd like + A clear and concise description of what you want to happen. -#### Describe alternatives you've considered +## Describe alternatives you've considered + A clear and concise description of any alternative solutions or features you've considered. -#### Additional context +## Additional context + Add any other context about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 15c9a1b1d..913a3fa83 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,16 +1,19 @@ -Many thanks to contributing to nf-core/sarek! +# nf-core/sarek pull request + +Many thanks for contributing to nf-core/sarek! Please fill in the appropriate checklist below (delete whatever is not relevant). These are the most common things requested on pull requests (PRs). ## PR checklist - - [ ] This comment contains a description of changes (with reason) - - [ ] If you've fixed a bug or added code that should be tested, add tests! - - [ ] If necessary, also make a PR on the [nf-core/sarek branch on the nf-core/test-datasets repo](https://github.com/nf-core/test-datasets/pull/new/nf-core/sarek) - - [ ] Ensure the test suite passes (`nextflow run . -profile test,docker`). - - [ ] Make sure your code lints (`nf-core lint .`). - - [ ] Documentation in `docs` is updated - - [ ] `CHANGELOG.md` is updated - - [ ] `README.md` is updated -**Learn more about contributing:** [guidelines](https://github.com/nf-core/sarek/tree/master/.github/CONTRIBUTING.md) \ No newline at end of file +- [ ] This comment contains a description of changes (with reason) +- [ ] If you've fixed a bug or added code that should be tested, add tests! +- [ ] If necessary, also make a PR on the [nf-core/sarek branch on the nf-core/test-datasets repo](https://github.com/nf-core/test-datasets/pull/new/nf-core/sarek) +- [ ] Ensure the test suite passes (`nextflow run . -profile test,docker`). +- [ ] Make sure your code lints (`nf-core lint .`). +- [ ] Documentation in `docs` is updated +- [ ] `CHANGELOG.md` is updated +- [ ] `README.md` is updated + +**Learn more about contributing:** [CONTRIBUTING.md](https://github.com/nf-core/sarek/tree/master/.github/CONTRIBUTING.md) \ No newline at end of file diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml index 174e995a0..06824f2d7 100644 --- a/.github/workflows/branch.yml +++ b/.github/workflows/branch.yml @@ -13,4 +13,4 @@ jobs: - uses: actions/checkout@v1 - name: Check PRs run: | - { [[ $(git remote get-url origin) == *nf-core/sarek ]] && [[ ${GITHUB_BASE_REF} = "master" ]] && [[ ${GITHUB_HEAD_REF} = "dev" ]]; } || [[ ${GITHUB_HEAD_REF} == patch* ]] \ No newline at end of file + { [[ $(git remote get-url origin) == *nf-core/sarek ]] && [[ ${GITHUB_HEAD_REF} = "dev" ]]; } || [[ ${GITHUB_HEAD_REF} == "patch" ]] \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 7238d184b..20f8b472e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,14 +2,14 @@ All notable changes to this project will be documented in this file. -The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## dev ### `Added` -- [#46](https://github.com/nf-core/sarek/pull/46) - Add location to abstacts +- [#45](https://github.com/nf-core/sarek/pull/45) - Include Workflow figure in `README.md` +- [#46](https://github.com/nf-core/sarek/pull/46) - Add location to abstracts - [#52](https://github.com/nf-core/sarek/pull/52) - Add support for mouse data `GRCm38` ### `Changed` @@ -23,11 +23,13 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - [#41](https://github.com/nf-core/sarek/pull/41), [#55](https://github.com/nf-core/sarek/pull/55) - Update `tiddit` from `2.7.1` to `2.8.1` - [#41](https://github.com/nf-core/sarek/pull/41) - Update `vcfanno` from `0.3.1` to `0.3.2` - [#54](https://github.com/nf-core/sarek/pull/54) - Bump version to `2.5.2dev` +- [#XXX](https://github.com/nf-core/sarek/pull/XXX) - Update `README` +- [#XXX](https://github.com/nf-core/sarek/pull/XXX) - Update `CHANGELOG` ### `Removed` -- [#45](https://github.com/nf-core/sarek/pull/45) - Include Workflow figure in `README.md` - [#46](https://github.com/nf-core/sarek/pull/46) - Remove mention of old `build.nf` script which was included in `main.nf` +- [#XXX](https://github.com/nf-core/sarek/pull/XXX) - Remove `Freebayes` ### `Fixed` @@ -35,7 +37,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - [#42](https://github.com/nf-core/sarek/pull/42) - Fix typos, and minor updates in `README.md` - [#43](https://github.com/nf-core/sarek/pull/43) - Fix automated `VEP` builds with circleCI - [#54](https://github.com/nf-core/sarek/pull/54) - Apply fixes from release `2.5.1` -- [#58](https://github.com/nf-core/sarek/pull/58) - Fix issue with `.interval_list` file from the GATK bundle [#56](https://github.com/nf-core/sarek/issues/56) that was not recognized in the `CreateIntervalsBed` process +- [#58](https://github.com/nf-core/sarek/pull/58) - Fix issue with `.interval_list` file from the `GATK` bundle [#56](https://github.com/nf-core/sarek/issues/56) that was not recognized in the `CreateIntervalsBed` process +- [#XXX](https://github.com/nf-core/sarek/pull/XXX) - Fix typos in `CHANGELOG` ## [2.5.1] - Årjep-Ålkatjjekna @@ -53,6 +56,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [2.5] - Ålkatj +Ålkatj is one of the main massif in the Sarek National Park. + Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) template. ### `Added` @@ -61,37 +66,37 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) - [#2](https://github.com/nf-core/sarek/pull/2), [#3](https://github.com/nf-core/sarek/pull/3), [#4](https://github.com/nf-core/sarek/pull/4), [#5](https://github.com/nf-core/sarek/pull/5), [#7](https://github.com/nf-core/sarek/pull/7), [#9](https://github.com/nf-core/sarek/pull/9), [#10](https://github.com/nf-core/sarek/pull/10), [#11](https://github.com/nf-core/sarek/pull/11), [#12](https://github.com/nf-core/sarek/pull/12) - Add CI for `nf-core/sarek` - [#3](https://github.com/nf-core/sarek/pull/3) - Add preprocessing to `nf-core/sarek` - [#4](https://github.com/nf-core/sarek/pull/4) - Add variant calling to `nf-core/sarek` with `HaplotypeCaller`, and single mode `Manta` and `Strelka` -- [#5](https://github.com/nf-core/sarek/pull/5), [#34](https://github.com/nf-core/sarek/pull/34) - Add variant calling to `nf-core/sarek` with `Manta`, `Strelka`, `Strelka Best Practices`, `MuTecT2`, `FreeBayes`, `ASCAT`, `ControlFREEC` +- [#5](https://github.com/nf-core/sarek/pull/5), [#34](https://github.com/nf-core/sarek/pull/34) - Add variant calling to `nf-core/sarek` with `Manta`, `Strelka`, `Strelka Best Practices`, `Mutect2`, `FreeBayes`, `ASCAT`, `ControlFREEC` - [#6](https://github.com/nf-core/sarek/pull/6) - Add default containers for annotation to `nf-core/sarek` -- [#7](https://github.com/nf-core/sarek/pull/7) - Add MultiQC +- [#7](https://github.com/nf-core/sarek/pull/7) - Add `MultiQC` - [#7](https://github.com/nf-core/sarek/pull/7) - Add annotation - [#7](https://github.com/nf-core/sarek/pull/7) - Add social preview image in `png` and `svg` format - [#7](https://github.com/nf-core/sarek/pull/7), [#8](https://github.com/nf-core/sarek/pull/8), [#11](https://github.com/nf-core/sarek/pull/11), [#21](https://github.com/nf-core/sarek/pull/21) - Add helper script `run_tests.sh` to run different tests - [#7](https://github.com/nf-core/sarek/pull/7), [#8](https://github.com/nf-core/sarek/pull/8), [#9](https://github.com/nf-core/sarek/pull/9) - Add automatic build of specific containers for annotation for `GRCh37`, `GRCh38` and `GRCm38` using `CircleCI` - [#7](https://github.com/nf-core/sarek/pull/7), [#8](https://github.com/nf-core/sarek/pull/8), [#9](https://github.com/nf-core/sarek/pull/9), [#11](https://github.com/nf-core/sarek/pull/11) - Add helper script `build_reference.sh` to build small reference from [nf-core/test-datasets:sarek](https://github.com/nf-core/test-datasets/tree/sarek) - [#7](https://github.com/nf-core/sarek/pull/7), [#9](https://github.com/nf-core/sarek/pull/9), [#11](https://github.com/nf-core/sarek/pull/11), [#12](https://github.com/nf-core/sarek/pull/12) - Add helper script `download_image.sh` to download containers for testing -- [#8](https://github.com/nf-core/sarek/pull/8) - Add test configation for easier testing +- [#8](https://github.com/nf-core/sarek/pull/8) - Add test configuration for easier testing - [#9](https://github.com/nf-core/sarek/pull/9), [#11](https://github.com/nf-core/sarek/pull/11) - Add scripts for `ASCAT` - [#10](https://github.com/nf-core/sarek/pull/10) - Add `TIDDIT` to detect structural variants - [#11](https://github.com/nf-core/sarek/pull/11) - Add automatic build of specific containers for annotation for `CanFam3.1` using `CircleCI` - [#11](https://github.com/nf-core/sarek/pull/11), [#12](https://github.com/nf-core/sarek/pull/12) - Add posters and abstracts - [#12](https://github.com/nf-core/sarek/pull/12) - Add helper script `make_snapshot.sh` to make an archive for usage on a secure cluster - [#12](https://github.com/nf-core/sarek/pull/12) - Add helper scripts `filter_locifile.py` and `selectROI.py` -- [#12](https://github.com/nf-core/sarek/pull/12) - Use `label` for processes configation +- [#12](https://github.com/nf-core/sarek/pull/12) - Use `label` for processes configuration - [#13](https://github.com/nf-core/sarek/pull/13) - Add Citation documentation - [#13](https://github.com/nf-core/sarek/pull/13) - Add `BamQC` process - [#13](https://github.com/nf-core/sarek/pull/13) - Add `CompressVCFsnpEff` and `CompressVCFvep` processes - [#18](https://github.com/nf-core/sarek/pull/18) - Add `--no-reports` option for tests + add snpEff,VEP,merge to MULTIPLE test -- [#18](https://github.com/nf-core/sarek/pull/18) - Add logo to MultiQC report +- [#18](https://github.com/nf-core/sarek/pull/18) - Add logo to `MultiQC` report - [#18](https://github.com/nf-core/sarek/pull/18), [#29](https://github.com/nf-core/sarek/pull/29) - Add params `--skipQC` to skip specified QC tools - [#18](https://github.com/nf-core/sarek/pull/18) - Add possibility to download other genome for `sareksnpeff` and `sarekvep` containers - [#20](https://github.com/nf-core/sarek/pull/20) - Add `markdownlint` config file -- [#21](https://github.com/nf-core/sarek/pull/21) - Add tests for latest Nextflow version as well -- [#21](https://github.com/nf-core/sarek/pull/21) - Add `genomes.config` for genomes without AWS iGenomes -- [#24](https://github.com/nf-core/sarek/pull/24) - Added GATK4 Mutect2 calling and filtering +- [#21](https://github.com/nf-core/sarek/pull/21) - Add tests for latest `Nextflow` version as well +- [#21](https://github.com/nf-core/sarek/pull/21) - Add `genomes.config` for genomes without `AWS iGenomes` +- [#24](https://github.com/nf-core/sarek/pull/24) - Added `GATK4 Mutect2` calling and filtering - [#27](https://github.com/nf-core/sarek/pull/27), [#30](https://github.com/nf-core/sarek/pull/30) - Use Github actions for CI, linting and branch protection -- [#31](https://github.com/nf-core/sarek/pull/31) - Add nf-core lint -- [#31](https://github.com/nf-core/sarek/pull/31) - Add extra CI to GitHub Actions nf-core extra CI +- [#31](https://github.com/nf-core/sarek/pull/31) - Add `nf-core lint` +- [#31](https://github.com/nf-core/sarek/pull/31) - Add extra CI to `GitHub Actions` nf-core extra CI - [#35](https://github.com/nf-core/sarek/pull/35) - Building indexes from [nf-core/test-datasets:sarek](https://github.com/nf-core/test-datasets/tree/sarek) for CI and small tests ### `Changed` @@ -103,10 +108,10 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) - [#7](https://github.com/nf-core/sarek/pull/8), [#23](https://github.com/nf-core/sarek/pull/23) - `--annotateVCF` is now deprecated, use `--input` instead - [#8](https://github.com/nf-core/sarek/pull/8), [#12](https://github.com/nf-core/sarek/pull/12) - Improve helper script `build.nf` for downloading and building reference files - [#9](https://github.com/nf-core/sarek/pull/9) - `ApplyBQSR` is now parallelized -- [#9](https://github.com/nf-core/sarek/pull/9) - Fastq files are named following "${idRun}_R1.fastq.gz" in the FastQC output for easier reporting +- [#9](https://github.com/nf-core/sarek/pull/9) - Fastq files are named following "${idRun}_R1.fastq.gz" in the `FastQC` output for easier reporting - [#9](https://github.com/nf-core/sarek/pull/9) - Status is now a map with `idpatient`, `idsample` as keys (ie: `status = statusMap[idPatient, idSample]`) - [#9](https://github.com/nf-core/sarek/pull/9) - Use `ensembl-vep` `95.2` instead of `96.0` -- [#11](https://github.com/nf-core/sarek/pull/11) - Summary HTML from VWP is now in the `Reports` directory +- [#11](https://github.com/nf-core/sarek/pull/11) - Summary HTML from `VEP` is now in the `Reports` directory - [#12](https://github.com/nf-core/sarek/pull/12) - Update configuration files - [#12](https://github.com/nf-core/sarek/pull/12) - Disable `Docker` in `singularity` profile - [#12](https://github.com/nf-core/sarek/pull/12) - Disable `Singularity` in `docker` profile @@ -119,23 +124,23 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) - [#18](https://github.com/nf-core/sarek/pull/18) - Add `--no-reports` for all tests but MULTIPLE in Jenkins - [#18](https://github.com/nf-core/sarek/pull/18), [#29](https://github.com/nf-core/sarek/pull/29) - `--noReports` is now `--skipQC all` - [#18](https://github.com/nf-core/sarek/pull/18), [#21](https://github.com/nf-core/sarek/pull/21) - Update logo -- [#21](https://github.com/nf-core/sarek/pull/21) - Moved smallGRCh37 path to `genomes.config` +- [#21](https://github.com/nf-core/sarek/pull/21) - Moved `smallGRCh37` path to `genomes.config` - [#23](https://github.com/nf-core/sarek/pull/23) - Rename `genomeFile`, `genomeIndex` and `genomeDict` by `fasta`, `fastaFai` and `dict` - [#23](https://github.com/nf-core/sarek/pull/23) - `--sample` is now deprecated, use `--input` instead - [#23](https://github.com/nf-core/sarek/pull/23) - `--genomeFile` is now deprecated, use `--fasta` instead - [#23](https://github.com/nf-core/sarek/pull/23) - `--genomeIndex` is now deprecated, use `--fastaFai` instead - [#23](https://github.com/nf-core/sarek/pull/23) - `--genomeDict` is now deprecated, use `--dict` instead -- [#24](https://github.com/nf-core/sarek/pull/24) - iGenomes config now contains germline resource for GATK4 Mutect2 +- [#24](https://github.com/nf-core/sarek/pull/24) - `AWS iGenomes` config now contains germline resource for `GATK4 Mutect2` - [#30](https://github.com/nf-core/sarek/pull/30) - Simplify code for `MapReads` process -- [#24](https://github.com/nf-core/sarek/pull/24) - iGenomes config now contains germline resource for `GATK4 Mutect2` -- [#31](https://github.com/nf-core/sarek/pull/31) - Move extra CI to GitHub Actions nf-core extra CI +- [#24](https://github.com/nf-core/sarek/pull/24) - `AWS iGenomes` config now contains germline resource for `GATK4 Mutect2` +- [#31](https://github.com/nf-core/sarek/pull/31) - Move extra CI to `GitHub Actions` nf-core extra CI - [#32](https://github.com/nf-core/sarek/pull/32), [#33](https://github.com/nf-core/sarek/pull/33) - Install `ASCAT` with `conda` in the `environment.yml` file -- [#33](https://github.com/nf-core/sarek/pull/33) - use `workflow.manifest.version` to specify workflow version in path to scripts for `ControlFREEC` and `VEP` processes +- [#33](https://github.com/nf-core/sarek/pull/33) - Use `workflow.manifest.version` to specify workflow version in path to scripts for `ControlFREEC` and `VEP` processes - [#35](https://github.com/nf-core/sarek/pull/35) - Building indexes is now done in `main.nf` - [#35](https://github.com/nf-core/sarek/pull/35) - `build.nf` script now only download cache, so renamed to `downloadcache.nf` - [#35](https://github.com/nf-core/sarek/pull/35) - Use `tabix` instead of `IGVtools` to build vcf indexes - [#35](https://github.com/nf-core/sarek/pull/35) - Refactor references handling -- [#35](https://github.com/nf-core/sarek/pull/35) - use Channel values instead of `referenceMap` +- [#35](https://github.com/nf-core/sarek/pull/35) - Use Channel values instead of `referenceMap` - [#37](https://github.com/nf-core/sarek/pull/37) - Bump version for Release - [#38](https://github.com/nf-core/sarek/pull/38) - File names before merge is based on `${idSample}_${idRun}` instead of `${idRun}` @@ -145,8 +150,8 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) - [#13](https://github.com/nf-core/sarek/pull/13) - Removed `BamQCmapped` and `BamQCrecalibrated` processes - [#13](https://github.com/nf-core/sarek/pull/13) - Removed `CompressVCF` - [#18](https://github.com/nf-core/sarek/pull/18) - Removed params `--noReports` -- [#24](https://github.com/nf-core/sarek/pull/18) - Removed GATK3.X MuTect2 -- [#31](https://github.com/nf-core/sarek/pull/31) - Remove extra CI from Travis CI and GitHub Actions nf-core CI +- [#24](https://github.com/nf-core/sarek/pull/18) - Removed `GATK3.X Mutect2` +- [#31](https://github.com/nf-core/sarek/pull/31) - Remove extra CI from `Travis CI` and `GitHub Actions` nf-core CI - [#32](https://github.com/nf-core/sarek/pull/32), [#35](https://github.com/nf-core/sarek/pull/35) - Clean up `environment.yml` file - [#35](https://github.com/nf-core/sarek/pull/35) - Remove building indexes from `build.nf` script - [#35](https://github.com/nf-core/sarek/pull/35) - Remove helper script `build_reference.sh` @@ -156,21 +161,21 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) ### `Fixed` -- [#3](https://github.com/nf-core/sarek/pull/3) - Fix Docker ownership +- [#3](https://github.com/nf-core/sarek/pull/3) - Fix `Docker` ownership - [#11](https://github.com/nf-core/sarek/pull/11) - Fix `MergeMpileup` PublishDir - [#13](https://github.com/nf-core/sarek/pull/13) - Fix merge in annotation - [#14](https://github.com/nf-core/sarek/pull/14) - Fix output name for vcf files -- [#16](https://github.com/nf-core/sarek/pull/16) - Fix path to Rscript +- [#16](https://github.com/nf-core/sarek/pull/16) - Fix path to `Rscript` - [#18](https://github.com/nf-core/sarek/pull/18) - Improve cpu usage -- [#18](https://github.com/nf-core/sarek/pull/18) - Use same font for nf-core and sarek in ascii art +- [#18](https://github.com/nf-core/sarek/pull/18) - Use same font for `nf-core` and `sarek` in ascii art - [#20](https://github.com/nf-core/sarek/pull/20) - Use new logo in README - [#20](https://github.com/nf-core/sarek/pull/20) - Fix path to references genomes - [#22](https://github.com/nf-core/sarek/pull/22) - Fix `--singleCPUMem` issue -- [#30](https://github.com/nf-core/sarek/pull/30) - fix choice between `inputPairReadsFastQC` and `inputBAMFastQC` channels +- [#30](https://github.com/nf-core/sarek/pull/30) - Fix choice between `inputPairReadsFastQC` and `inputBAMFastQC` channels - [#31](https://github.com/nf-core/sarek/pull/31) - Fix badges according to nf-core lint -- [#31](https://github.com/nf-core/sarek/pull/31) - Fix rcolorbrewer version according to nf-core lint +- [#31](https://github.com/nf-core/sarek/pull/31) - Fix `rcolorbrewer` version according to nf-core lint - [#33](https://github.com/nf-core/sarek/pull/33) - Fix MD Linting -- [#38](https://github.com/nf-core/sarek/pull/38) - Avoid collision in MultiQC +- [#38](https://github.com/nf-core/sarek/pull/38) - Avoid collision in `MultiQC` - [#39](https://github.com/nf-core/sarek/pull/39) - Fix `ch_dbsnp` channel ### `Deprecated` @@ -185,10 +190,12 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) ### `Fixed` -- [#742](https://github.com/SciLifeLab/Sarek/pull/742) - Fix output dirs (HaplotypeCaller that was not recognized by annotate.nf introduced by [#728](https://github.com/SciLifeLab/Sarek/pull/728)) +- [#742](https://github.com/SciLifeLab/Sarek/pull/742) - Fix output dirs (`HaplotypeCaller` that was not recognized by `annotate.nf` introduced by [#728](https://github.com/SciLifeLab/Sarek/pull/728)) ## [2.3] - Äpar - 2019-02-27 +Äpar is one of the main massif in the Sarek National Park. + ### `Added` - [#628](https://github.com/SciLifeLab/Sarek/pull/628), [#722](https://github.com/SciLifeLab/Sarek/pull/722) - `ASCAT` now use `.gc` file @@ -200,50 +207,50 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) - [#722](https://github.com/SciLifeLab/Sarek/pull/722) - Add path to ASCAT `.gc` file in `igenomes.config` - [#728](https://github.com/SciLifeLab/Sarek/pull/728) - Update `Sarek-data` submodule with multiple patients TSV file - [#732](https://github.com/SciLifeLab/Sarek/pull/732) - Add `cadd_WG_SNVs`, `cadd_WG_SNVs_tbi`, `cadd_InDels`, `cadd_InDels_tbi` and `cadd_cache` params -- [#732](https://github.com/SciLifeLab/Sarek/pull/732) - Add tabix indexed cache for VEP +- [#732](https://github.com/SciLifeLab/Sarek/pull/732) - Add `tabix` indexed cache for `VEP` - [#732](https://github.com/SciLifeLab/Sarek/pull/732) - New `DownloadCADD` process to download CADD files - [#732](https://github.com/SciLifeLab/Sarek/pull/732) - Specify values for `cadd_WG_SNVs`, `cadd_WG_SNVs_tbi`, `cadd_InDels`, `cadd_InDels_tbi` and `cadd_cache` params in `munin.conf` file - [#732](https://github.com/SciLifeLab/Sarek/pull/732) - Use `cadd_cache` param for optional use of CADD VEP plugin in `annotate.nf` -- [#732](https://github.com/SciLifeLab/Sarek/pull/732) - VEP cache has now fasta files for `--HGVS` -- [#735](https://github.com/SciLifeLab/Sarek/pull/735) - Added `--exome` for Manta, and for StrelkaBP -- [#735](https://github.com/SciLifeLab/Sarek/pull/735) - Added Travis CI test for targeted +- [#732](https://github.com/SciLifeLab/Sarek/pull/732) - `VEP` cache has now fasta files for `--HGVS` +- [#735](https://github.com/SciLifeLab/Sarek/pull/735) - Added `--exome` for `Manta`, and for `StrelkaBP` +- [#735](https://github.com/SciLifeLab/Sarek/pull/735) - Added `Travis CI` test for targeted ### `Changed` - [#710](https://github.com/SciLifeLab/Sarek/pull/710) - Improve release checklist and script - [#711](https://github.com/SciLifeLab/Sarek/pull/711) - Improve configuration priorities -- [#716](https://github.com/SciLifeLab/Sarek/pull/716) - Update paths to containers and iGenomes +- [#716](https://github.com/SciLifeLab/Sarek/pull/716) - Update paths to containers and `AWS iGenomes` - [#717](https://github.com/SciLifeLab/Sarek/pull/717) - `checkFileExtension` has changed to `hasExtension`, and now only verify if file has extension - [#717](https://github.com/SciLifeLab/Sarek/pull/717) - `fastqFiles` renamed to `inputFiles` - [#717](https://github.com/SciLifeLab/Sarek/pull/717) - `mapping` step can now map BAM files too - [#717](https://github.com/SciLifeLab/Sarek/pull/717) - `MapReads` can now convert BAM to FASTQ and feed it to BWA on the fly - [#717](https://github.com/SciLifeLab/Sarek/pull/717), [#732](https://github.com/SciLifeLab/Sarek/pull/732) - Update documentation -- [#719](https://github.com/SciLifeLab/Sarek/pull/719) - `snpeff` and `vep` containers are now built with conda +- [#719](https://github.com/SciLifeLab/Sarek/pull/719) - `snpeff` and `vep` containers are now built with `conda` - [#719](https://github.com/SciLifeLab/Sarek/pull/719) - `vepCacheVersion` is now defined in `conf/genomes.config` or `conf/igenomes.config` - [#722](https://github.com/SciLifeLab/Sarek/pull/722) - Add path to ASCAT `.gc` file in `igenomes.config` - [#722](https://github.com/SciLifeLab/Sarek/pull/722) - Update `Sarek-data` submodule - [#723](https://github.com/SciLifeLab/Sarek/pull/723), [#725](https://github.com/SciLifeLab/Sarek/pull/725) - Update docs -- [#724](https://github.com/SciLifeLab/Sarek/pull/724) - Improved AwsBatch configuration +- [#724](https://github.com/SciLifeLab/Sarek/pull/724) - Improved `AWS batch` configuration - [#728](https://github.com/SciLifeLab/Sarek/pull/728) - Improved usage of `targetBED` params -- [#728](https://github.com/SciLifeLab/Sarek/pull/728) - Strelka Best Practices output is now prefixed with `StrelkaBP_` +- [#728](https://github.com/SciLifeLab/Sarek/pull/728) - `Strelka` Best Practices output is now prefixed with `StrelkaBP_` - [#728](https://github.com/SciLifeLab/Sarek/pull/728) - VCFs and Annotated VCFs are now ordered by Patient, then tools - [#732](https://github.com/SciLifeLab/Sarek/pull/732) - Merge `buildContainers.nf` and `buildReferences.nf` in `build.nf` - [#732](https://github.com/SciLifeLab/Sarek/pull/732) - Reduce number of CPUs for `RunVEP` to `4` cf: [VEP docs](https://www.ensembl.org/info/docs/tools/vep/script/vep_other.html) -- [#732](https://github.com/SciLifeLab/Sarek/pull/732) - Update VEP from `95.1` to `95.2` +- [#732](https://github.com/SciLifeLab/Sarek/pull/732) - Update `VEP` from `95.1` to `95.2` ### `Removed` - [#715](https://github.com/SciLifeLab/Sarek/pull/715) - Remove `defReferencesFiles` function from `buildReferences.nf` - [#719](https://github.com/SciLifeLab/Sarek/pull/719) - `snpEff` base container is no longer used -- [#721](https://github.com/SciLifeLab/Sarek/pull/721) - Remove COSMIC docs +- [#721](https://github.com/SciLifeLab/Sarek/pull/721) - Remove `COSMIC` docs - [#728](https://github.com/SciLifeLab/Sarek/pull/728) - Remove `defineDirectoryMap()` -- [#732](https://github.com/SciLifeLab/Sarek/pull/732) - Removed `--database` option for VEP cf: [VEP docs](https://www.ensembl.org/info/docs/tools/vep/script/vep_other.html) +- [#732](https://github.com/SciLifeLab/Sarek/pull/732) - Remove `--database` option for VEP cf: [VEP docs](https://www.ensembl.org/info/docs/tools/vep/script/vep_other.html) ### `Fixed` -- [#720](https://github.com/SciLifeLab/Sarek/pull/720) - bamQC is now run on the recalibrated bams, and not after MarkDuplicates -- [#726](https://github.com/SciLifeLab/Sarek/pull/726) - Fix Ascat ref file input (one file can't be a set) -- [#727](https://github.com/SciLifeLab/Sarek/pull/727) - bamQC outputs are no longer overwritten (name of dir is now the file instead of sample) +- [#720](https://github.com/SciLifeLab/Sarek/pull/720) - `bamQC` is now run on the recalibrated bams, and not after `MarkDuplicates` +- [#726](https://github.com/SciLifeLab/Sarek/pull/726) - Fix `Ascat` ref file input (one file can't be a set) +- [#727](https://github.com/SciLifeLab/Sarek/pull/727) - `bamQC` outputs are no longer overwritten (name of dir is now the file instead of sample) - [#728](https://github.com/SciLifeLab/Sarek/pull/728) - Fix issue with annotation that was consuming `cache` channels - [#728](https://github.com/SciLifeLab/Sarek/pull/728) - Fix multi sample TSV file [#691](https://github.com/SciLifeLab/Sarek/issues/691) - [#733](https://github.com/SciLifeLab/Sarek/pull/733) - Fix the possibility to specify reference files on the command line @@ -255,31 +262,31 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) - [#671](https://github.com/SciLifeLab/Sarek/pull/671) - New `publishDirMode` param and docs - [#673](https://github.com/SciLifeLab/Sarek/pull/673), [#675](https://github.com/SciLifeLab/Sarek/pull/675), [#676](https://github.com/SciLifeLab/Sarek/pull/676) - Profiles for BinAC and CFC clusters in Tübingen - [#679](https://github.com/SciLifeLab/Sarek/pull/679) - Add container for `CreateIntervalBeds` -- [#692](https://github.com/SciLifeLab/Sarek/pull/692), [#697](https://github.com/SciLifeLab/Sarek/pull/697) - Add AWS iGenomes possibilities (within `conf/igenomes.conf`) +- [#692](https://github.com/SciLifeLab/Sarek/pull/692), [#697](https://github.com/SciLifeLab/Sarek/pull/697) - Add `AWS iGenomes` possibilities (within `conf/igenomes.conf`) - [#694](https://github.com/SciLifeLab/Sarek/pull/694) - Add monochrome and grey logos for light or dark background - [#698](https://github.com/SciLifeLab/Sarek/pull/698) - Add btb profile for munin server -- [#702](https://github.com/SciLifeLab/Sarek/pull/702) - Add font-ttf-dejavu-sans-mono `2.37` and fontconfig `2.12.6` to container +- [#702](https://github.com/SciLifeLab/Sarek/pull/702) - Add `font-ttf-dejavu-sans-mono` `2.37` and `fontconfig` `2.12.6` to container ### `Changed` - [#663](https://github.com/SciLifeLab/Sarek/pull/663) - Update `do_release.sh` script -- [#671](https://github.com/SciLifeLab/Sarek/pull/671) - publishDir modes are now params +- [#671](https://github.com/SciLifeLab/Sarek/pull/671) - `publishDir` modes are now params - [#677](https://github.com/SciLifeLab/Sarek/pull/677), [#698](https://github.com/SciLifeLab/Sarek/pull/698), [#703](https://github.com/SciLifeLab/Sarek/pull/703) - Update docs -- [#678](https://github.com/SciLifeLab/Sarek/pull/678) - Changing VEP to v92 and adjusting CPUs for VEP -- [#679](https://github.com/SciLifeLab/Sarek/pull/679) - Update old awsbatch configuration -- [#682](https://github.com/SciLifeLab/Sarek/pull/682) - Specifications for memory and cpus for awsbatch -- [#693](https://github.com/SciLifeLab/Sarek/pull/693) - Qualimap bamQC is now ran after mapping and after recalibration for better QC -- [#700](https://github.com/SciLifeLab/Sarek/pull/700) - Update GATK to `4.0.9.0` -- [#702](https://github.com/SciLifeLab/Sarek/pull/702) - Update FastQC to `0.11.8` -- [#705](https://github.com/SciLifeLab/Sarek/pull/705) - Change `--TMP_DIR` by `--tmp-dir` for GATK `4.0.9.0` BaseRecalibrator -- [#706](https://github.com/SciLifeLab/Sarek/pull/706) - Update TravisCI testing +- [#678](https://github.com/SciLifeLab/Sarek/pull/678) - Changing `VEP` to `v92` and adjusting CPUs for `VEP` +- [#679](https://github.com/SciLifeLab/Sarek/pull/679) - Update old `awsbatch` configuration +- [#682](https://github.com/SciLifeLab/Sarek/pull/682) - Specifications for memory and cpus for `awsbatch` +- [#693](https://github.com/SciLifeLab/Sarek/pull/693) - `Qualimap bamQC` is now ran after mapping and after recalibration for better QC +- [#700](https://github.com/SciLifeLab/Sarek/pull/700) - Update `GATK` to `4.0.9.0` +- [#702](https://github.com/SciLifeLab/Sarek/pull/702) - Update `FastQC` to `0.11.8` +- [#705](https://github.com/SciLifeLab/Sarek/pull/705) - Change `--TMP_DIR` by `--tmp-dir` for `GATK` `4.0.9.0` `BaseRecalibrator` +- [#706](https://github.com/SciLifeLab/Sarek/pull/706) - Update `Travis CI` testing ### `Fixed` -- [#665](https://github.com/SciLifeLab/Sarek/pull/665) - Input bam file now has always the same name (whether it is from a single fastq pair or multiple) in the MarkDuplicates process, so metrics too -- [#672](https://github.com/SciLifeLab/Sarek/pull/672) - process `PullSingularityContainers` from `buildContainers.nf` now expect a file with the correct `.simg` extension for singularity images, and no longer the `.img` one. -- [#679](https://github.com/SciLifeLab/Sarek/pull/679) - Add publishDirMode for `germlineVC.nf` -- [#700](https://github.com/SciLifeLab/Sarek/pull/700) - Fix [#699](https://github.com/SciLifeLab/Sarek/issues/699) missing DP in the FORMAT column VCFs for MuTect2 +- [#665](https://github.com/SciLifeLab/Sarek/pull/665) - Input bam file now has always the same name (whether it is from a single fastq pair or multiple) in the `MarkDuplicates` process, so metrics too +- [#672](https://github.com/SciLifeLab/Sarek/pull/672) - Process `PullSingularityContainers` from `buildContainers.nf` now expect a file with the correct `.simg` extension for singularity images, and no longer the `.img` one. +- [#679](https://github.com/SciLifeLab/Sarek/pull/679) - Add `publishDirMode` for `germlineVC.nf` +- [#700](https://github.com/SciLifeLab/Sarek/pull/700) - Fix [#699](https://github.com/SciLifeLab/Sarek/issues/699) missing DP in the FORMAT column VCFs for Mutect2 - [#702](https://github.com/SciLifeLab/Sarek/pull/702) - Fix [#701](https://github.com/SciLifeLab/Sarek/issues/701) - [#705](https://github.com/SciLifeLab/Sarek/pull/705) - Fix [#704](https://github.com/SciLifeLab/Sarek/issues/704) @@ -288,16 +295,18 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) ### `Changed` - [#646](https://github.com/SciLifeLab/Sarek/pull/646) - Update [`pathfindr`](https://github.com/NBISweden/pathfindr) submodule -- [#659](https://github.com/SciLifeLab/Sarek/pull/659) - Update Nextflow to `0.32.0` +- [#659](https://github.com/SciLifeLab/Sarek/pull/659) - Update `Nextflow` to `0.32.0` - [#660](https://github.com/SciLifeLab/Sarek/pull/660) - Update docs ### `Fixed` - [#657](https://github.com/SciLifeLab/Sarek/pull/657) - Fix `RunMultiQC.nf` bug -- [#659](https://github.com/SciLifeLab/Sarek/pull/659) - Fix bugs due to updating Nextflow +- [#659](https://github.com/SciLifeLab/Sarek/pull/659) - Fix bugs due to updating `Nextflow` ## [2.2.0] - Skårki - 2018-09-21 +Skårki is one of the main massif in the Sarek National Park. + ### `Added` - [#613](https://github.com/SciLifeLab/Sarek/pull/613) - Add Issue Templates (bug report and feature request) @@ -312,23 +321,23 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) ### `Changed` -- [#608](https://github.com/SciLifeLab/Sarek/pull/608) - Update Nextflow required version +- [#608](https://github.com/SciLifeLab/Sarek/pull/608) - Update `Nextflow` required version - [#615](https://github.com/SciLifeLab/Sarek/pull/615) - Use `splitCsv` instead of `readlines` -- [#616](https://github.com/SciLifeLab/Sarek/pull/616) - Update CHANGELOG +- [#616](https://github.com/SciLifeLab/Sarek/pull/616) - Update `CHANGELOG` - [#621](https://github.com/SciLifeLab/Sarek/pull/621), [#638](https://github.com/SciLifeLab/Sarek/pull/638) - Improve install script - [#621](https://github.com/SciLifeLab/Sarek/pull/621), [#638](https://github.com/SciLifeLab/Sarek/pull/638) - Simplify tests - [#627](https://github.com/SciLifeLab/Sarek/pull/627), [#629](https://github.com/SciLifeLab/Sarek/pull/629), [#637](https://github.com/SciLifeLab/Sarek/pull/637) - Refactor docs - [#629](https://github.com/SciLifeLab/Sarek/pull/629) - Refactor config -- [#632](https://github.com/SciLifeLab/Sarek/pull/632) - Use 2 threads and 2 cpus FastQC processes +- [#632](https://github.com/SciLifeLab/Sarek/pull/632) - Use 2 threads and 2 cpus `FastQC` processes - [#637](https://github.com/SciLifeLab/Sarek/pull/637) - Update tool version gathering - [#638](https://github.com/SciLifeLab/Sarek/pull/638) - Use correct `.simg` extension for Singularity images - [#639](https://github.com/SciLifeLab/Sarek/pull/639) - Smaller refactoring of the docs - [#640](https://github.com/SciLifeLab/Sarek/pull/640) - Update RELEASE_CHECKLIST -- [#642](https://github.com/SciLifeLab/Sarek/pull/642) - MultiQC 1.5 -> 1.6 -- [#642](https://github.com/SciLifeLab/Sarek/pull/642) - Qualimap 2.2.2a -> 2.2.2b -- [#642](https://github.com/SciLifeLab/Sarek/pull/642) - Update conda channel order priorities -- [#642](https://github.com/SciLifeLab/Sarek/pull/642) - VCFanno 0.2.8 -> 0.3.0 -- [#642](https://github.com/SciLifeLab/Sarek/pull/642) - VCFtools 0.1.15 -> 0.1.16 +- [#642](https://github.com/SciLifeLab/Sarek/pull/642) - `MultiQC` 1.5 -> 1.6 +- [#642](https://github.com/SciLifeLab/Sarek/pull/642) - `Qualimap` 2.2.2a -> 2.2.2b +- [#642](https://github.com/SciLifeLab/Sarek/pull/642) - Update `conda` channel order priorities +- [#642](https://github.com/SciLifeLab/Sarek/pull/642) - `VCFanno` 0.2.8 -> 0.3.0 +- [#642](https://github.com/SciLifeLab/Sarek/pull/642) - `VCFtools` 0.1.15 -> 0.1.16 ### `Removed` @@ -338,34 +347,36 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) ### `Fixed` -- [#621](https://github.com/SciLifeLab/Sarek/pull/621) - Fix VEP tests +- [#621](https://github.com/SciLifeLab/Sarek/pull/621) - Fix `VEP` tests - [#637](https://github.com/SciLifeLab/Sarek/pull/637) - Fix links in MD files ## [2.1.0] - Ruotes - 2018-08-14 +Ruotes is one of the main massif in the Sarek National Park. + ### `Added` - [#555](https://github.com/SciLifeLab/Sarek/pull/555) - `snpEff` output into `VEP` - [#556](https://github.com/SciLifeLab/Sarek/pull/556) - `Strelka` Best Practices - [#563](https://github.com/SciLifeLab/Sarek/pull/563) - Use `SnpEFF` reports in `MultiQC` - [#568](https://github.com/SciLifeLab/Sarek/pull/568) - `VCFTools` process `RunVcftools` for QC -- [#574](https://github.com/SciLifeLab/Sarek/pull/574), [#580](https://github.com/SciLifeLab/Sarek/pull/580) - Abstracts for NPMI, JOBIM and EACR25 +- [#574](https://github.com/SciLifeLab/Sarek/pull/574), [#580](https://github.com/SciLifeLab/Sarek/pull/580) - Abstracts for `NPMI`, `JOBIM` and `EACR25` - [#577](https://github.com/SciLifeLab/Sarek/pull/577) - New repository for testing: [Sarek-data](https://github.com/SciLifeLab/Sarek-data) - [#595](https://github.com/SciLifeLab/Sarek/pull/595) - New library `QC` for functions `bamQC`, `bcftools`, `samtoolsStats`, `vcftools`, `getVersionBCFtools`, `getVersionGATK`, `getVersionManta`, `getVersionSnpEFF`, `getVersionStrelka`, `getVersionVCFtools`, `getVersionVEP` - [#595](https://github.com/SciLifeLab/Sarek/pull/595) - New Processes `GetVersionBCFtools`, `GetVersionGATK`, `GetVersionManta`, `GetVersionSnpEFF`, `GetVersionStrelka`, `GetVersionVCFtools`, `GetVersionVEP` -- [#595](https://github.com/SciLifeLab/Sarek/pull/595) - new Python script `bin/scrape_tool_versions.py` inspired by @ewels and @apeltzer +- [#595](https://github.com/SciLifeLab/Sarek/pull/595) - New `Python` script `bin/scrape_tool_versions.py` inspired by @ewels and @apeltzer - [#595](https://github.com/SciLifeLab/Sarek/pull/595) - New QC Process `RunVcftools` -- [#596](https://github.com/SciLifeLab/Sarek/pull/596) - New profile for BinAC cluster +- [#596](https://github.com/SciLifeLab/Sarek/pull/596) - New profile for `BinAC` cluster - [#597](https://github.com/SciLifeLab/Sarek/pull/597) - New function `sarek_ascii()` in `SarekUtils` - [#599](https://github.com/SciLifeLab/Sarek/pull/599), [#602](https://github.com/SciLifeLab/Sarek/pull/602) - New Process `CompressVCF` -- [#601](https://github.com/SciLifeLab/Sarek/pull/601), [#603](https://github.com/SciLifeLab/Sarek/pull/603) - Container for GATK4 +- [#601](https://github.com/SciLifeLab/Sarek/pull/601), [#603](https://github.com/SciLifeLab/Sarek/pull/603) - Container for `GATK4` - [#606](https://github.com/SciLifeLab/Sarek/pull/606) - Add test data as a submodule from [`Sarek-data`](https://github.com/SciLifeLab/Sarek-data) - [#608](https://github.com/SciLifeLab/Sarek/pull/608) - Add documentation on how to install Nextflow on `bianca` ### `Changed` - [#557](https://github.com/SciLifeLab/Sarek/pull/557), [#583](https://github.com/SciLifeLab/Sarek/pull/583), [#585](https://github.com/SciLifeLab/Sarek/pull/585), [#588](https://github.com/SciLifeLab/Sarek/pull/588) - Update help -- [#560](https://github.com/SciLifeLab/Sarek/pull/560) - GitHub langage for the repository is now `Nextflow` +- [#560](https://github.com/SciLifeLab/Sarek/pull/560) - `GitHub` langage for the repository is now `Nextflow` - [#561](https://github.com/SciLifeLab/Sarek/pull/561) - `do_all.sh` build only containers for one genome reference (default `GRCh38`) only - [#571](https://github.com/SciLifeLab/Sarek/pull/571) - Only one container for all QC tools - [#582](https://github.com/SciLifeLab/Sarek/pull/582), [#587](https://github.com/SciLifeLab/Sarek/pull/587) - Update figures @@ -378,10 +389,10 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) - [#599](https://github.com/SciLifeLab/Sarek/pull/599) - Merge is tested with `ANNOTATEALL` - [#604](https://github.com/SciLifeLab/Sarek/pull/604) - Synching `GRCh38` `wgs_calling_regions` bedfiles - [#607](https://github.com/SciLifeLab/Sarek/pull/607) - One container approach -- [#607](https://github.com/SciLifeLab/Sarek/pull/607) - Update to GATK4 -- [#608](https://github.com/SciLifeLab/Sarek/pull/608) - Update Nextflow required version -- [#616](https://github.com/SciLifeLab/Sarek/pull/616) - Update CHANGELOG -- [#617](https://github.com/SciLifeLab/Sarek/pull/617) - Replace deprecated $name syntax with withName +- [#607](https://github.com/SciLifeLab/Sarek/pull/607) - Update to `GATK4` +- [#608](https://github.com/SciLifeLab/Sarek/pull/608) - Update `Nextflow` required version +- [#616](https://github.com/SciLifeLab/Sarek/pull/616) - Update `CHANGELOG` +- [#617](https://github.com/SciLifeLab/Sarek/pull/617) - Replace deprecated `Nextflow ``$name` syntax with `withName` ### `Fixed` @@ -389,24 +400,26 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) - [#566](https://github.com/SciLifeLab/Sarek/pull/566) - `slurmDownload` profile - [#579](https://github.com/SciLifeLab/Sarek/pull/579), [#584](https://github.com/SciLifeLab/Sarek/pull/584) - `Manta` output reorganized after modification for `Strelka Best Practices` process - [#585](https://github.com/SciLifeLab/Sarek/pull/583) - Trace file is plain txt -- [#590](https://github.com/SciLifeLab/Sarek/pull/590), [#593](https://github.com/SciLifeLab/Sarek/pull/593) - Fix Singularity installation in Travis CI testing -- [#598](https://github.com/SciLifeLab/Sarek/pull/598), [#601](https://github.com/SciLifeLab/Sarek/pull/601) - Fixes for Python script `selectROI.py` to work with CLC viewer +- [#590](https://github.com/SciLifeLab/Sarek/pull/590), [#593](https://github.com/SciLifeLab/Sarek/pull/593) - Fix `Singularity` installation in `Travis CI` testing +- [#598](https://github.com/SciLifeLab/Sarek/pull/598), [#601](https://github.com/SciLifeLab/Sarek/pull/601) - Fixes for `Python` script `selectROI.py` to work with `CLC` viewer ### `Removed` -- [#607](https://github.com/SciLifeLab/Sarek/pull/607) - Remove Mutect1 +- [#607](https://github.com/SciLifeLab/Sarek/pull/607) - Remove `Mutect1` ## [2.0.0] - 2018-03-23 +First release under the `Sarek` name, from the National Park in Northern Sweden + ### `Added` -- basic wrapper script +- Basic wrapper script - Abstract, posters and figures -- ROI selector and FreeBayes sanitizer scripts +- ROI selector and `FreeBayes` sanitizer scripts - New logo and icon for the project -- check for existing tumor/normal channel +- Check for existing tumor/normal channel - `SarekUtils` with `checkParams()`, `checkParameterList()`, `checkParameterExistence()` and `isAllowedParams()` functions -- some `runOptions` for `docker` (prevent some user right problem) +- Some `runOptions` for `docker` (prevent some user right problem) - This `CHANGELOG` ### `Changed` @@ -415,22 +428,22 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) - Dissect Workflow in 5 new scripts: `annotate.nf`, `main.nf`, `germlineVC.nf`, `runMultiQC.nf` and `somaticVC.nf` - `report.html`, `timeline.html` and `trace.html` are generated in `Reports/` - `--version` is now used to define the workflow version -- most params are now defined in the base.config file instead of in the scripts -- update RELEASE_CHECKLIST.md +- Most params are now defined in the `base.config` file instead of in the scripts +- Update `RELEASE_CHECKLIST.md` - `checkParams()`, `checkParameterList()`, `checkParameterExistence()` and `isAllowedParams()` in script functions are now called within `SarekUtils` - `nf_required_version` is now `params.nfRequiredVersion` -- in `buildReferences.nf` script, channels now begin by `ch_`, and files by `f_` -- use `PublishDir mode: 'link'` instead of `copy` +- In `buildReferences.nf` script, channels now begin by `ch_`, and files by `f_` +- Use `PublishDir mode: 'link'` instead of `copy` - `directoryMap` now contains `params.outDir` -- [#539](https://github.com/SciLifeLab/Sarek/issues/539) - use Nextflow support of scratch -- reordered Travis CI tests -- update documentation +- [#539](https://github.com/SciLifeLab/Sarek/issues/539) - Use Nextflow support of scratch +- Reordered `Travis CI` tests +- Update documentation - `MultiQC` version in container from v`1.4` to v`1.5` - `vepgrch37` container base image from `release_90.6` to `release_92` - `vepgrch38` container base image from `release_90.6` to `release_92` - `VEP` version in containers from v`90` to v`91` - `nucleotidesPerSecond` is now `params.nucleotidesPerSecond` -- default `params.tag` is now `latest` instead of current version, so --tag needs to be specified with the right version to be sure of using the `containers` corresponding +- Default `params.tag` is now `latest` instead of current version, so `--tag` needs to be specified with the right version to be sure of using the `containers` corresponding ### `Deprecated` @@ -440,22 +453,22 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) ### `Removed` - `scripts/skeleton_batch.sh` -- old data and tsv files -- UPPMAX directories from containers +- Old data and tsv files +- `UPPMAX` directories from containers - `--step` in `annotate.nf`, `germlineVC.nf` and `somatic.nf` -- some `runOptions` for Singularity (binding not needed anymore on UPPMAX) +- Some `runOptions` for `Singularity` (binding not needed anymore on `UPPMAX`) - `download` profile ### `Fixed` -- [#530](https://github.com/SciLifeLab/Sarek/issues/530) - use `$PWD` for default `outDir` +- [#530](https://github.com/SciLifeLab/Sarek/issues/530) - Use `$PWD` for default `outDir` - [#533](https://github.com/SciLifeLab/Sarek/issues/533) - Replace `VEP` `--pick` option by `--per_gene` ## [1.2.5] - 2018-01-18 ### `Added` -- Zenodo for DOI +- `Zenodo` for DOI - Delivery README - Document use of the `--sampleDir` option - Contributing Guidelines @@ -464,22 +477,22 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) - `--outDir` - `awsbatch` profile - `aws-batch.config` config file -- `--noBAMQC` params (failing sometimes on Bianca) +- `--noBAMQC` params (failing sometimes on `Bianca`) ### `Changed` -- Update `Nextflow` to `0.26.0` (new fancy report + AWS Batch) -- Extra time on Travis CI testing +- Update `Nextflow` to `0.26.0` (new fancy report + `AWS Batch`) +- Extra time on `Travis CI` testing - Replace `bundleDir` by `params.genome_base` -- Update `MultiQC` to `1.3` (MEGAQC FTW) +- Update `MultiQC` to `1.3` (`MEGAQC` FTW) - Move and rename some test files ### `Fixed` -- Version of COSMIC GRCh37 v83 +- Version of `COSMIC` `GRCh37` `v83` - Write an error message when `--sampleDir` does not find any FASTQ files -- `base.config` for ConcatVCF process -- File specification for recalibrationReport in RecalibrateBam process (got error on AWS Batch) +- `base.config` for `ConcatVCF` process +- File specification for `recalibrationReport` in `RecalibrateBam` process (got error on `AWS Batch`) ## [1.2.4] - 2017-10-27 @@ -493,7 +506,7 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) ### `Fixed` -- [#357](https://github.com/SciLifeLab/Sarek/issues/357) - `ASCAT` works for GRCh38 +- [#357](https://github.com/SciLifeLab/Sarek/issues/357) - `ASCAT` works for `GRCh38` - [#471](https://github.com/SciLifeLab/Sarek/issues/471) - Running `Singularity` on `/scratch` - [#475](https://github.com/SciLifeLab/Sarek/issues/475) - 16 cpus for local executor - [#480](https://github.com/SciLifeLab/Sarek/issues/480) - No `tsv` file needed for step `annotate` @@ -519,7 +532,7 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) ### `Fixed` - [#471](https://github.com/SciLifeLab/Sarek/issues/471) - Running `Singularity` on /scratch -- [#472](https://github.com/SciLifeLab/Sarek/issues/472) - Update function to check Nextflow version +- [#472](https://github.com/SciLifeLab/Sarek/issues/472) - Update function to check `Nextflow` version - [#473](https://github.com/SciLifeLab/Sarek/issues/473) - Remove `returnMin()` function ## [1.2.0] - 2017-10-02 @@ -532,14 +545,14 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) ### `Added` -- Singularity possibilities +- `Singularity` possibilities ### `Changed` - Reports made by default - Intervals file can be a bed file -- Normal sample preprocessing + HaplotypeCaller is possible -- Better Travis CI tests +- Normal sample preprocessing + `HaplotypeCaller` is possible +- Better `Travis CI` tests ### `Fixed` @@ -549,7 +562,7 @@ Initial release of `nf-core/sarek`, created with the [nf-core](http://nf-co.re/) ### `Added` -- Docker possibilities +- `Docker` possibilities ## [0.9] - 2016-11-16 diff --git a/README.md b/README.md index d689576f1..addec50a1 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,24 @@ -# [![Sarek](docs/images/nf-core_sarek_logo.png "Sarek")](https://sarek.scilifelab.se/) +# [![Sarek](docs/images/nf-core_sarek_logo.png "Sarek")](https://nf-co.re/sarek) > **An open-source analysis pipeline to detect germline or somatic variants from whole genome or targeted sequencing** -[![Nextflow](https://img.shields.io/badge/nextflow-%E2%89%A519.04.0-brightgreen.svg)](https://www.nextflow.io/) -[![nf-core](https://img.shields.io/badge/nf--core-pipeline-brightgreen.svg)](https://nf-co.re/) +[![Nextflow](https://img.shields.io/badge/nextflow-%E2%89%A519.04.0-brightgreen)](https://www.nextflow.io/) +[![nf-core](https://img.shields.io/badge/nf--core-pipeline-brightgreen)](https://nf-co.re/) [![DOI](https://zenodo.org/badge/184289291.svg)](https://zenodo.org/badge/latestdoi/184289291) -[![Travis build status](https://img.shields.io/travis/nf-core/sarek.svg)](https://travis-ci.com/nf-core/sarek/) -[![CircleCi build status](https://img.shields.io/circleci/project/github/nf-core/sarek.svg)](https://circleci.com/gh/nf-core/sarek/) +[![GitHub Actions CI status](https://github.com/nf-core/sarek/workflows/nf-core%20CI/badge.svg)](https://github.com/nf-core/sarek/actions?query=workflow%3A%22sarek+CI%22) +[![GitHub Actions extra-CI status](https://github.com/nf-core/sarek/workflows/nf-core%20extra%20CI/badge.svg)](https://github.com/nf-core/sarek/actions?query=workflow%3A%22sarek+extra+CI%22) +[![GitHub Actions Linting status](https://github.com/nf-core/sarek/workflows/nf-core%20linting/badge.svg)](https://github.com/nf-core/sarek/actions?query=workflow%3A%22sarek+linting%22) +[![CircleCi build status](https://img.shields.io/circleci/project/github/nf-core/sarek?logo=circleci)](https://circleci.com/gh/nf-core/sarek/) -[![install with bioconda](https://img.shields.io/badge/install%20with-bioconda-brightgreen.svg)](http://bioconda.github.io/) -[![Docker Container available](https://img.shields.io/docker/automated/nfcore/sarek.svg)](https://hub.docker.com/r/nfcore/sarek/) -[![Install with Singularity](https://img.shields.io/badge/use%20with-singularity-purple.svg)](https://www.sylabs.io/docs/) +[![install with bioconda](https://img.shields.io/badge/install%20with-bioconda-brightgreen)](http://bioconda.github.io/) +[![Docker Container available](https://img.shields.io/docker/automated/nfcore/sarek)](https://hub.docker.com/r/nfcore/sarek/) +[![Install with Singularity](https://img.shields.io/badge/use%20with-singularity-purple)](https://www.sylabs.io/docs/) -[![Join us on Slack](https://img.shields.io/badge/slack-nfcore/sarek-blue.svg)](https://nfcore.slack.com/messages/CGFUX04HZ/) +[![Join us on Slack](https://img.shields.io/badge/slack-nfcore/sarek-blue)](https://nfcore.slack.com/channels/sarek) ## Introduction - - -Previously known as the Cancer Analysis Workflow (CAW), Sarek is a workflow designed to run analyses on whole genome or targeted sequencing data from regular samples or tumour / normal pairs and could include additional relapses. It's built using [Nextflow](https://www.nextflow.io), From e7d4428d68d50efea2a03ca0987f3c61d1a6168f Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Thu, 28 Nov 2019 17:28:48 +0100 Subject: [PATCH 02/14] remove Freebayes --- bin/scrape_software_versions.py | 2 -- docs/containers.md | 1 - docs/output.md | 14 --------- docs/usage.md | 9 +++--- environment.yml | 1 - main.nf | 52 +++++---------------------------- scripts/run_tests.sh | 4 +-- 7 files changed, 14 insertions(+), 69 deletions(-) diff --git a/bin/scrape_software_versions.py b/bin/scrape_software_versions.py index 617740e59..d85700a0e 100755 --- a/bin/scrape_software_versions.py +++ b/bin/scrape_software_versions.py @@ -9,7 +9,6 @@ 'bcftools': ['v_bcftools.txt', r"bcftools (\S+)"], 'BWA': ['v_bwa.txt', r"Version: (\S+)"], 'FastQC': ['v_fastqc.txt', r"FastQC v(\S+)"], - 'FreeBayes': ['v_freebayes.txt', r"version: v(\d\.\d\.\d+)"], 'GATK': ['v_gatk.txt', r"Version:(\S+)"], 'htslib': ['v_samtools.txt', r"htslib (\S+)"], 'Manta': ['v_manta.txt', r"([0-9.]+)"], @@ -33,7 +32,6 @@ results['bcftools'] = 'N/A' results['BWA'] = 'N/A' results['FastQC'] = 'N/A' -results['FreeBayes'] = 'N/A' results['GATK'] = 'N/A' results['htslib'] = 'N/A' results['Manta'] = 'N/A' diff --git a/docs/containers.md b/docs/containers.md index b75d74db9..d8a51fb63 100644 --- a/docs/containers.md +++ b/docs/containers.md @@ -20,7 +20,6 @@ For annotation, the main container can be used, but the cache has to be download - Contain **[BWA](https://github.com/lh3/bwa)** 0.7.17 - Contain **[Control-FREEC](https://github.com/BoevaLab/FREEC)** 11.5 - Contain **[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/)** 0.11.8 -- Contain **[FreeBayes](https://github.com/ekg/freebayes)** 1.3.1 - Contain **[GATK4](https://github.com/broadinstitute/gatk)** 4.1.4.0 - Contain **[GeneSplicer](https://ccb.jhu.edu/software/genesplicer/)** 1.0 - Contain **[HTSlib](https://github.com/samtools/htslib)** 1.9 diff --git a/docs/output.md b/docs/output.md index 58f9af63a..1f14fdf85 100644 --- a/docs/output.md +++ b/docs/output.md @@ -17,7 +17,6 @@ The pipeline processes data using the following steps: * `GATK ApplyBQSR` 2. [**Variant calling**](#Variant-Calling) * SNVs and small indels - * [`FreeBayes`](#FreeBayes) * [`GATK HaplotypeCaller`](#HaplotypeCaller) * [`GATK GenotypeGVCFs`](#GenotypeGVCFs) * [`GATK Mutect2`](#Mutect2) @@ -100,18 +99,6 @@ All the results regarding variant-calling are collected in this directory. Recalibrated BAM files can also be used as an input to start the Variant Calling, for more information see [TSV files output information](#TSV-files) -### FreeBayes - -[FreeBayes](https://github.com/ekg/freebayes) is a Bayesian genetic variant detector designed to find small polymorphisms, specifically SNPs, indels, MNPs, and complex events smaller than the length of a short-read sequencing alignment.. - -For further reading and documentation see the [FreeBayes manual](https://github.com/ekg/freebayes/blob/master/README.md#user-manual-and-guide). - -For a Tumor/Normal pair only: -**Output directory: `results/VariantCalling/[TUMOR_vs_NORMAL]/FreeBayes`** - -* `FreeBayes_[TUMORSAMPLE]_vs_[NORMALSAMPLE].vcf.gz` and `FreeBayes_[TUMORSAMPLE]_vs_[NORMALSAMPLE].vcf.gz.tbi` - * VCF with Tabix index - ### HaplotypeCaller [GATK HaplotypeCaller](https://github.com/broadinstitute/gatk) calls germline SNPs and indels via local re-assembly of haplotypes. @@ -331,7 +318,6 @@ For a Tumor/Normal pair only: This directory contains results from the final annotation steps: two software are used for annotation, [snpEff](http://snpeff.sourceforge.net/) and [VEP](https://www.ensembl.org/info/docs/tools/vep/index.html). Only a subset of the VCF files are annotated, and only variants that have a PASS filter. -FreeBayes results are not annotated in the moment yet as we are lacking a decent somatic filter. For HaplotypeCaller the germline variations are annotated for both the tumor and the normal sample. ### snpEff diff --git a/docs/usage.md b/docs/usage.md index ef4346006..4ddc0ba79 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -106,8 +106,9 @@ results # Finished results (configurable, see below) ``` The nf-core/sarek pipeline comes with more documentation about running the pipeline, found in the `docs/` directory: - * [Extra Documentation on variant calling](docs/variantcalling.md) - * [Extra Documentation on annotation](docs/annotation.md) + +* [Output and how to interpret the results](output.md) +* [Extra Documentation on annotation](annotation.md) ### Updating the pipeline @@ -268,7 +269,7 @@ Available: `mapping`, `recalibrate`, `variantcalling` and `annotate` ### `--tools` Use this to specify the tools to run: -Available: `ASCAT`, `ControlFREEC`, `FreeBayes`, `HaplotypeCaller`, `Manta`, `mpileup`, `MuTect2`, `Strelka`, `TIDDIT` +Available: `ASCAT`, `ControlFREEC`, `HaplotypeCaller`, `Manta`, `mpileup`, `Mutect2`, `Strelka`, `TIDDIT` ### `--noStrelkaBP` @@ -280,7 +281,7 @@ Use this to specify the target BED file for targeted or whole exome sequencing. ## Reference genomes -The pipeline config files come bundled with paths to the illumina iGenomes reference index files. +The pipeline config files come bundled with paths to the Illumina iGenomes reference index files. If running with docker or AWS, the configuration is set up to use the [AWS-iGenomes](https://ewels.github.io/AWS-iGenomes/) resource. ### `--genome` (using iGenomes) diff --git a/environment.yml b/environment.yml index 56e57e8f0..bcaea9197 100644 --- a/environment.yml +++ b/environment.yml @@ -13,7 +13,6 @@ dependencies: - control-freec=11.5 - ensembl-vep=98.2 - fastqc=0.11.8 - - freebayes=1.3.1 - gatk4=4.1.4.0 - genesplicer=1.0 - htslib=1.9 diff --git a/main.nf b/main.nf index 052b7fb26..fef623881 100644 --- a/main.nf +++ b/main.nf @@ -50,7 +50,7 @@ def helpMessage() { Available: Mapping, Recalibrate, VariantCalling, Annotate Default: Mapping --tools Specify tools to use for variant calling: - Available: ASCAT, ControlFREEC, FreeBayes, HaplotypeCaller + Available: ASCAT, ControlFREEC, HaplotypeCaller Manta, mpileup, Mutect2, Strelka, TIDDIT and/or for annotation: snpEff, VEP, merge @@ -348,7 +348,6 @@ process GetSoftwareVersions { echo "${workflow.nextflow.version}" &> v_nextflow.txt 2>&1 || true echo "SNPEFF version"\$(snpEff -h 2>&1) > v_snpeff.txt fastqc --version > v_fastqc.txt 2>&1 || true - freebayes --version > v_freebayes.txt 2>&1 || true gatk ApplyBQSR --help 2>&1 | grep Version: > v_gatk.txt 2>&1 || true multiqc --version &> v_multiqc.txt 2>&1 || true qualimap --version &> v_qualimap.txt 2>&1 || true @@ -1277,44 +1276,8 @@ intervalPairBam = pairBam.spread(bedIntervals) bamMpileup = bamMpileup.spread(intMpileup) -// intervals for Mutect2 calls, FreeBayes and pileups for Mutect2 filtering -(pairBamMutect2, pairBamFreeBayes, pairBamPileupSummaries) = intervalPairBam.into(3) - -// STEP FREEBAYES - -process FreeBayes { - tag {idSampleTumor + "_vs_" + idSampleNormal + "-" + intervalBed.baseName} - label 'cpus_1' - - input: - set idPatient, idSampleNormal, file(bamNormal), file(baiNormal), idSampleTumor, file(bamTumor), file(baiTumor), file(intervalBed) from pairBamFreeBayes - file(fasta) from ch_fasta - file(fastaFai) from ch_fastaFai - - output: - set val("FreeBayes"), idPatient, val("${idSampleTumor}_vs_${idSampleNormal}"), file("${intervalBed.baseName}_${idSampleTumor}_vs_${idSampleNormal}.vcf") into vcfFreeBayes - - when: 'freebayes' in tools - - script: - """ - freebayes \ - -f ${fasta} \ - --pooled-continuous \ - --pooled-discrete \ - --genotype-qualities \ - --report-genotype-likelihood-max \ - --allele-balance-priors-off \ - --min-alternate-fraction 0.03 \ - --min-repeat-entropy 1 \ - --min-alternate-count 2 \ - -t ${intervalBed} \ - ${bamTumor} \ - ${bamNormal} > ${intervalBed.baseName}_${idSampleTumor}_vs_${idSampleNormal}.vcf - """ -} - -vcfFreeBayes = vcfFreeBayes.groupTuple(by:[0,1,2]) +// intervals for Mutect2 calls and pileups for Mutect2 filtering +(pairBamMutect2, pairBamPileupSummaries) = intervalPairBam.into(2) // STEP GATK MUTECT2.1 - RAW CALLS @@ -1403,9 +1366,9 @@ process MergeMutect2Stats { // we are merging the VCFs that are called separatelly for different intervals // so we can have a single sorted VCF containing all the calls for a given caller -// STEP MERGING VCF - FREEBAYES, GATK HAPLOTYPECALLER & GATK MUTECT2 (UNFILTERED) +// STEP MERGING VCF - GATK HAPLOTYPECALLER & GATK MUTECT2 (UNFILTERED) -vcfConcatenateVCFs = mutect2Output.mix( vcfFreeBayes, vcfGenotypeGVCFs, gvcfHaplotypeCaller) +vcfConcatenateVCFs = mutect2Output.mix(vcfGenotypeGVCFs, gvcfHaplotypeCaller) vcfConcatenateVCFs = vcfConcatenateVCFs.dump(tag:'VCF to merge') process ConcatVCF { @@ -1424,7 +1387,7 @@ process ConcatVCF { // we have this funny *_* pattern to avoid copying the raw calls to publishdir set variantCaller, idPatient, idSample, file("*_*.vcf.gz"), file("*_*.vcf.gz.tbi") into vcfConcatenated - when: ('haplotypecaller' in tools || 'mutect2' in tools || 'freebayes' in tools) + when: ('haplotypecaller' in tools || 'mutect2' in tools) script: if (variantCaller == 'HaplotypeCallerGVCF') @@ -2120,7 +2083,7 @@ if (step == 'annotate') { 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 + // Excluding g.vcf from HaplotypeCaller // Basically it's: VariantCalling/*/{HaplotypeCaller,Manta,Mutect2,Strelka,TIDDIT}/*.vcf.gz // Without *SmallIndels.vcf.gz from Manta, and *.genome.vcf.gz from Strelka // The small snippet `vcf.minus(vcf.fileName)[-2]` catches idSample @@ -2662,7 +2625,6 @@ def defineToolList() { return [ 'ascat', 'controlfreec', - 'freebayes', 'haplotypecaller', 'manta', 'merge', diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index cb6db8890..4892df61f 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -84,7 +84,7 @@ else SUFFIX="" fi -OPTIONS="--tools FreeBayes,HaplotypeCaller,Manta,Mutect2,Strelka,TIDDIT" +OPTIONS="--tools HaplotypeCaller,Manta,Mutect2,Strelka,TIDDIT" if [[ $TEST == "GERMLINE" ]] && [[ $OFFLINE == false ]] then @@ -117,7 +117,7 @@ case $TEST in run_sarek --tools HaplotypeCaller --input results/Preprocessing/TSV/recalibrated.tsv --step variantCalling ;; MULTIPLE) - run_sarek --tools FreeBayes,HaplotypeCaller,Manta,Strelka,TIDDIT,snpEff,VEP,merge --input ${PATHTOSAMPLE}/tsv/tiny-multiple${SUFFIX}.tsv + run_sarek --tools HaplotypeCaller,Manta,Strelka,TIDDIT,snpEff,VEP,merge --input ${PATHTOSAMPLE}/tsv/tiny-multiple${SUFFIX}.tsv ;; SOMATIC) run_sarek ${OPTIONS} --input ${PATHTOSAMPLE}/tsv/tiny-manta${SUFFIX}.tsv From a48c35ee74cbd8afa0945f2758b8335fe98d66b6 Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Thu, 28 Nov 2019 17:32:51 +0100 Subject: [PATCH 03/14] update workflow image --- docs/images/sarek_workflow.png | Bin 50856 -> 47599 bytes docs/images/sarek_workflow.svg | 16 ++++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/images/sarek_workflow.png b/docs/images/sarek_workflow.png index f7f019de0cd8cec8f39e17cfdc182eefb16a9160..3d7253ee44af0ebaff1486b35b3b90e6abbb58a8 100644 GIT binary patch literal 47599 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 literal 50856 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 @@ -2787,6 +2788,7 @@ + Preprocessing + • Freebayes, Mutect2 Strelka2• Mutect2, Strelka2• MantaAnnotation + Reports + 2.52.6 Date: Thu, 28 Nov 2019 17:33:09 +0100 Subject: [PATCH 04/14] remove old logo --- docs/images/CAW_logo.png | Bin 9692 -> 0 bytes docs/images/CAW_logo.svg | 649 --------------------------------------- 2 files changed, 649 deletions(-) delete mode 100644 docs/images/CAW_logo.png delete mode 100644 docs/images/CAW_logo.svg diff --git a/docs/images/CAW_logo.png b/docs/images/CAW_logo.png deleted file mode 100644 index 285d7274089e79ade109491e7103fad4758d204e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9692 zcmaJ{WmFtNv&C5m?vUW_?yigL65L&a6WrYb1oz;uxI^&ZBrE~K0)gP}4vRj%^L{>= zb4E|iboKPPRkv?foTfSu6P*kl4h{}eNl{K44i28>?K%s9@^&mCCE|KJA$iIufdFq? zAiz5I?H>1{C$);fBhU&e#VgrXC>M^N~$S*%!~+^YsDWWhj(h zh#OY%ktLnY$dtcXBonbDDQpFV4@^G>dhyYcLhi5G?Na8{d6yRtw`auw1*GT&W&TQI zym?klg3DC9+kY=No92eX@)72pL`( zRkhAu1I=Jv&VAoezQoIowzkIt_DxW7|Fna@=8$uW>9$Uo|Ma?K^oEDj0E5PmI=Nc*LfG$VE0?_@o7MdECO zR>1uJdl(5CHY@t^{za!;V=g)!<8I^dckZ8wGR-ywr!YIT^T6Z7#X@Y@@5gR*y2f{l zZ5eeT2>&059RP)Fb0&Q&J*Dq@7^(zo`IBU{1zX?C!;w$96*sG1eIP-ji@w*8 z_PWEm16}wSj08TDs*C7JQmBy+&kx%dTfdNi9bP3&DaXX%Z}r!6M(UlzulCo38y4!E zOyLQlbe3yraZ^yP8S<=5X!Mai;$VGR5(9qz8*8rez298(#98D9;Yv{Q_oTZq*!bA!&~nVDyrE6FYuV<*eK9@ z3677Ah1u}@l-JEm=_l$^X%NEXBeyh~ds?+Nc*t8UN8;BI&Q^T4l7fmXQfRQn&Ie?e zclJV!Tsk*UY$(3{KCpl4Id%J2vvO2u~`*sYGTfdj7 zm2b{<`$=hFy4q4-i~U_}kvI}(fz7DhS$Ai#$q&ZPP7I*VoQyn=Ca;?luL!*XT*T7v zq?M;CZXsfexs|71qA~A;zjy7q;B03PGTGH!vmh`LA>R!A~B3z25fA9iIGyvl?*VSU?37HZ_5nfWFINtjx3xLujfeFUCX;O zlegEhZIGLz)d->9Q=g-qWd`!mU{BZ#*m&)}eibDvL}|+X{d>=V0|h+^9Euu=BMLWq zvb=yIhA4*5&cVTeqt9f)t!;`F*%L&rKVS=A6H!p`D%#ow`#po5ThX=5m55rFj(BFw zo(W&UUl2!6OiR`vtGzoC?%KP4ngEDR1s@ZtPj-(VrpM&owe=TI+OEc)Z@XEzDd^ZN zqtwXWevjLU+^mLWjT%h_P3fLYdQ3;RzFce(XWkiX?GBg5Q{Q7+yhO+^Vu^15-9#hW zPNK60QQ^9QhS2rGodf75$yK~e8!rx)h@p4%-GD-(lOLhGMaWw4dgNQ5-)EvvhW&Pk}A z=@75jkf9-rBYZjZLj&=05+0q3G)H+$)0gG5O#9hCio8q>ow&=8(Jb?+per(mP)Dg+r(fSb^{wUSj)NJjq6Q-ddEJ@$ANb77q(w4o8yhd*OJrl(D<2S4=LlqChYio1bCVp{Q6v%^ z)Rg8k8AO|CL7X`2KaHpQ!U~xdF!F3HgMJbiqtdXp_v+B0>N_en@%6QD)2H+U^7US= z`_b;{d#3#%WznwG*+qTjx06Chg0wqRg1ROxs1rJh2H1iX&ing)Lk}e-ahVou2T-5v zcQc?O#SCTR zao1En5Mh|H)|>upbRqr>6_W7Oq%o+x-EnF|h+Xaz_sj!7I0bO$?GWt2t{ufmcGs|& z#LODO#O&Tb6b-y}GJE7i{G}3dQclu=?smvX@k%X<_oe1Q>tg3#CYT@R&F)(;h zh?nYhsP!K2hh!SbY+R%;m0r$~@(YF8Pwa?2V9~+Vgo;}s*KMZ3fQkNPJ#7g+hND+F738`N^&2yz=Y28yfGYLj8{j%bE;(pC9-zUw5Rc<-O z)bV2asX)4Be0Y1QV!YxqI}=37Oo5jGB)z47Fv?C^jBt%MBB4%tqC!6is2B*31(i{ zd}Pv?zC>$9gUXMM^R6a+HU-N_jkA@HX5rKvz(x{gPLy!NLcV7Uqbd<-)-UdbCIk~v z%b0ICm$o{MZy92HdGK9HvaP=~2e;zWzv+s(2ht8fXX){nIHP2rGf@JWr%2kC(JzfX z{(vUxcT#~A6MmZ9O`AcX?!!N`g{673${C?=X2oBR5?FtEZ{7h;RSSjO)6aYIA6QI!KJO0hjk zDT27EqF4wpobf1gT&jUXxEAEiq;Y*DLkX$&KmfZ@DrSRpkHlQV8^^zv{fwsj4NmJb zcgglv>?W^y?35=}V*c>!Td4OV)bzbfh4PRBp{~-&qc0?%S47Zm=a%Rv;{pzI`>|25}92-ftl|-=b8-cxm7M$a)K`r~Q4jUl?qTYxzSE zkbgrox)Os!O9UpaJ_R6hKY1kTm<|ZRgym)qR#!PyIs>D9*6j3tUB3F1lhZtwPCD=G zKKcl`KydC(`eqQTD-E9*L4!1j%s%)+kK~CHuV@>%qz2JU68KiDX570H7_wj1W>y#z z(Yf0GbazZ_TcCIXAI?5yv#><5OpnQAqD~UwlmL>c3O-JtWkd!YbcEq#a&A2h%*x z|Jfpqrb<8RF9rPZ11-_K4f1IIt8`+o1Z{_27*jWi)#@5mrP!RxMWR>ySc!Dwqn_Y6 z{^3{_kdSFW$eqygKD>3!kiW#7Xf!Svdy=bBNbfu@{yJ`qku^Mh8^*P&1g~36dCyy1 zZ>d)Bsi0M$y*$vwU(zCsnuIa{LF@9Obrs56tG<0JDrFmDFC`uNiz@*k#P!q7)Z&)TP}`V z(jO%3cNzs=?V!+IMM|ueynYfmkfC_ug#vwS{YeX(-72n>FD6lZVBh6APESy2upSou zX{VEgS?EuAA!019{e6*P+*g7QHG*HK&ZM6itgk-WuOT*}l+DL;MN7FcZL3LPmTfeP6TR@6b1iSkJpQfhogoCryhy?zhkPe*#~~S!5IYh^&sYsD0Lj zWtw5)wLX~)(dU?!5Hd>hKbm$lbBok|p8XT70jgu7zO z$L@c-2^>FLTvrcVCee@SZM@%26`KMmAqvwY3`L+>f zZ}Z+O1ACa}NpIj}ek#h`WPU%rfH&Iw`*{X6a*t5EyQy^Th$Y(QmcRX`Go4w3`&uyd zs>FEL2+fl|m0Iln9Ke;Bs_jq2kOBW^Jp1LOn^hj`XQJuT9l@1fQSmwFcaxEtBkaE3 z4WbP!Ms^^B%reu#PGU*)jAau^#x(J?s=KBkS{&MXkPGx-pTm0oEPeR|bLpCBH*-#U zbk;+%f4zd|DakPnx`@l^xW$o{P$AOMVQ-s4=`s#UN>KEU)Xwr8DL8&eD)^{AQDtc~ z{mJ#f{P9Rs+bGQ_89dq*%1X?_y_;ZOMXp6%L#c53oS~hExORPySIr$2?zaQUdlc|q zE?1%ZQ_$a}L7JAWwbRbQieFV#?x79z9$DbDIpzzP6SE|D&ouMqv|TCOb3($95kBoP zevJ&KiPU;QE@yC9j%s_xY7^iW@ASy*Ueake7XDm$R;0_oUI4iQ$#kk5+u;$4h7{*( zDqDqkUU@PV@rWQlN{_0xy#~^^%$fi?wTtm=uBgXe5;`K@ARad)%U`%@OOc*_T@?_Y z(^x)hQpjSImwp7EGrKn64iJk@{VS+8^5Jn0$F_M9AM|eiJc?zC8e2Rj(M8))XD*E< ztEIAi-r!H`^>v}?-xKvJ34U%-JCIFDrsFIczIMALH*&FuQSN$0G&%@916Lv4r0mxR z#qD}Z*4D~{gr60tXx-W3ZPnP)9!B@1=mYd~&C@lLkwE@~;rR3uyk3p;{=Wu zfU}boji2>5a=u!XpWDLz@#%1BY zro%a0Rc&@j;xWqY<3=);7&5_Kdw>_KmkFiR zO-0me+1u`7-TW-V#TiGI3_iD}w}ne#;CW~k3CNWYo*Ox?rhAWaUiEkDZTt(glh_o0 zRZTL`pvy>#+CA!aj%(02;lE(Un@Dn7gVA~6#xt?0>TUCDDneEuL4S>0n^;BM5)yLH zIlFVy=LjFvnn}Ok07q8Bq9)aN#G$yA<%1?O?PSR;KKXdOaD4qWkjx6RmEB+{=DHd^ z>G)CekZwy0tA=h!RjTi=e@E?UszqKU2*tT4bwEOK5_yrc3IvcJ2t7)9LA^Z2fOci7 z5JA6x&Q!6ZYc{CRQMr2X*TxcWsj{+CZ-N6nS0gYZjo4Nd{W&OzJJ6UEc?9;n_A^P7 z*?#upc@}YsD6}_+?o;>t((H9yyr0Hr+3#4$ek|jCq`EFc{b3#;LeJ4|h=z0teBh7T zmjX;ZiVT%O6haw74n*0F#XpdULuZGF;ZKVlyp~Ost1p1ettQoCNVz6v>(O3CFjy3k zpQ-z@%J}p?480ir`i!R{{*TO#@J>{?&RFNN{QIh4@ZQzG08nKTCRaOCz>of_pNH2g z@P_sb1)3X^FEgqisESWHfIAVtHAwvGiQO^A29-E-cH?tSZ8fA1f3%d(mQC%j$xyFf zk}hrO%HMWBhVJg}-NJm(_o8%iCHZl7(ttNctUI;~)5J3JQcaqem!4Noq478@^H369 zKd>|U>)~y;=;}W%q~ev;5v$Go3#4%Lm?9*M(W!m$1-3}4l`)ayb?jp86D^10%k&cC z!Agd%$41wNmMTZppnkuIaIyKWv~U7pu_)nxZ-MKOwb(^avdz_~?Ihra@MQ-BP4sra zirn4s@E>*`hzjJmS1S9t2dyOonZr&a>?$yA83uyefHTge=LL)W6*0j~i0H#V{Oo^S zmfmywl-GVXuP5`*gr;}Z8T#X0N0`CEaGl<~k&Jjg zvF)!vVc72WwV#x$Go79in|dJ*(_S>>AV9`)T6{O{laI`?`5QGMW<6KP_g5glkh`cf z;+QHS)jd@q@JH7jId*Tq)Ja9u%GCjMKZu;asXaUG`}}bM#mxlobgLBW#HTDEc?4y@ zM~<08Kea*L@Cf>&gE@tpf5bDL$+6-ODt4P*5Du>BMK~G{^CvsX)&9PAPip1=#Fl>~ zHhGZ*q@VgscqEhvNY-@J@QhSFzP;%*l@=$oo<1#FRw@e9oYr&>S1XREsH$Y1m8%_k zISV|#E|l5X6_Z>85Zbnc+kBAsEi()tqv8&5EDlFQa(SQF0ip;fY1XOF&miXouRyht zyLS>J_f1s&d+);Jc->emXO`hBdi}gVYiVU*u|%?btQ06Nw0i|mCIzWe5}UXFT+)Gi z@6&x1D?*rmhZ;w!TbXq8n#j`82Ktw_JT#WEBymmcXX(jeYT^LnipCIc-yY8ZmVcur z1${W+P_u7{7UK^BT8?879NRj6Z_<>O?{FBLD|)~A7jkdO9~GZqi;@vrn8gPbz)j9U z3P9U9{w;p}-fk{0oEAY>&&G@`DwJCX*z%lI5EDY=wXZcIvdOnl6W5uJ^w8XkSFBjY zlwCdgWtXHr|3u>W9SPU8P4YM8`a=B80M7evDSc(7Yjg3Tu}qQgecb~~YGppHpMU?! zP?YT4(^S6uAlmyxQtXkd+R&h-BZ~}1*=y5d;YOrF-vzt=6o%voub6*->wd7cWA$Jn z+gtjz-D?Qg7p%`R=~}I-t`%p)L;bu^<~4ol2i9E7(X3W3i=Zj~%3`NTY9Y5#eR%B9 z?D9p2#d^p|haOa%k5kHWd=kHKTqpi?hS=?-ed#=^Ci)R00xJOuqMwz{0M6fk$KzER zZq#6I^XW-rH-f2;M=$JF$ZgmclL_{&+YJ%Tk3e}&ng<7nWD;Nv0v}jFRIAQ zP@|aLxHr+gri;iFhydzS;s3ZR^94Rmxm09zGHVHm0Br=1Bdo+(LJ_;Q^R7O7-S6=M zcSMV6R^jSIQG*LjE?ID*7^_=+KBTeVD5z`cQtr~bC=(zQ(^6Qu@~a2Aw*ryf%(Je< zbh-HSWhA8p`YI*~;4F`CluyVTtYz)DiTe9T$Km(7&472;OYCY~TOX6%uGR}dQHP4t zX0G!WpU;bc$m8GJz^d?63Z|G{whe11w?2{%iDzYFcN(0>KL;chodm!^JhsE%YaKfpaP@w z4Y*nNfeIOOk>6+N@u~^@KZbaH8=J<`h0e}E9hMb>XHtfMy>|i+HdH12n3IlGQpK7U z0<@)^%)F>n3L#kB*H+4(C^YWH>9ph4>_EcgcVCZhROlsjd#yr}ifl4&HVB=TAv+_scj}uFxT;ofWsFY^r{^340dCYspoBNPIp6^{bgyE^;xhp4x0jn3s&${MK3&YOPx_iYNaSz-4#gTY;QL+JV)ihpbC zHSh))l%VzI`Wh?dm8LNYc_U~ zn0qE(&aTJ*_S!TZQffwaL>A{gj8@)>`5u6x{Zr$nc`J)9N0V~@{6DE3n z^y9BLr@kYQfDwlT-*rgn0{f6Lj7*qBr!U!k6Ko}ScwV5wIsE2Wb8#C`7ts0{xZ;_L z;Jp<$*uP;0P7_Gm#+b19QS07b)E{E^TE|lz9g?O|OOQt z5V8~J0H-BVG;q*BGa5pOaaReAwb;WI`h;)!w6L!cJ6z?&Rq-@%^W38_FBf*hF^08l zv&Es4L-pX78=e;VFpf6#iBbSvb6#T~RkQ8iOIR6PC1*A;Zc1j3?gsTJHGa!=IvS=Q z5DZUV{j9A`0}AKfp+KEYtLxHqm}zv(aL z6(yuw4 ztC{dIyfS{Y`{a-J$n233u2cx8oAmWl8-?9WvgHs*TAD%)bEF|3>$rw#vsqLD2TeTw zuYU)1zgt9OSdO%nt3;)3cs=km5dHo34Xkg5VlSry{PJkGHDtFnRAh;i%zxd>TM}z~ zr`D)|cI=^n=@hOkD-|saaB#?K|EUF-h%RvNbI;7ho-WCu4nfZtqtFeByQb4t2K#(4 zw?s#~0mVV9h^?oCteqb3zS-n0bSO#EgmMSam)zH?Hf(dzzC)@^*4fIa_3;Zf13RzS zSh9GmLo~fMzc{WG=8ECW3m94VV7J37CKhYc zGD@4Hd56GT-xrNO%LIbET*ud6?n@JD^-7_7{}Og{>+NXgF1$W_AnidYjC(Zu;g;Ud zuj9Lzt~w4!;h|*1WQ|zHzeemYbborO{2QhHFbT^Hs^I=3d#pZdk4i4Gq^P-C_Ij(8 zAkhp}p?jA_CON2=F*?|1JvsINIG>K;1@~N5X%iNLKdo+8_W&NL5M_|#x^$s=MbVud z-t?w4M^N+LCNB3z`DircKWd$Ud*3DocYk@`fPd+j2>c6qdw&rZF`yg`xTRa@sEI}x zS{s6VMM?Q4!b1MweW0zO9Q1!|>06o*^U+TED#j1XR*ec$0_|4EdmtC(?{hXxCj6e} zsY}OpRczav=D49azL!RcLJz%VsSRP5IeqD0O6}k=YLa+jfTDKXJI04klGm%!&!+YC z7@g>o_Mg1?;XaUqYw4k>f7j|hn~{^(9nNt^KuSdt6Rl33xS>vav`1!B*NzWz0)1a# z(;752!C438A0luX-J)}`OC9JVY0~(-6<4c1c0{w$@6%xmoR(ee6@^+ygWLptqupru`&_KGy#H;zHi4p-u9RFNqDh zIe$9rf)7{xqo#hp>6Vp=7aAp#2c20jiu{rp!wF*Z>o-+jq-n4v!n*t@pxv)fZ%|+~ z*K$h0>ClQ8wgK$@T6Bf-P#>R~3P~(x_n(*gXQG#Ch)%ixcU8Q38JkhH+{2!UGqJhGtlzi=2XBIDlFi@+JzPkJwRN+J$Rw z%&NR8b+OJ;P>C$v?i6H;!3uGAffFsOv-#c^9PqCCg!p@r^h6zXZ5$##A6to9TsUuNS-d=UB8esoDQ}-NeV2?M$O(!`<$i+=Pc!w!S{Q=dh8UCB z+fo4hB?H}yr19S)CW~5iE~6Ck$8S5d_Wz=t|3xSEArw@9I(dkCYY|h!pZikyDlo+4 zmKf=7Cfy}jI-IENQ`HMD!mw(^4V*65(S_UY1o7mEiQQtDxc^yCeHIuuxrmP>*@n!elb rHPwD=?T>lm=HdSZd3Vtt diff --git a/docs/images/CAW_logo.svg b/docs/images/CAW_logo.svg deleted file mode 100644 index 9b25dec5f..000000000 --- a/docs/images/CAW_logo.svg +++ /dev/null @@ -1,649 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From d0ff5761e45ca77b0a9f5f3b496e2361e1403e3d Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Mon, 2 Dec 2019 10:28:47 +0100 Subject: [PATCH 05/14] improve docs --- .github/CONTRIBUTING.md | 8 ++++++-- .github/ISSUE_TEMPLATE/bug_report.md | 16 ++++++++-------- README.md | 12 ++++++------ docs/annotation.md | 3 ++- docs/input.md | 2 ++ 5 files changed, 24 insertions(+), 17 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 8c8447976..36fed625b 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -46,8 +46,12 @@ These tests are run both with the latest available version of `Nextflow` and als ## Patch -When patching a release, please work on your fork on a new branch named `patch` +: warning: Only in the unlikely and regretful event of a release happening with a bug. + +* On your own fork, make a new branch `patch` based on `upstream/master`. +* Fix the bug, and bump version (X.Y.Z+1). +* A PR should be made on `master` from patch to directly this particular bug. ## Getting help -For further information/help, please consult the [nf-core/sarek documentation](https://github.com/nf-core/sarek#documentation) and don't hesitate to get in touch on the nf-core Slack [#sarek](https://nfcore.slack.com/channels/sarek) channel ([join our Slack here](https://nf-co.re/join/slack)). +For further information/help, please consult the [nf-core/sarek documentation](https://nf-co.re/sarek/docs) and don't hesitate to get in touch on the nf-core Slack [#sarek](https://nfcore.slack.com/channels/sarek) channel ([join our Slack here](https://nf-co.re/join/slack)). diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 5e62bedd6..c6643b83a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -22,20 +22,20 @@ A clear and concise description of what you expected to happen. ## System -- Hardware: [e.g. HPC, Desktop, Cloud...] -- Executor: [e.g. slurm, local, awsbatch...] -- OS: [e.g. CentOS Linux, macOS, Linux Mint...] -- Version [e.g. 7, 10.13.6, 18.3...] +- Hardware: +- Executor: +- OS: +- Version ## Nextflow Installation -- Version: [e.g. 0.31.0] +- Version: ## Container engine -- Engine: [e.g. Conda, Docker or Singularity] -- version: [e.g. 1.0.0] -- Image tag: [e.g. nfcore/sarek:2.5.1] +- Engine: +- version: +- Image tag: ## Additional context diff --git a/README.md b/README.md index addec50a1..6c9101cbc 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ > **An open-source analysis pipeline to detect germline or somatic variants from whole genome or targeted sequencing** -[![Nextflow](https://img.shields.io/badge/nextflow-%E2%89%A519.04.0-brightgreen)](https://www.nextflow.io/) -[![nf-core](https://img.shields.io/badge/nf--core-pipeline-brightgreen)](https://nf-co.re/) +[![Nextflow](https://img.shields.io/badge/nextflow-%E2%89%A519.04.0-brightgreen.svg)](https://www.nextflow.io/) +[![nf-core](https://img.shields.io/badge/nf--core-pipeline-brightgreen.svg)](https://nf-co.re/) [![DOI](https://zenodo.org/badge/184289291.svg)](https://zenodo.org/badge/latestdoi/184289291) [![GitHub Actions CI status](https://github.com/nf-core/sarek/workflows/nf-core%20CI/badge.svg)](https://github.com/nf-core/sarek/actions?query=workflow%3A%22sarek+CI%22) @@ -11,11 +11,11 @@ [![GitHub Actions Linting status](https://github.com/nf-core/sarek/workflows/nf-core%20linting/badge.svg)](https://github.com/nf-core/sarek/actions?query=workflow%3A%22sarek+linting%22) [![CircleCi build status](https://img.shields.io/circleci/project/github/nf-core/sarek?logo=circleci)](https://circleci.com/gh/nf-core/sarek/) -[![install with bioconda](https://img.shields.io/badge/install%20with-bioconda-brightgreen)](http://bioconda.github.io/) -[![Docker Container available](https://img.shields.io/docker/automated/nfcore/sarek)](https://hub.docker.com/r/nfcore/sarek/) -[![Install with Singularity](https://img.shields.io/badge/use%20with-singularity-purple)](https://www.sylabs.io/docs/) +[![install with bioconda](https://img.shields.io/badge/install%20with-bioconda-brightgreen.svg)](http://bioconda.github.io/) +[![Docker Container available](https://img.shields.io/docker/automated/nfcore/sarek.svg)](https://hub.docker.com/r/nfcore/sarek/) +[![Install with Singularity](https://img.shields.io/badge/use%20with-singularity-purple.svg)](https://www.sylabs.io/docs/) -[![Join us on Slack](https://img.shields.io/badge/slack-nfcore/sarek-blue)](https://nfcore.slack.com/channels/sarek) +[![Join us on Slack](https://img.shields.io/badge/slack-nfcore/sarek-blue.svg)](https://nfcore.slack.com/channels/sarek) ## Introduction diff --git a/docs/annotation.md b/docs/annotation.md index bec92ff7d..2d954f3ac 100644 --- a/docs/annotation.md +++ b/docs/annotation.md @@ -14,6 +14,7 @@ With Sarek, annotation is done using `snpEff`, `VEP`, or even both consecutively - To annotate using `snpEff` followed by `VEP` VCF produced by Sarek will be annotated if `snpEff` or `VEP` are specified with the `--tools` command. +As Sarek will use `bgzip` and `tabix` to compress and index VCF files annotated, it expects VCF files to be sorted. In these examples, all command lines will be launched starting with step `annotate`. It can of course be started directly from any other step instead. @@ -23,7 +24,7 @@ It can of course be started directly from any other step instead. Sarek has already designed containers with `snpEff` and `VEP` files for `GRCh37`, `GRCh38` and `GRCm38`. Default settings will run using these containers. -The main Sarek container has also `snpEff` and `VEP` installed, but without the cache files that can be downloaded separatelly. +The main Sarek container has also `snpEff` and `VEP` installed, but without the cache files that can be downloaded separately. ## Using downloaded cache diff --git a/docs/input.md b/docs/input.md index 18e669585..7507344cd 100644 --- a/docs/input.md +++ b/docs/input.md @@ -131,6 +131,8 @@ G15511 XX 1 D0ENMT pathToFiles/G15511.D0ENMT.md.recal.bam pathToF Input files for Sarek can be specified using the path to a VCF directory given to the `--input` command only with the `annotate` step. Multiple VCF files can be specified if the path is enclosed in quotes. +As Sarek will use `bgzip` and `tabix` to compress and index VCF files annotated, it expects VCF files to be sorted. + ```bash nextflow run nf-core/sarek --step annotate --input "results/VariantCalling/*/.vcf.gz" ... ``` From 8c0cf0d599b49a543d931fe27a559739417748f1 Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Mon, 2 Dec 2019 10:53:00 +0100 Subject: [PATCH 06/14] more tests but less NF versions --- .github/workflows/ci-extra.yml | 6 +++--- scripts/run_tests.sh | 16 ++++++++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci-extra.yml b/.github/workflows/ci-extra.yml index d37a33aae..2d38b8c02 100644 --- a/.github/workflows/ci-extra.yml +++ b/.github/workflows/ci-extra.yml @@ -7,15 +7,15 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - test: [ANNOTATESNPEFF, GERMLINE, SOMATIC, TARGETED] - nxf_ver: ['19.04.0', ''] + test: [ANNOTATESNPEFF, GERMLINE, TARGETED, HAPLOTYPECALLER, MANTA, MUTECT2, STRELKA, TIDDIT] steps: - uses: actions/checkout@v1 - name: Install Nextflow run: | - export NXF_VER=${{ matrix.nxf_ver }} wget -qO- get.nextflow.io | bash sudo mv nextflow /usr/local/bin/ + env: + NXF_VER: '19.04.0' - name: Download image run: | ${GITHUB_WORKSPACE}/scripts/download_image.sh -n docker --source-version dev --target-version dev --test ${{ matrix.test }} diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 4892df61f..6c4b0ef14 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -107,6 +107,13 @@ case $TEST in ;; esac +if [[ HAPLOTYPECALLER,MANTA,MUTECT2,STRELKA,TIDDIT =~ $TEST ]] +then + TOOLS=$TEST +fi + + + case $TEST in ANNOTATE) run_sarek --step annotate --tools ${ANNOTATOR} --input ${PATHTOSAMPLE}/vcf/Strelka_1234N_variants.vcf.gz --skipQC all @@ -116,14 +123,11 @@ case $TEST in run_sarek --tools=false --input results/Preprocessing/TSV/duplicateMarked.tsv --step recalibrate run_sarek --tools HaplotypeCaller --input results/Preprocessing/TSV/recalibrated.tsv --step variantCalling ;; - MULTIPLE) - run_sarek --tools HaplotypeCaller,Manta,Strelka,TIDDIT,snpEff,VEP,merge --input ${PATHTOSAMPLE}/tsv/tiny-multiple${SUFFIX}.tsv - ;; - SOMATIC) - run_sarek ${OPTIONS} --input ${PATHTOSAMPLE}/tsv/tiny-manta${SUFFIX}.tsv + TOOLS) + run_sarek --input ${PATHTOSAMPLE}/tsv/tiny-manta${SUFFIX}.tsv --TOOLS ${TOOLS} ;; TARGETED) - run_sarek ${OPTIONS} --input ${PATHTOSAMPLE}/tsv/tiny-manta${SUFFIX}.tsv --targetBED ${PATHTOSAMPLE}/target.bed + run_sarek --input ${PATHTOSAMPLE}/tsv/tiny-manta${SUFFIX}.tsv --targetBED ${PATHTOSAMPLE}/target.bed --tools Manta,Strelka ;; esac From df3d68a3c988b46dad5c8c4c11bd5aeb403134b5 Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Mon, 2 Dec 2019 10:59:46 +0100 Subject: [PATCH 07/14] actually run the tests --- scripts/run_tests.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 6c4b0ef14..eecf762b8 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -110,10 +110,9 @@ esac if [[ HAPLOTYPECALLER,MANTA,MUTECT2,STRELKA,TIDDIT =~ $TEST ]] then TOOLS=$TEST + TEST="TOOLS" fi - - case $TEST in ANNOTATE) run_sarek --step annotate --tools ${ANNOTATOR} --input ${PATHTOSAMPLE}/vcf/Strelka_1234N_variants.vcf.gz --skipQC all From 9b3a02730be59531797bb1c14f56d80a8258dc71 Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Mon, 2 Dec 2019 11:08:37 +0100 Subject: [PATCH 08/14] typo --- scripts/run_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index eecf762b8..b84cb85a4 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -123,7 +123,7 @@ case $TEST in run_sarek --tools HaplotypeCaller --input results/Preprocessing/TSV/recalibrated.tsv --step variantCalling ;; TOOLS) - run_sarek --input ${PATHTOSAMPLE}/tsv/tiny-manta${SUFFIX}.tsv --TOOLS ${TOOLS} + run_sarek --input ${PATHTOSAMPLE}/tsv/tiny-manta${SUFFIX}.tsv --tools ${TOOLS} ;; TARGETED) run_sarek --input ${PATHTOSAMPLE}/tsv/tiny-manta${SUFFIX}.tsv --targetBED ${PATHTOSAMPLE}/target.bed --tools Manta,Strelka From 6b76428b40a7847232c80c005ac6c1b55372c01b Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Mon, 2 Dec 2019 15:50:13 +0100 Subject: [PATCH 09/14] simplify configs --- conf/base.config | 5 +---- main.nf | 2 ++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/conf/base.config b/conf/base.config index 5c76d275e..7c889b04b 100644 --- a/conf/base.config +++ b/conf/base.config @@ -54,10 +54,7 @@ process { // (exit code 141). Rerunning the process will usually work. errorStrategy = {task.exitStatus == 141 ? 'retry' : 'terminate'} } - withName:FastQCBAM { - errorStrategy = {task.exitStatus == 143 ? 'retry' : 'ignore'} - } - withName:FastQCFQ { + withLabel:FastQC { errorStrategy = {task.exitStatus == 143 ? 'retry' : 'ignore'} } withName:MapReads { diff --git a/main.nf b/main.nf index fef623881..33d34766d 100644 --- a/main.nf +++ b/main.nf @@ -603,6 +603,7 @@ inputReads = inputReads.dump(tag:'INPUT') // FASTQ and uBAM files are renamed based on the sample name process FastQCFQ { + label 'FastQC' label 'cpus_2' tag {idPatient + "-" + idRun} @@ -624,6 +625,7 @@ process FastQCFQ { } process FastQCBAM { + label 'FastQC' label 'cpus_2' tag {idPatient + "-" + idRun} From b696b5a1abb50c496bfbed5e37e4567d99574f34 Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Mon, 2 Dec 2019 15:50:28 +0100 Subject: [PATCH 10/14] add test for mpileup --- .github/workflows/ci-extra.yml | 2 +- scripts/run_tests.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-extra.yml b/.github/workflows/ci-extra.yml index 2d38b8c02..b2c57a84f 100644 --- a/.github/workflows/ci-extra.yml +++ b/.github/workflows/ci-extra.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - test: [ANNOTATESNPEFF, GERMLINE, TARGETED, HAPLOTYPECALLER, MANTA, MUTECT2, STRELKA, TIDDIT] + test: [ANNOTATESNPEFF, GERMLINE, TARGETED, HAPLOTYPECALLER, MANTA, MPILEUP, MUTECT2, STRELKA, TIDDIT] steps: - uses: actions/checkout@v1 - name: Install Nextflow diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index b84cb85a4..2b4a74436 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -107,7 +107,7 @@ case $TEST in ;; esac -if [[ HAPLOTYPECALLER,MANTA,MUTECT2,STRELKA,TIDDIT =~ $TEST ]] +if [[ HAPLOTYPECALLER,MANTA,MPILEUP,MUTECT2,STRELKA,TIDDIT =~ $TEST ]] then TOOLS=$TEST TEST="TOOLS" From 67c53094ceb2ebed6b9e942a1d4019bbcd17736c Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Tue, 3 Dec 2019 16:01:05 +0100 Subject: [PATCH 11/14] go crazy with tests --- .github/workflows/branch.yml | 2 +- .github/workflows/ci-extra.yml | 52 ++++++++++++++++++++++++++++++---- .github/workflows/ci.yml | 2 +- .github/workflows/linting.yml | 6 ++-- conf/test.config | 4 ++- conf/test_annotation.config | 15 ++++++++++ conf/test_splitfastq.config | 12 ++++++++ conf/test_targeted.config | 15 ++++++++++ conf/test_tool.config | 16 +++++++++++ nextflow.config | 4 +++ scripts/download_image.sh | 13 ++------- scripts/run_tests.sh | 18 ------------ 12 files changed, 120 insertions(+), 39 deletions(-) create mode 100644 conf/test_annotation.config create mode 100644 conf/test_splitfastq.config create mode 100644 conf/test_targeted.config create mode 100644 conf/test_tool.config diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml index 06824f2d7..1342a9d7b 100644 --- a/.github/workflows/branch.yml +++ b/.github/workflows/branch.yml @@ -7,7 +7,7 @@ on: jobs: test: - runs-on: ubuntu-latest + runs-on: ubuntu-18.04 steps: # PRs are only ok if coming from an nf-core dev branch - uses: actions/checkout@v1 diff --git a/.github/workflows/ci-extra.yml b/.github/workflows/ci-extra.yml index 3043486bc..f0d07178b 100644 --- a/.github/workflows/ci-extra.yml +++ b/.github/workflows/ci-extra.yml @@ -3,11 +3,11 @@ name: sarek extra CI on: [push, pull_request] jobs: - test: - runs-on: ubuntu-latest + profile: + runs-on: ubuntu-18.04 strategy: matrix: - test: [ANNOTATESNPEFF, GERMLINE, SPLITFASTQ, TARGETED, HAPLOTYPECALLER, MANTA, MPILEUP, MUTECT2, STRELKA, TIDDIT] + profile: [splitfastq, targeted] steps: - uses: actions/checkout@v1 - name: Install Nextflow @@ -18,7 +18,49 @@ jobs: NXF_VER: '19.04.0' - name: Download image run: | - ${GITHUB_WORKSPACE}/scripts/download_image.sh -n docker --source-version dev --target-version dev --test ${{ matrix.test }} + docker pull nfcore/sarek:dev + docker tag nfcore/sarek:dev nfcore/sarek:dev - name: Run test run: | - ${GITHUB_WORKSPACE}/scripts/run_tests.sh --test ${{ matrix.test }} --verbose \ No newline at end of file + nextflow run . -profile ${{ matrix.profile }},docker --verbose + tools: + runs-on: ubuntu-18.04 + strategy: + matrix: + tool: [Haplotypecaller, Manta, mpileup, Mutect2, Strelka, TIDDIT] + steps: + - uses: actions/checkout@v1 + - name: Install Nextflow + run: | + wget -qO- get.nextflow.io | bash + sudo mv nextflow /usr/local/bin/ + env: + NXF_VER: '19.04.0' + - name: Download image + run: | + docker pull nfcore/sarek:dev + docker tag nfcore/sarek:dev nfcore/sarek:dev + - name: Run test + run: | + nextflow run . -profile test_tool,docker --verbose --tools ${{ matrix.tool }} + annotation: + runs-on: ubuntu-18.04 + strategy: + matrix: + annotator: [snpeff] + specie: [GRCh37] + steps: + - uses: actions/checkout@v1 + - name: Install Nextflow + run: | + wget -qO- get.nextflow.io | bash + sudo mv nextflow /usr/local/bin/ + env: + NXF_VER: '19.04.0' + - name: Download image + run: | + docker pull nfcore/sarek${{ matrix.annotator }}:dev.{{ matrix.specie }} + docker tag nfcore/sarek${{ matrix.annotator }}:dev.{{ matrix.specie }} nfcore/sarek${{ matrix.annotator }}:dev.{{ matrix.specie }} + - name: Run test + run: | + nextflow run . -profile test_annotation,docker --verbose --tools ${{ matrix.annotator }} \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 22c103120..9b65872c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,7 +4,7 @@ on: [push, pull_request] jobs: test: - runs-on: ubuntu-latest + runs-on: ubuntu-18.04 strategy: matrix: nxf_ver: ['19.04.0', ''] diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 3892e41f2..53f1efd03 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -4,7 +4,7 @@ on: [push, pull_request] jobs: Markdown: - runs-on: ubuntu-latest + runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 @@ -17,7 +17,7 @@ jobs: run: | markdownlint ${GITHUB_WORKSPACE} -c ${GITHUB_WORKSPACE}/.github/markdownlint.yml YAML: - runs-on: ubuntu-latest + runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 @@ -30,7 +30,7 @@ jobs: run: | yamllint $(find ${GITHUB_WORKSPACE} -type f -name "*.yml") nf-core: - runs-on: ubuntu-latest + runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 - name: Install Nextflow diff --git a/conf/test.config b/conf/test.config index 9652998f3..d8b3673d9 100644 --- a/conf/test.config +++ b/conf/test.config @@ -24,9 +24,11 @@ params { process { withName:Snpeff { + container = 'nfcore/sareksnpeff:dev.GRCh37' maxForks = 1 } - withName:VEP { + withLabel:VEP { + container = 'nfcore/sarekvep:dev.GRCh37' maxForks = 1 } } diff --git a/conf/test_annotation.config b/conf/test_annotation.config new file mode 100644 index 000000000..6dc8799d2 --- /dev/null +++ b/conf/test_annotation.config @@ -0,0 +1,15 @@ +/* + * ------------------------------------------------- + * Nextflow config file for running tests + * ------------------------------------------------- + * Defines bundled input files and everything required + * to run a fast and simple test. Use as follows: + * nextflow run nf-core/sarek -profile test + */ + +includeConfig 'test.config' + +params { + input = 'https://github.com/nf-core/test-datasets/raw/sarek/testdata/vcf/Strelka_1234N_variants.vcf.gz' + genome = 'GRCh37' +} \ No newline at end of file diff --git a/conf/test_splitfastq.config b/conf/test_splitfastq.config new file mode 100644 index 000000000..734852424 --- /dev/null +++ b/conf/test_splitfastq.config @@ -0,0 +1,12 @@ +/* + * ------------------------------------------------- + * Nextflow config file for running tests + * ------------------------------------------------- + * Defines bundled input files and everything required + * to run a fast and simple test. Use as follows: + * nextflow run nf-core/sarek -profile test + */ + +params { + split_fastq = 500 +} \ No newline at end of file diff --git a/conf/test_targeted.config b/conf/test_targeted.config new file mode 100644 index 000000000..b3575300c --- /dev/null +++ b/conf/test_targeted.config @@ -0,0 +1,15 @@ +/* + * ------------------------------------------------- + * Nextflow config file for running tests + * ------------------------------------------------- + * Defines bundled input files and everything required + * to run a fast and simple test. Use as follows: + * nextflow run nf-core/sarek -profile test_targeted + */ + +includeConfig 'test.config' + +params { + targetBed = 'https://github.com/nf-core/test-datasets/raw/sarek/testdata/tsv/tiny-manta-https.tsv' + tools = 'manta,strelka' +} \ No newline at end of file diff --git a/conf/test_tool.config b/conf/test_tool.config new file mode 100644 index 000000000..fa5177959 --- /dev/null +++ b/conf/test_tool.config @@ -0,0 +1,16 @@ +/* + * ------------------------------------------------- + * Nextflow config file for running tests + * ------------------------------------------------- + * Defines bundled input files and everything required + * to run a fast and simple test. Use as follows: + * nextflow run nf-core/sarek -profile test + */ + +includeConfig 'test.config' + +params { + // Input data + input = 'https://github.com/nf-core/test-datasets/raw/sarek/testdata/tsv/tiny-recal-pair-https.tsv' + step = 'variantcalling' +} \ No newline at end of file diff --git a/nextflow.config b/nextflow.config index d5ef7098b..1038bbcc8 100644 --- a/nextflow.config +++ b/nextflow.config @@ -121,6 +121,10 @@ profiles { singularity.enabled = true } test { includeConfig 'conf/test.config' } + test_annotation { includeConfig 'conf/test_annotation.config' } + test_splitfastq { includeConfig 'conf/test_splitfastq.config' } + test_targeted { includeConfig 'conf/test_targeted.config' } + test_tool { includeConfig 'conf/test_tool.config' } } // Load genomes.config or igenomes.config diff --git a/scripts/download_image.sh b/scripts/download_image.sh index b4ce89205..b2955c240 100755 --- a/scripts/download_image.sh +++ b/scripts/download_image.sh @@ -6,7 +6,7 @@ set -xeuo pipefail usage() { echo "Usage: $0 <-t test|annotation tool> <-n engine> <-S version to pull/build> <-T version to tag> <-g genome>" 1>&2; exit 1; } ENGINE=docker -GENOME=smallGRCh37 +GENOME=GRCh37 NXF_SINGULARITY_CACHEDIR=${NXF_SINGULARITY_CACHEDIR:-work/singularity/.} TEST=ALL VERSION=dev @@ -48,13 +48,6 @@ do esac done -SOURCEGENOME=${GENOME} - -if [[ smallGRCh37 =~ $SOURCEGENOME ]] -then - SOURCEGENOME=GRCh37 -fi - get_image(){ CONTAINER=$1 SOURCE=$2 @@ -72,12 +65,12 @@ get_image(){ if [[ ALL,ANNOTATEBOTH,ANNOTATESNPEFF,SNPEFF =~ $TEST ]] then - get_image sareksnpeff ${VERSION}.${SOURCEGENOME} ${TARGETVERSION}.${GENOME} + get_image sareksnpeff ${VERSION}.${GENOME} ${TARGETVERSION}.${GENOME} fi if [[ ALL,ANNOTATEBOTH,ANNOTATEVEP,VEP =~ $TEST ]] then - get_image sarekvep ${VERSION}.${SOURCEGENOME} ${TARGETVERSION}.${GENOME} + get_image sarekvep ${VERSION}.${GENOME} ${TARGETVERSION}.${GENOME} fi get_image sarek ${VERSION} ${TARGETVERSION} \ No newline at end of file diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index f45d6a543..977543c73 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -105,16 +105,7 @@ case $TEST in ;; esac -if [[ HAPLOTYPECALLER,MANTA,MPILEUP,MUTECT2,STRELKA,TIDDIT =~ $TEST ]] -then - TOOLS=$TEST - TEST="TOOLS" -fi - case $TEST in - ANNOTATE) - run_sarek --step annotate --tools ${ANNOTATOR} --input ${PATHTOSAMPLE}/vcf/Strelka_1234N_variants.vcf.gz --skipQC all - ;; GERMLINE) run_sarek --tools=false --input data/testdata/tiny/normal run_sarek --tools=false --input results/Preprocessing/TSV/duplicateMarked.tsv --step recalibrate @@ -123,15 +114,6 @@ case $TEST in MULTIPLE) run_sarek --tools FreeBayes,HaplotypeCaller,Manta,Strelka,snpEff,VEP,merge --input ${PATHTOSAMPLE}/tsv/tiny-multiple${SUFFIX}.tsv ;; - SPLITFASTQ) - run_sarek --input ${PATHTOSAMPLE}/tsv/tiny-manta-normal${SUFFIX}.tsv --split_fastq 500 - ;; - TARGETED) - run_sarek --input ${PATHTOSAMPLE}/tsv/tiny-manta${SUFFIX}.tsv --targetBED ${PATHTOSAMPLE}/target.bed --tools Manta,Strelka - ;; - TOOLS) - run_sarek --input ${PATHTOSAMPLE}/tsv/tiny-manta${SUFFIX}.tsv --tools ${TOOLS} - ;; esac if [[ $TEST == "GERMLINE" ]] && [[ $OFFLINE == false ]] From a44ae395695c131b8985ffd070817679de558cd0 Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Tue, 3 Dec 2019 16:12:14 +0100 Subject: [PATCH 12/14] fix tests --- .github/workflows/ci-extra.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-extra.yml b/.github/workflows/ci-extra.yml index f0d07178b..77d1c50e3 100644 --- a/.github/workflows/ci-extra.yml +++ b/.github/workflows/ci-extra.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-18.04 strategy: matrix: - profile: [splitfastq, targeted] + profile: [test_splitfastq, test_targeted] steps: - uses: actions/checkout@v1 - name: Install Nextflow @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-18.04 strategy: matrix: - tool: [Haplotypecaller, Manta, mpileup, Mutect2, Strelka, TIDDIT] + tool: [Haplotypecaller, Manta, mpileup, Mutect2, Strelka] steps: - uses: actions/checkout@v1 - name: Install Nextflow @@ -59,8 +59,8 @@ jobs: NXF_VER: '19.04.0' - name: Download image run: | - docker pull nfcore/sarek${{ matrix.annotator }}:dev.{{ matrix.specie }} - docker tag nfcore/sarek${{ matrix.annotator }}:dev.{{ matrix.specie }} nfcore/sarek${{ matrix.annotator }}:dev.{{ matrix.specie }} + docker pull nfcore/sarek${{ matrix.annotator }}:dev.${{ matrix.specie }} + docker tag nfcore/sarek${{ matrix.annotator }}:dev.${{ matrix.specie }} nfcore/sarek${{ matrix.annotator }}:dev.${{ matrix.specie }} - name: Run test run: | nextflow run . -profile test_annotation,docker --verbose --tools ${{ matrix.annotator }} \ No newline at end of file From b0a6557d0d5953082ff948b77f16fb29d9e8c04f Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Tue, 3 Dec 2019 16:16:34 +0100 Subject: [PATCH 13/14] includ test.config --- conf/test_splitfastq.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conf/test_splitfastq.config b/conf/test_splitfastq.config index 734852424..5209ec401 100644 --- a/conf/test_splitfastq.config +++ b/conf/test_splitfastq.config @@ -7,6 +7,8 @@ * nextflow run nf-core/sarek -profile test */ +includeConfig 'test.config' + params { split_fastq = 500 } \ No newline at end of file From 9ab028d8e440de6dd5c7b620fcd4073bf7d167b5 Mon Sep 17 00:00:00 2001 From: MaxUlysse Date: Tue, 3 Dec 2019 16:38:24 +0100 Subject: [PATCH 14/14] restore FreeBayes --- .github/workflows/ci-extra.yml | 2 +- CHANGELOG.md | 1 - bin/scrape_software_versions.py | 2 ++ docs/containers.md | 1 + docs/images/sarek_workflow.png | Bin 47599 -> 49025 bytes docs/images/sarek_workflow.svg | 22 +++++++++++--- docs/output.md | 14 +++++++++ docs/usage.md | 2 +- environment.yml | 1 + main.nf | 52 +++++++++++++++++++++++++++----- 10 files changed, 83 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci-extra.yml b/.github/workflows/ci-extra.yml index 77d1c50e3..6bd09884b 100644 --- a/.github/workflows/ci-extra.yml +++ b/.github/workflows/ci-extra.yml @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-18.04 strategy: matrix: - tool: [Haplotypecaller, Manta, mpileup, Mutect2, Strelka] + tool: [Haplotypecaller, Freebayes, Manta, mpileup, Mutect2, Strelka] steps: - uses: actions/checkout@v1 - name: Install Nextflow diff --git a/CHANGELOG.md b/CHANGELOG.md index 0877fb43d..f57c4d1f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,7 +31,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a ### `Removed` - [#46](https://github.com/nf-core/sarek/pull/46) - Remove mention of old `build.nf` script which was included in `main.nf` -- [#XXX](https://github.com/nf-core/sarek/pull/XXX) - Remove `Freebayes` ### `Fixed` diff --git a/bin/scrape_software_versions.py b/bin/scrape_software_versions.py index d85700a0e..617740e59 100755 --- a/bin/scrape_software_versions.py +++ b/bin/scrape_software_versions.py @@ -9,6 +9,7 @@ 'bcftools': ['v_bcftools.txt', r"bcftools (\S+)"], 'BWA': ['v_bwa.txt', r"Version: (\S+)"], 'FastQC': ['v_fastqc.txt', r"FastQC v(\S+)"], + 'FreeBayes': ['v_freebayes.txt', r"version: v(\d\.\d\.\d+)"], 'GATK': ['v_gatk.txt', r"Version:(\S+)"], 'htslib': ['v_samtools.txt', r"htslib (\S+)"], 'Manta': ['v_manta.txt', r"([0-9.]+)"], @@ -32,6 +33,7 @@ results['bcftools'] = 'N/A' results['BWA'] = 'N/A' results['FastQC'] = 'N/A' +results['FreeBayes'] = 'N/A' results['GATK'] = 'N/A' results['htslib'] = 'N/A' results['Manta'] = 'N/A' diff --git a/docs/containers.md b/docs/containers.md index d8a51fb63..b75d74db9 100644 --- a/docs/containers.md +++ b/docs/containers.md @@ -20,6 +20,7 @@ For annotation, the main container can be used, but the cache has to be download - Contain **[BWA](https://github.com/lh3/bwa)** 0.7.17 - Contain **[Control-FREEC](https://github.com/BoevaLab/FREEC)** 11.5 - Contain **[FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/)** 0.11.8 +- Contain **[FreeBayes](https://github.com/ekg/freebayes)** 1.3.1 - Contain **[GATK4](https://github.com/broadinstitute/gatk)** 4.1.4.0 - Contain **[GeneSplicer](https://ccb.jhu.edu/software/genesplicer/)** 1.0 - Contain **[HTSlib](https://github.com/samtools/htslib)** 1.9 diff --git a/docs/images/sarek_workflow.png b/docs/images/sarek_workflow.png index 3d7253ee44af0ebaff1486b35b3b90e6abbb58a8..1a1821cbf77d305e27a0a2198050f886dafdc5eb 100644 GIT binary patch delta 30537 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 delta 29100 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%0APrs#4*+H{s-7mJ4 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 Dw9ogd diff --git a/docs/images/sarek_workflow.svg b/docs/images/sarek_workflow.svg index f17b20d57..3c65217c0 100644 --- a/docs/images/sarek_workflow.svg +++ b/docs/images/sarek_workflow.svg @@ -2218,10 +2218,10 @@ id="namedview4" showgrid="false" inkscape:zoom="0.5" - inkscape:cx="75.30477" + inkscape:cx="-604.69523" inkscape:cy="732.99056" - inkscape:window-x="0" - inkscape:window-y="0" + inkscape:window-x="1920" + inkscape:window-y="759" inkscape:window-maximized="1" inkscape:current-layer="g10" units="mm" @@ -2259,6 +2259,8 @@ + + @@ -2789,6 +2791,8 @@ + + • Mutect2, Strelka2• FreeBayes, Mutect2 Strelka2• Manta v_nextflow.txt 2>&1 || true echo "SNPEFF version"\$(snpEff -h 2>&1) > v_snpeff.txt fastqc --version > v_fastqc.txt 2>&1 || true + freebayes --version > v_freebayes.txt 2>&1 || true gatk ApplyBQSR --help 2>&1 | grep Version: > v_gatk.txt 2>&1 || true multiqc --version &> v_multiqc.txt 2>&1 || true qualimap --version &> v_qualimap.txt 2>&1 || true @@ -1302,8 +1303,44 @@ intervalPairBam = pairBam.spread(bedIntervals) bamMpileup = bamMpileup.spread(intMpileup) -// intervals for Mutect2 calls and pileups for Mutect2 filtering -(pairBamMutect2, pairBamPileupSummaries) = intervalPairBam.into(2) +// intervals for Mutect2 calls, FreeBayes and pileups for Mutect2 filtering +(pairBamMutect2, pairBamFreeBayes, pairBamPileupSummaries) = intervalPairBam.into(3) + +// STEP FREEBAYES + +process FreeBayes { + tag {idSampleTumor + "_vs_" + idSampleNormal + "-" + intervalBed.baseName} + label 'cpus_1' + + input: + set idPatient, idSampleNormal, file(bamNormal), file(baiNormal), idSampleTumor, file(bamTumor), file(baiTumor), file(intervalBed) from pairBamFreeBayes + file(fasta) from ch_fasta + file(fastaFai) from ch_fastaFai + + output: + set val("FreeBayes"), idPatient, val("${idSampleTumor}_vs_${idSampleNormal}"), file("${intervalBed.baseName}_${idSampleTumor}_vs_${idSampleNormal}.vcf") into vcfFreeBayes + + when: 'freebayes' in tools + + script: + """ + freebayes \ + -f ${fasta} \ + --pooled-continuous \ + --pooled-discrete \ + --genotype-qualities \ + --report-genotype-likelihood-max \ + --allele-balance-priors-off \ + --min-alternate-fraction 0.03 \ + --min-repeat-entropy 1 \ + --min-alternate-count 2 \ + -t ${intervalBed} \ + ${bamTumor} \ + ${bamNormal} > ${intervalBed.baseName}_${idSampleTumor}_vs_${idSampleNormal}.vcf + """ +} + +vcfFreeBayes = vcfFreeBayes.groupTuple(by:[0,1,2]) // STEP GATK MUTECT2.1 - RAW CALLS @@ -1392,9 +1429,9 @@ process MergeMutect2Stats { // we are merging the VCFs that are called separatelly for different intervals // so we can have a single sorted VCF containing all the calls for a given caller -// STEP MERGING VCF - GATK HAPLOTYPECALLER & GATK MUTECT2 (UNFILTERED) +// STEP MERGING VCF - FREEBAYES, GATK HAPLOTYPECALLER & GATK MUTECT2 (UNFILTERED) -vcfConcatenateVCFs = mutect2Output.mix(vcfGenotypeGVCFs, gvcfHaplotypeCaller) +vcfConcatenateVCFs = mutect2Output.mix(vcfFreeBayes, vcfGenotypeGVCFs, gvcfHaplotypeCaller) vcfConcatenateVCFs = vcfConcatenateVCFs.dump(tag:'VCF to merge') process ConcatVCF { @@ -1413,7 +1450,7 @@ process ConcatVCF { // we have this funny *_* pattern to avoid copying the raw calls to publishdir set variantCaller, idPatient, idSample, file("*_*.vcf.gz"), file("*_*.vcf.gz.tbi") into vcfConcatenated - when: ('haplotypecaller' in tools || 'mutect2' in tools) + when: ('haplotypecaller' in tools || 'mutect2' in tools || 'freebayes' in tools) script: if (variantCaller == 'HaplotypeCallerGVCF') @@ -2109,7 +2146,7 @@ if (step == 'annotate') { if (tsvPath == []) { // Sarek, by default, annotates all available vcfs that it can find in the VariantCalling directory - // Excluding g.vcf from HaplotypeCaller + // Excluding vcfs from FreeBayes, and g.vcf from HaplotypeCaller // Basically it's: VariantCalling/*/{HaplotypeCaller,Manta,Mutect2,Strelka,TIDDIT}/*.vcf.gz // Without *SmallIndels.vcf.gz from Manta, and *.genome.vcf.gz from Strelka // The small snippet `vcf.minus(vcf.fileName)[-2]` catches idSample @@ -2651,6 +2688,7 @@ def defineToolList() { return [ 'ascat', 'controlfreec', + 'freebayes', 'haplotypecaller', 'manta', 'merge',