Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare release 2.0 #17

Open
wants to merge 82 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
be59049
add GEX test data
ggabernet Jul 26, 2021
76ac145
add Analysis field
ggabernet Jul 26, 2021
2672551
Initial template commit
ggabernet Aug 5, 2021
02d2606
Merge branch 'TEMPLATE' into template_merge
ggabernet Aug 5, 2021
ab94954
bump versions 2.0dev
ggabernet Aug 5, 2021
9339b33
update changelog
ggabernet Aug 5, 2021
737b69c
add process getreferences
ggabernet Aug 5, 2021
82de443
add process cellranger count
ggabernet Aug 5, 2021
b9e66e3
add process cellranger mkref
ggabernet Aug 5, 2021
8215387
update main.nf
ggabernet Aug 5, 2021
048405c
update workflowcellranger lib
ggabernet Aug 5, 2021
4080f44
update input check
ggabernet Aug 5, 2021
fa36f04
update nextflow config
ggabernet Aug 5, 2021
bdfaa2b
update input tsv
ggabernet Aug 5, 2021
e43abc0
update cellranger wf
ggabernet Aug 5, 2021
c61e6da
fix build reference
ggabernet Aug 5, 2021
785c2a2
add cellranger count
ggabernet Aug 5, 2021
1b27536
merge samples gem
ggabernet Aug 5, 2021
f4006fb
fix gem var cellranger count
ggabernet Aug 5, 2021
303f085
remove old DSL1 comments
ggabernet Aug 6, 2021
2fec20f
add workflow GEX
ggabernet Aug 6, 2021
0c2987d
add versions
ggabernet Aug 6, 2021
ca3a848
update gtf
ggabernet Aug 6, 2021
12c0ad7
update gtf
ggabernet Aug 6, 2021
12df9d7
update gtf
ggabernet Aug 6, 2021
b85dcca
update gtf
ggabernet Aug 6, 2021
9d2e653
update gtf
ggabernet Aug 6, 2021
a97c159
update get reference
ggabernet Aug 6, 2021
20c646d
fix reference name
ggabernet Aug 6, 2021
cade3a6
handle reference name
ggabernet Aug 6, 2021
99543f5
fix untar refs
ggabernet Aug 6, 2021
aae6b8a
fix referenc name
ggabernet Aug 6, 2021
97d8f87
fix reference name
ggabernet Aug 6, 2021
aa7d381
simplify cellranger count
ggabernet Aug 6, 2021
30fa821
dump channel
ggabernet Aug 6, 2021
1ccb2b9
fix ref name value
ggabernet Aug 6, 2021
47050a4
fix ref name
ggabernet Aug 6, 2021
59a0119
fix refname
ggabernet Aug 6, 2021
31adb6a
fix refname
ggabernet Aug 6, 2021
0dd4e19
fix reference name mkref
ggabernet Aug 6, 2021
dfe22a5
test ref.name
ggabernet Aug 6, 2021
c508fd6
test reference.name
ggabernet Aug 6, 2021
536f6fe
Merge branch 'dev' into dsl2
ggabernet Aug 7, 2021
b9c781a
update nf-core lint
ggabernet Aug 7, 2021
52dc18c
fix lint errors
ggabernet Aug 7, 2021
7a09245
update params
ggabernet Aug 7, 2021
04a4479
fix markdownlint errors
ggabernet Aug 7, 2021
e45cb68
update cellranger v6.0.2
ggabernet Aug 8, 2021
f20c2b9
rm index param
ggabernet Aug 9, 2021
dd28b16
no publish ref
ggabernet Aug 9, 2021
24182b4
rm igenomes
ggabernet Aug 9, 2021
4c686f0
fix channels reference name
ggabernet Aug 9, 2021
2059262
update check samplesheet
ggabernet Aug 9, 2021
24fb517
remove params.genomes
ggabernet Aug 9, 2021
00df479
include multi workflow
ggabernet Aug 9, 2021
d81d558
samplesheet validation
ggabernet Aug 9, 2021
185f979
add fastq multi
ggabernet Aug 9, 2021
24c6be5
add multi features
ggabernet Aug 9, 2021
8d89a0f
add multi process
ggabernet Aug 24, 2021
5ed919d
add config generating python script
ggabernet Aug 24, 2021
3a58043
update base config
ggabernet Aug 24, 2021
1b5df36
fix cellranger multi stub
ggabernet Aug 24, 2021
76c801c
fix cellranger collect
ggabernet Aug 26, 2021
a9f5496
remove reference name as not needed
ggabernet Aug 27, 2021
7106aaa
add params to nextflow schema
ggabernet Aug 27, 2021
801c5a8
Merge pull request #1 from ggabernet/multi
ggabernet Aug 27, 2021
5c6d600
update usage docs
ggabernet Sep 10, 2021
bf40ed6
fix lint
ggabernet Sep 10, 2021
318d522
Merge pull request #2 from ggabernet/multi
ggabernet Sep 10, 2021
93ea856
Merge pull request #15 from ggabernet/dsl2
ggabernet Sep 10, 2021
12607ab
import outside of workflow def
ggabernet Oct 8, 2021
102d258
Merge pull request #18 from ggabernet/dev
ggabernet Dec 4, 2021
9f91997
multi input tsv
ggabernet Dec 5, 2021
76f22e5
Merge pull request #19 from ggabernet/dev
ggabernet Dec 5, 2021
f3caf96
bump versions 2.0
ggabernet Mar 8, 2022
f3a61a2
Merge pull request #20 from ggabernet/dev
ggabernet Mar 8, 2022
f2d1374
fixing tests
ggabernet Mar 8, 2022
fd54d08
fix error test cellranger
ggabernet Mar 8, 2022
fbf9cff
fix tests
ggabernet Mar 8, 2022
a20fc4b
fix workflow imports
ggabernet Mar 8, 2022
c77a195
fix tests
ggabernet Mar 8, 2022
8d84452
Merge pull request #21 from ggabernet/dev
ggabernet Mar 8, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_size = 4
indent_style = space

[*.{yml,yaml}]
indent_size = 2

[*.json]
insert_final_newline = unset

# These files are edited and tested upstream in nf-core/modules
[/modules/nf-core/**]
charset = unset
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
indent_style = unset
indent_size = unset

[/assets/email*]
indent_size = unset
11 changes: 6 additions & 5 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ If you'd like to write some code for qbic-pipelines/cellranger, the standard wor
1. Check that there isn't already an issue about your idea in the [qbic-pipelines/cellranger issues](https://github.com/qbic-pipelines/cellranger/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](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the [qbic-pipelines/cellranger repository](https://github.com/qbic-pipelines/cellranger) 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
3. Make the necessary changes / additions within your forked repository following [Pipeline conventions](#pipeline-contribution-conventions)
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).
5. 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/).

Expand Down Expand Up @@ -66,12 +67,12 @@ If you wish to contribute a new step, please use the following coding standards:
2. Write the process block (see below).
3. Define the output channel if needed (see below).
4. Add any new flags/options to `nextflow.config` with a default (see below).
5. Add any new flags/options to `nextflow_schema.json` with help text (with `nf-core schema build .`).
5. Add any new flags/options to `nextflow_schema.json` with help text (with `nf-core schema build`).
6. Add any new flags/options to the help message (for integer/text parameters, print to help the corresponding `nextflow.config` parameter).
7. Add sanity checks for all relevant parameters.
8. Add any new software to the `scrape_software_versions.py` script in `bin/` and the version command to the `scrape_software_versions` process in `main.nf`.
9. Do local tests that the new code works properly and as expected.
10. Add a new test command in `.github/workflow/ci.yaml`.
10. Add a new test command in `.github/workflow/ci.yml`.
11. If applicable add a [MultiQC](https://https://multiqc.info/) module.
12. Update MultiQC config `assets/multiqc_config.yaml` so relevant suffixes, name clean up, General Statistics Table column order, and module figures are in the right order.
13. Optional: Add any descriptions of MultiQC report sections and output files to `docs/output.md`.
Expand All @@ -80,7 +81,7 @@ If you wish to contribute a new step, please use the following coding standards:

Parameters should be initialised / defined with default values in `nextflow.config` under the `params` scope.

Once there, use `nf-core schema build .` to add to `nextflow_schema.json`.
Once there, use `nf-core schema build` to add to `nextflow_schema.json`.

### Default processes resource requirements

Expand Down
3 changes: 1 addition & 2 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,12 @@ Have you provided the following extra information/files:

## Nextflow Installation

- Version: <!-- [e.g. 19.10.0] -->
- Version: <!-- [e.g. 21.04.0] -->

## Container engine

- Engine: <!-- [e.g. Conda, Docker, Singularity, Podman, Shifter or Charliecloud] -->
- version: <!-- [e.g. 1.0.0] -->
- Image tag: <!-- [e.g. qbicpipelines/cellranger:1.0.0] -->

## Additional context

Expand Down
7 changes: 3 additions & 4 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,9 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/qbic-pipelin

- [ ] 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 you've added a new tool - add to the software_versions process and a regex to `scrape_software_versions.py`
- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](<https://github.com/qbic-pipelines/cellranger/tree/master/.github/CONTRIBUTING.md)
- [ ] If necessary, also make a PR on the nf-core/qbic-pipelines-cellranger _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository.
- [ ] Make sure your code lints (`nf-core lint .`).
- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/cellranger/tree/master/.github/CONTRIBUTING.md)
- [ ] If necessary, also add test datasets on the test-datasets folder.
- [ ] Make sure your code lints (`nf-core lint`).
- [ ] Ensure the test suite passes (`nextflow run . -profile test,docker`).
- [ ] Usage Documentation in `docs/usage.md` is updated.
- [ ] Output Documentation in `docs/output.md` is updated.
Expand Down
8 changes: 3 additions & 5 deletions .github/workflows/branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ jobs:
run: |
{ [[ ${{github.event.pull_request.head.repo.full_name}} == qbic-pipelines/cellranger ]] && [[ $GITHUB_HEAD_REF = "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]]


# If the above check failed, post a comment on the PR explaining the failure
# NOTE - this doesn't currently work if the PR is coming from a fork, due to limitations in GitHub actions secrets
- name: Post PR comment
Expand All @@ -33,14 +32,13 @@ jobs:

Hi @${{ github.event.pull_request.user.login }},

It looks like this pull-request is has been made against the ${{github.event.pull_request.head.repo.full_name}} `master` branch.
The `master` branch on qbic-pipelines repositories should always contain code from the latest release.
Because of this, PRs to `master` are only allowed if they come from the ${{github.event.pull_request.head.repo.full_name}} `dev` branch.
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.
The `master` branch on nf-core repositories should always contain code from the latest release.
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.

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.
Note that even after this, the test will continue to show as failing until you push a new commit.

Thanks again for your contribution!
repo-token: ${{ secrets.GITHUB_TOKEN }}
allow-repeats: false

16 changes: 3 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,11 @@ jobs:
strategy:
matrix:
# Nextflow versions: check pipeline minimum and current latest
nxf_ver: ['21.04.1', '']
nxf_ver: ["21.04.1", ""]
steps:
- name: Check out pipeline code
uses: actions/checkout@v2

- name: Pull docker image
run: |
docker pull qbicpipelines/cellranger:dev
docker tag qbicpipelines/cellranger:dev qbicpipelines/cellranger:1.0

- name: Install Nextflow
env:
CAPSULE_LOG: none
Expand All @@ -55,17 +50,12 @@ jobs:
strategy:
matrix:
# Nextflow versions: check pipeline minimum and current latest
nxf_ver: ['21.04.1', '']
profile: ['test_genome']
nxf_ver: ["21.04.1", ""]
profile: ["test_genome"]
steps:
- name: Check out pipeline code
uses: actions/checkout@v2

- name: Pull docker image
run: |
docker pull qbicpipelines/cellranger:dev
docker tag qbicpipelines/cellranger:dev qbicpipelines/cellranger:1.0

- name: Install Nextflow
env:
CAPSULE_LOG: none
Expand Down
20 changes: 8 additions & 12 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: '10'
node-version: "10"
- name: Install markdownlint
run: npm install -g markdownlint-cli
- name: Run Markdownlint
run: markdownlint ${GITHUB_WORKSPACE} -c ${GITHUB_WORKSPACE}/.github/markdownlint.yml
run: markdownlint .

# If the above check failed, post a comment on the PR explaining the failure
- name: Post PR comment
Expand All @@ -35,8 +35,8 @@ jobs:
* On Mac: `brew install markdownlint-cli`
* Everything else: [Install `npm`](https://www.npmjs.com/get-npm) then [install `markdownlint-cli`](https://www.npmjs.com/package/markdownlint-cli) (`npm install -g markdownlint-cli`)
* Fix the markdown errors
* Automatically: `markdownlint . --config .github/markdownlint.yml --fix`
* Manually resolve anything left from `markdownlint . --config .github/markdownlint.yml`
* Automatically: `markdownlint . --fix`
* Manually resolve anything left from `markdownlint .`

Once you push these changes the test should pass, and you can hide this comment :+1:

Expand All @@ -46,14 +46,13 @@ jobs:
repo-token: ${{ secrets.GITHUB_TOKEN }}
allow-repeats: false


YAML:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-node@v1
with:
node-version: '10'
node-version: "10"
- name: Install yaml-lint
run: npm install -g yaml-lint
- name: Run yaml-lint
Expand Down Expand Up @@ -84,11 +83,9 @@ jobs:
repo-token: ${{ secrets.GITHUB_TOKEN }}
allow-repeats: false


nf-core:
runs-on: ubuntu-latest
steps:

- name: Check out pipeline code
uses: actions/checkout@v2

Expand All @@ -101,8 +98,8 @@ jobs:

- uses: actions/setup-python@v1
with:
python-version: '3.6'
architecture: 'x64'
python-version: "3.6"
architecture: "x64"

- name: Install dependencies
run: |
Expand All @@ -114,7 +111,7 @@ jobs:
GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_PR_COMMIT: ${{ github.event.pull_request.head.sha }}
run: nf-core -l lint_log.txt lint ${GITHUB_WORKSPACE} --markdown lint_results.md
run: nf-core -l lint_log.txt lint --dir ${GITHUB_WORKSPACE} --markdown lint_results.md

- name: Save PR number
if: ${{ always() }}
Expand All @@ -129,4 +126,3 @@ jobs:
lint_log.txt
lint_results.md
PR_number.txt

3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ tests/
testing/
testing*
*.pyc
cellranger*
cellranger*.tar.gz
.vscode/
14 changes: 14 additions & 0 deletions .markdownlint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Markdownlint configuration file
default: true
line-length: false
ul-indent:
indent: 4
no-duplicate-header:
siblings_only: true
no-inline-html:
allowed_elements:
- img
- p
- kbd
- details
- summary
22 changes: 0 additions & 22 deletions .nf-core-lint.yml

This file was deleted.

22 changes: 22 additions & 0 deletions .nf-core.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
lint:
files_unchanged:
- .github/CONTRIBUTING.md
- .github/ISSUE_TEMPLATE/bug_report.md
- .github/ISSUE_TEMPLATE/config.yml
- .github/ISSUE_TEMPLATE/feature_request.md
- .github/PULL_REQUEST_TEMPLATE.md
- .github/workflows/branch.yml
- .github/workflows/linting.yml
- assets/email_template.html
- assets/email_template.txt
- assets/sendmail_template.txt
- assets/multiqc_config.yaml
- bin/scrape_software_versions.py
- CODE_OF_CONDUCT.md
- docs/README.md
- .gitignore
files_exist:
- assets/nf-core-qbic-pipelines/cellranger_logo.png
- docs/images/nf-core-qbic-pipelines/cellranger_logo.png
actions_ci: False
nextflow_config: False
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,28 @@
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## v2.0dev -

* Ported pipeline to Nextflow DSL2.

### `Added`

* Bump versions 2.0.
* `cellranger_mode` parameter, allows to select the cellranger operation mode: `GEX` or `multi` are supported.

### `Fixed`

* Fixed channel issues when not providing a reference file.

### `Dependencies`

* Updated GRCh38 cellranger GEX reference
* Created new container for Cell Ranger, updated version to `6.0.2`.

### `Deprecated`

* `index_file` parameter is deprecated as it is no longer needed.

## v1.0.1 - Mordor - patch

### `Added`
Expand Down
35 changes: 35 additions & 0 deletions CITATIONS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# nf-core/cellranger: Citations

## [nf-core](https://pubmed.ncbi.nlm.nih.gov/32055031/)

> 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.

## [Nextflow](https://pubmed.ncbi.nlm.nih.gov/28398311/)

> 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.

## Pipeline tools

* [FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)

* [MultiQC](https://www.ncbi.nlm.nih.gov/pubmed/27312411/)
> 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.

* [10x Genomics Cell Ranger](https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/what-is-cell-ranger)
> Zheng, G. X. Y. et al. Massively parallel digital transcriptional profiling of single cells. Nat Commun 8, 14049 (2017). doi: 10.1038/ncomms14049.

## Software packaging/containerisation tools

* [Anaconda](https://anaconda.com)
> Anaconda Software Distribution. Computer software. Vers. 2-2.4.0. Anaconda, Nov. 2016. Web.

* [Bioconda](https://pubmed.ncbi.nlm.nih.gov/29967506/)
> 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.

* [BioContainers](https://pubmed.ncbi.nlm.nih.gov/28379341/)
> 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.

* [Docker](https://dl.acm.org/doi/10.5555/2600239.2600241)

* [Singularity](https://pubmed.ncbi.nlm.nih.gov/28494014/)
> 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.
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ The safety officer in consultation with the nf-core core team have the right and

Members of the core team or the safety officer who violate the CoC will be required to recuse themselves pending investigation. They will not have access to any reports of the violations and be subject to the same actions as others in violation of the CoC.

## When and where does this Code of Conduct apply
## When are where does this Code of Conduct apply?

Participation in the nf-core community is contingent on following these guidelines in all our workspaces and events. This includes but is not limited to the following listed alphabetically and therefore in no order of preference:

Expand Down
Loading