Skip to content

Commit 0db52aa

Browse files
authored
Merge pull request #120 from nf-cmgg/dev
Release PR v2.0.3
2 parents 8f63b05 + 6b143b1 commit 0db52aa

File tree

137 files changed

+5664
-1942
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

137 files changed

+5664
-1942
lines changed

.github/CONTRIBUTING.md

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# nf-cmgg/preprocessing: Contributing Guidelines
1+
# `nf-cmgg/preprocessing`: Contributing Guidelines
22

33
Hi there!
44
Many thanks for taking an interest in improving nf-cmgg/preprocessing.
@@ -16,7 +16,7 @@ If you'd like to write some code for nf-cmgg/preprocessing, the standard workflo
1616
1. Check that there isn't already an issue about your idea in the [nf-cmgg/preprocessing issues](https://github.com/nf-cmgg/preprocessing/issues) to avoid duplicating work. If there isn't one already, please create one so that others know you're working on this
1717
2. [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the [nf-cmgg/preprocessing repository](https://github.com/nf-cmgg/preprocessing) to your GitHub account
1818
3. Make the necessary changes / additions within your forked repository following [Pipeline conventions](#pipeline-contribution-conventions)
19-
4. Use `nf-core schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10).
19+
4. Use `nf-core pipelines schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10).
2020
5. Submit a Pull Request against the `dev` branch and wait for the code to be reviewed and merged
2121

2222
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/).
@@ -37,7 +37,7 @@ There are typically two types of tests that run:
3737
### Lint tests
3838

3939
`nf-core` has a [set of guidelines](https://nf-co.re/developers/guidelines) which all pipelines must adhere to.
40-
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 <pipeline-directory>` command.
40+
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 pipelines lint <pipeline-directory>` command.
4141

4242
If any failures or warnings are encountered, please follow the listed URL for more documentation.
4343

@@ -52,23 +52,23 @@ These tests are run both with the latest available version of `Nextflow` and als
5252

5353
:warning: Only in the unlikely and regretful event of a release happening with a bug.
5454

55-
- On your own fork, make a new branch `patch` based on `upstream/master`.
55+
- On your own fork, make a new branch `patch` based on `upstream/main` or `upstream/master`.
5656
- Fix the bug, and bump version (X.Y.Z+1).
57-
- A PR should be made on `master` from patch to directly this particular bug.
57+
- Open a pull-request from `patch` to `main`/`master` with the changes.
5858

5959
## Pipeline contribution conventions
6060

61-
To make the nf-cmgg/preprocessing code and processing logic more understandable for new contributors and to ensure quality, we semi-standardise the way the code and other contributions are written.
61+
To make the `nf-cmgg/preprocessing` code and processing logic more understandable for new contributors and to ensure quality, we semi-standardise the way the code and other contributions are written.
6262

6363
### Adding a new step
6464

6565
If you wish to contribute a new step, please use the following coding standards:
6666

67-
1. Define the corresponding input channel into your new process from the expected previous process channel
67+
1. Define the corresponding input channel into your new process from the expected previous process channel.
6868
2. Write the process block (see below).
6969
3. Define the output channel if needed (see below).
7070
4. Add any new parameters to `nextflow.config` with a default (see below).
71-
5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core schema build` tool).
71+
5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core pipelines schema build` tool).
7272
6. Add sanity checks and validation for all relevant parameters.
7373
7. Perform local tests to validate that the new code works as expected.
7474
8. If applicable, add a new test command in `.github/workflow/ci.yml`.
@@ -77,13 +77,13 @@ If you wish to contribute a new step, please use the following coding standards:
7777

7878
### Default values
7979

80-
Parameters should be initialised / defined with default values in `nextflow.config` under the `params` scope.
80+
Parameters should be initialised / defined with default values within the `params` scope in `nextflow.config`.
8181

82-
Once there, use `nf-core schema build` to add to `nextflow_schema.json`.
82+
Once there, use `nf-core pipelines schema build` to add to `nextflow_schema.json`.
8383

8484
### Default processes resource requirements
8585

86-
Sensible defaults for process resource requirements (CPUs / memory / time) for a process should be defined in `conf/base.config`. These should generally be specified generic with `withLabel:` selectors so they can be shared across multiple processes/steps of the pipeline. A nf-core standard set of labels that should be followed where possible can be seen in the [nf-core pipeline template](https://github.com/nf-core/tools/blob/master/nf_core/pipeline-template/conf/base.config), which has the default process as a single core-process, and then different levels of multi-core configurations for increasingly large memory requirements defined with standardised labels.
86+
Sensible defaults for process resource requirements (CPUs / memory / time) for a process should be defined in `conf/base.config`. These should generally be specified generic with `withLabel:` selectors so they can be shared across multiple processes/steps of the pipeline. A nf-core standard set of labels that should be followed where possible can be seen in the [nf-core pipeline template](https://github.com/nf-core/tools/blob/main/nf_core/pipeline-template/conf/base.config), which has the default process as a single core-process, and then different levels of multi-core configurations for increasingly large memory requirements defined with standardised labels.
8787

8888
The process resources can be passed on to the tool dynamically within the process with the `${task.cpus}` and `${task.memory}` variables in the `script:` block.
8989

@@ -96,7 +96,7 @@ Please use the following naming schemes, to make it easy to understand what is g
9696

9797
### Nextflow version bumping
9898

99-
If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core bump-version --nextflow . [min-nf-version]`
99+
If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core pipelines bump-version --nextflow . [min-nf-version]`
100100

101101
### Images and figures
102102

.github/PULL_REQUEST_TEMPLATE.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-cmgg/prep
1616
- [ ] This comment contains a description of changes (with reason).
1717
- [ ] If you've fixed a bug or added code that should be tested, add tests!
1818
- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-cmgg/preprocessing/tree/master/.github/CONTRIBUTING.md)
19-
- [ ] Make sure your code lints (`nf-core lint`).
19+
- [ ] Make sure your code lints (`nf-core pipelines lint`).
2020
- [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir <OUTDIR>`).
2121
- [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir <OUTDIR>`).
2222
- [ ] Usage Documentation in `docs/usage.md` is updated.

.github/workflows/branch.yml

+10-8
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
name: nf-core branch protection
2-
# This workflow is triggered on PRs to master branch on the repository
3-
# It fails when someone tries to make a PR against the nf-core `master` branch instead of `dev`
2+
# This workflow is triggered on PRs to `main`/`master` branch on the repository
3+
# It fails when someone tries to make a PR against the nf-core `main`/`master` branch instead of `dev`
44
on:
55
pull_request_target:
6-
branches: [master]
6+
branches:
7+
- main
8+
- master
79

810
jobs:
911
test:
1012
runs-on: ubuntu-latest
1113
steps:
12-
# PRs to the nf-core repo master branch are only ok if coming from the nf-core repo `dev` or any `patch` branches
14+
# PRs to the nf-core repo main/master branch are only ok if coming from the nf-core repo `dev` or any `patch` branches
1315
- name: Check PRs
1416
if: github.repository == 'nf-cmgg/preprocessing'
1517
run: |
@@ -22,7 +24,7 @@ jobs:
2224
uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2
2325
with:
2426
message: |
25-
## This PR is against the `master` branch :x:
27+
## This PR is against the `${{github.event.pull_request.base.ref}}` branch :x:
2628
2729
* Do not close this PR
2830
* Click _Edit_ and change the `base` to `dev`
@@ -32,9 +34,9 @@ jobs:
3234
3335
Hi @${{ github.event.pull_request.user.login }},
3436
35-
It looks like this pull-request is has been made against the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) `master` branch.
36-
The `master` branch on nf-core repositories should always contain code from the latest release.
37-
Because of this, PRs to `master` are only allowed if they come from the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) `dev` branch.
37+
It looks like this pull-request is has been made against the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) ${{github.event.pull_request.base.ref}} branch.
38+
The ${{github.event.pull_request.base.ref}} branch on nf-core repositories should always contain code from the latest release.
39+
Because of this, PRs to ${{github.event.pull_request.base.ref}} are only allowed if they come from the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) `dev` branch.
3840
3941
You do not need to close this PR, you can change the target branch to `dev` by clicking the _"Edit"_ button at the top of this page.
4042
Note that even after this, the test will continue to show as failing until you push a new commit.

.github/workflows/ci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
strategy:
3131
matrix:
3232
NXF_VER:
33-
- "24.04.4"
33+
- "24.10.0"
3434
tags:
3535
- "modules/local/panelcoverage"
3636
- "subworkflows/local/bam_qc"

.github/workflows/linting.yml

+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
name: nf-core linting
2+
# This workflow is triggered on pushes and PRs to the repository.
3+
# It runs the `nf-core pipelines lint` and markdown lint tests to ensure
4+
# that the code meets the nf-core guidelines.
5+
on:
6+
push:
7+
branches:
8+
- dev
9+
pull_request:
10+
release:
11+
types: [published]
12+
13+
jobs:
14+
pre-commit:
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
18+
19+
- name: Set up Python 3.12
20+
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5
21+
with:
22+
python-version: "3.12"
23+
24+
- name: Install pre-commit
25+
run: pip install pre-commit
26+
27+
- name: Run pre-commit
28+
run: pre-commit run --all-files
29+
30+
nf-core:
31+
runs-on: ubuntu-latest
32+
steps:
33+
- name: Check out pipeline code
34+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
35+
36+
- name: Install Nextflow
37+
uses: nf-core/setup-nextflow@v2
38+
39+
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5
40+
with:
41+
python-version: "3.12"
42+
architecture: "x64"
43+
44+
- name: read .nf-core.yml
45+
uses: pietrobolcato/[email protected]
46+
id: read_yml
47+
with:
48+
config: ${{ github.workspace }}/.nf-core.yml
49+
50+
- name: Install dependencies
51+
run: |
52+
python -m pip install --upgrade pip
53+
pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }}
54+
55+
- name: Run nf-core pipelines lint
56+
if: ${{ github.base_ref != 'master' }}
57+
env:
58+
GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }}
59+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
60+
GITHUB_PR_COMMIT: ${{ github.event.pull_request.head.sha }}
61+
run: nf-core -l lint_log.txt pipelines lint --dir ${GITHUB_WORKSPACE} --markdown lint_results.md
62+
63+
- name: Run nf-core pipelines lint --release
64+
if: ${{ github.base_ref == 'master' }}
65+
env:
66+
GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }}
67+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
68+
GITHUB_PR_COMMIT: ${{ github.event.pull_request.head.sha }}
69+
run: nf-core -l lint_log.txt pipelines lint --release --dir ${GITHUB_WORKSPACE} --markdown lint_results.md
70+
71+
- name: Save PR number
72+
if: ${{ always() }}
73+
run: echo ${{ github.event.pull_request.number }} > PR_number.txt
74+
75+
- name: Upload linting log file artifact
76+
if: ${{ always() }}
77+
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4
78+
with:
79+
name: linting-logs
80+
path: |
81+
lint_log.txt
82+
lint_results.md
83+
PR_number.txt

.github/workflows/linting_comment.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
runs-on: ubuntu-latest
1212
steps:
1313
- name: Download lint results
14-
uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3
14+
uses: dawidd6/action-download-artifact@80620a5d27ce0ae443b965134db88467fc607b43 # v7
1515
with:
1616
workflow: linting.yml
1717
workflow_conclusion: completed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ results/
66
testing/
77
testing*
88
*.pyc
9+
null/
910
.nf-test*

.nf-core.yml

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ lint:
1515
- docs/images/nf-core-preprocessing_logo_dark.png
1616
- .github/ISSUE_TEMPLATE/bug_report.yml
1717
- docs/README.md
18+
- LICENSE
1819
multiqc_config:
1920
- report_comment
2021
nextflow_config:
@@ -29,3 +30,4 @@ repository_type: pipeline
2930
template:
3031
prefix: nf-cmgg
3132
skip: []
33+
nf_core_version: 3.1.1

.prettierignore

+1
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ testing/
1010
testing*
1111
*.pyc
1212
bin/
13+
ro-crate-metadata.json

CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
55

66
## dev
77

8+
## v2.0.3
9+
10+
- Update modules
11+
- Fix bugs where samples with unequal number of files were not processed correctly
12+
- Update to nf-core template v3.1.1
13+
- Fix all tests
14+
815
## v2.0.2
916

1017
- Drop unsed params

CITATIONS.md

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# nf-cmgg/preprocessing: Citations
2+
3+
## [nf-core](https://pubmed.ncbi.nlm.nih.gov/32055031/)
4+
5+
> Ewels PA, Peltzer A, Fillinger S, Patel H, Alneberg J, Wilm A, Garcia MU, Di Tommaso P, Nahnsen S. The nf-core framework for community-curated bioinformatics pipelines. Nat Biotechnol. 2020 Mar;38(3):276-278. doi: 10.1038/s41587-020-0439-x. PubMed PMID: 32055031.
6+
7+
## [Nextflow](https://pubmed.ncbi.nlm.nih.gov/28398311/)
8+
9+
> Di Tommaso P, Chatzou M, Floden EW, Barja PP, Palumbo E, Notredame C. Nextflow enables reproducible computational workflows. Nat Biotechnol. 2017 Apr 11;35(4):316-319. doi: 10.1038/nbt.3820. PubMed PMID: 28398311.
10+
11+
## Pipeline tools
12+
13+
- [FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)
14+
15+
> Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online].
16+
17+
- [MultiQC](https://pubmed.ncbi.nlm.nih.gov/27312411/)
18+
19+
> Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924.
20+
21+
## Software packaging/containerisation tools
22+
23+
- [Anaconda](https://anaconda.com)
24+
25+
> Anaconda Software Distribution. Computer software. Vers. 2-2.4.0. Anaconda, Nov. 2016. Web.
26+
27+
- [Bioconda](https://pubmed.ncbi.nlm.nih.gov/29967506/)
28+
29+
> Grüning B, Dale R, Sjödin A, Chapman BA, Rowe J, Tomkins-Tinch CH, Valieris R, Köster J; Bioconda Team. Bioconda: sustainable and comprehensive software distribution for the life sciences. Nat Methods. 2018 Jul;15(7):475-476. doi: 10.1038/s41592-018-0046-7. PubMed PMID: 29967506.
30+
31+
- [BioContainers](https://pubmed.ncbi.nlm.nih.gov/28379341/)
32+
33+
> da Veiga Leprevost F, Grüning B, Aflitos SA, Röst HL, Uszkoreit J, Barsnes H, Vaudel M, Moreno P, Gatto L, Weber J, Bai M, Jimenez RC, Sachsenberg T, Pfeuffer J, Alvarez RV, Griss J, Nesvizhskii AI, Perez-Riverol Y. BioContainers: an open-source and community-driven framework for software standardization. Bioinformatics. 2017 Aug 15;33(16):2580-2582. doi: 10.1093/bioinformatics/btx192. PubMed PMID: 28379341; PubMed Central PMCID: PMC5870671.
34+
35+
- [Docker](https://dl.acm.org/doi/10.5555/2600239.2600241)
36+
37+
> Merkel, D. (2014). Docker: lightweight linux containers for consistent development and deployment. Linux Journal, 2014(239), 2. doi: 10.5555/2600239.2600241.
38+
39+
- [Singularity](https://pubmed.ncbi.nlm.nih.gov/28494014/)
40+
41+
> Kurtzer GM, Sochat V, Bauer MW. Singularity: Scientific containers for mobility of compute. PLoS One. 2017 May 11;12(5):e0177459. doi: 10.1371/journal.pone.0177459. eCollection 2017. PubMed PMID: 28494014; PubMed Central PMCID: PMC5426675.

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![GitHub Actions CI Status](https://github.com/nf-cmgg/preprocessing/actions/workflows/ci.yml/badge.svg)](https://github.com/nf-cmgg/preprocessing/actions/workflows/ci.yml)
44
[![GitHub Actions Linting Status](https://github.com/nf-cmgg/preprocessing/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-cmgg/preprocessing/actions/workflows/linting.yml)
5-
[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A523.10.1-23aa62.svg)](https://www.nextflow.io/)
5+
[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A524.10.0-23aa62.svg)](https://www.nextflow.io/)
66
[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)
77
[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)
88
[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)

assets/multiqc_config.yml

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
report_comment: >
2-
This report has been generated by the <a href="https://github.com/nf-cmgg/preprocessing/releases/tag/2.0.2" target="_blank">nf-cmgg/preprocessing</a>
2+
This report has been generated by the <a href="https://github.com/nf-cmgg/preprocessing/releases/tag/2.0.3/" target="_blank">nf-cmgg/preprocessing</a>
33
analysis pipeline.
44
report_section_order:
55
"nf-cmgg-preprocessing-methods-description":
@@ -13,6 +13,14 @@ disable_version_detection: true
1313
bclconvert:
1414
create_undetermined_barcode_barplots: true
1515
mosdepth_config:
16+
general_stats_coverage:
17+
- 1
18+
- 5
19+
- 10
20+
- 20
21+
- 30
22+
- 40
23+
- 50
1624
include_contigs:
1725
- "chr*"
1826
exclude_contigs:

bin/cmgg_genelists

678 KB
Binary file not shown.

conf/igenomes.config

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ params {
2727

2828
// ROI's
2929
roi_copgt = "${params.igenomes_base}/Hsapiens/GRCh38/regions/CMGG_coPGT-M_analyses_ROI_v1.bed"
30-
roi_wes = "${params.igenomes_base}/Hsapiens/GRCh38/regions/CMGG_WES_analysis_ROI_v5.bed"
30+
roi_wes = "${params.igenomes_base}/Hsapiens/GRCh38/regions/CMGG_WES_analysis_ROI_v6.bed"
3131
}
3232
"GRCm39" {
3333
// Genome reference

conf/igenomes_ignored.config

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3+
Nextflow config file for iGenomes paths
4+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5+
Empty genomes dictionary to use when igenomes is ignored.
6+
----------------------------------------------------------------------------------------
7+
*/
8+
9+
params.genomes = [:]

0 commit comments

Comments
 (0)