diff --git a/.editorconfig b/.editorconfig
index b6b3190..9b99008 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -22,3 +22,11 @@ indent_size = unset
[/assets/email*]
indent_size = unset
+
+# ignore Readme
+[README.md]
+indent_style = unset
+
+# ignore python
+[*.{py}]
+indent_style = unset
diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml
index ef1b956..af85af0 100644
--- a/.github/workflows/awsfulltest.yml
+++ b/.github/workflows/awsfulltest.yml
@@ -4,36 +4,36 @@ name: nf-core AWS full size tests
# It runs the -profile 'test_full' on AWS batch
on:
- release:
- types: [published]
- workflow_dispatch:
+ release:
+ types: [published]
+ workflow_dispatch:
jobs:
- run-tower:
- name: Run AWS full tests
- if: github.repository == 'nf-core/omicsgenetraitassociation'
- runs-on: ubuntu-latest
- steps:
- - name: Launch workflow via tower
- uses: seqeralabs/action-tower-launch@v2
- # TODO nf-core: You can customise AWS full pipeline tests as required
- # Add full size test data (but still relatively small datasets for few samples)
- # on the `test_full.config` test runs with only one set of parameters
- with:
- workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }}
- access_token: ${{ secrets.TOWER_ACCESS_TOKEN }}
- compute_env: ${{ secrets.TOWER_COMPUTE_ENV }}
- revision: ${{ github.sha }}
- workdir: s3://${{ secrets.AWS_S3_BUCKET }}/work/omicsgenetraitassociation/work-${{ github.sha }}
- parameters: |
- {
- "hook_url": "${{ secrets.MEGATESTS_ALERTS_SLACK_HOOK_URL }}",
- "outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/omicsgenetraitassociation/results-${{ github.sha }}"
- }
- profiles: test_full
+ run-tower:
+ name: Run AWS full tests
+ if: github.repository == 'nf-core/omicsgenetraitassociation'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Launch workflow via tower
+ uses: seqeralabs/action-tower-launch@v2
+ # TODO nf-core: You can customise AWS full pipeline tests as required
+ # Add full size test data (but still relatively small datasets for few samples)
+ # on the `test_full.config` test runs with only one set of parameters
+ with:
+ workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }}
+ access_token: ${{ secrets.TOWER_ACCESS_TOKEN }}
+ compute_env: ${{ secrets.TOWER_COMPUTE_ENV }}
+ revision: ${{ github.sha }}
+ workdir: s3://${{ secrets.AWS_S3_BUCKET }}/work/omicsgenetraitassociation/work-${{ github.sha }}
+ parameters: |
+ {
+ "hook_url": "${{ secrets.MEGATESTS_ALERTS_SLACK_HOOK_URL }}",
+ "outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/omicsgenetraitassociation/results-${{ github.sha }}"
+ }
+ profiles: test_full
- - uses: actions/upload-artifact@v3
- with:
- name: Tower debug log file
- path: |
- tower_action_*.log
- tower_action_*.json
+ - uses: actions/upload-artifact@v4
+ with:
+ name: Tower debug log file
+ path: |
+ tower_action_*.log
+ tower_action_*.json
diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml
index 7f344b7..a6d8950 100644
--- a/.github/workflows/awstest.yml
+++ b/.github/workflows/awstest.yml
@@ -3,31 +3,31 @@ name: nf-core AWS test
# It runs the -profile 'test' on AWS batch
on:
- workflow_dispatch:
+ workflow_dispatch:
jobs:
- run-tower:
- name: Run AWS tests
- if: github.repository == 'nf-core/omicsgenetraitassociation'
- runs-on: ubuntu-latest
- steps:
- # Launch workflow using Tower CLI tool action
- - name: Launch workflow via tower
- uses: seqeralabs/action-tower-launch@v2
- with:
- workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }}
- access_token: ${{ secrets.TOWER_ACCESS_TOKEN }}
- compute_env: ${{ secrets.TOWER_COMPUTE_ENV }}
- revision: ${{ github.sha }}
- workdir: s3://${{ secrets.AWS_S3_BUCKET }}/work/omicsgenetraitassociation/work-${{ github.sha }}
- parameters: |
- {
- "outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/omicsgenetraitassociation/results-test-${{ github.sha }}"
- }
- profiles: test
+ run-tower:
+ name: Run AWS tests
+ if: github.repository == 'nf-core/omicsgenetraitassociation'
+ runs-on: ubuntu-latest
+ steps:
+ # Launch workflow using Tower CLI tool action
+ - name: Launch workflow via tower
+ uses: seqeralabs/action-tower-launch@v2
+ with:
+ workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }}
+ access_token: ${{ secrets.TOWER_ACCESS_TOKEN }}
+ compute_env: ${{ secrets.TOWER_COMPUTE_ENV }}
+ revision: ${{ github.sha }}
+ workdir: s3://${{ secrets.AWS_S3_BUCKET }}/work/omicsgenetraitassociation/work-${{ github.sha }}
+ parameters: |
+ {
+ "outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/omicsgenetraitassociation/results-test-${{ github.sha }}"
+ }
+ profiles: test
- - uses: actions/upload-artifact@v3
- with:
- name: Tower debug log file
- path: |
- tower_action_*.log
- tower_action_*.json
+ - uses: actions/upload-artifact@v4
+ with:
+ name: Tower debug log file
+ path: |
+ tower_action_*.log
+ tower_action_*.json
diff --git a/.github/workflows/clean-up.yml b/.github/workflows/clean-up.yml
index 694e90e..e5f0e6b 100644
--- a/.github/workflows/clean-up.yml
+++ b/.github/workflows/clean-up.yml
@@ -1,24 +1,24 @@
name: "Close user-tagged issues and PRs"
on:
- schedule:
- - cron: "0 0 * * 0" # Once a week
+ schedule:
+ - cron: "0 0 * * 0" # Once a week
jobs:
- clean-up:
- runs-on: ubuntu-latest
- permissions:
- issues: write
- pull-requests: write
- steps:
- - uses: actions/stale@v7
- with:
- stale-issue-message: "This issue has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment otherwise this issue will be closed in 20 days."
- stale-pr-message: "This PR has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment if it is still useful."
- close-issue-message: "This issue was closed because it has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor and then staled for 20 days with no activity."
- days-before-stale: 30
- days-before-close: 20
- days-before-pr-close: -1
- any-of-labels: "awaiting-changes,awaiting-feedback"
- exempt-issue-labels: "WIP"
- exempt-pr-labels: "WIP"
- repo-token: "${{ secrets.GITHUB_TOKEN }}"
+ clean-up:
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+ pull-requests: write
+ steps:
+ - uses: actions/stale@v9
+ with:
+ stale-issue-message: "This issue has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment otherwise this issue will be closed in 20 days."
+ stale-pr-message: "This PR has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment if it is still useful."
+ close-issue-message: "This issue was closed because it has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor and then staled for 20 days with no activity."
+ days-before-stale: 30
+ days-before-close: 20
+ days-before-pr-close: -1
+ any-of-labels: "awaiting-changes,awaiting-feedback"
+ exempt-issue-labels: "WIP"
+ exempt-pr-labels: "WIP"
+ repo-token: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml
new file mode 100644
index 0000000..2547eb6
--- /dev/null
+++ b/.github/workflows/download_pipeline.yml
@@ -0,0 +1,67 @@
+name: Test successful pipeline download with 'nf-core download'
+
+# Run the workflow when:
+# - dispatched manually
+# - when a PR is opened or reopened to master branch
+# - the head branch of the pull request is updated, i.e. if fixes for a release are pushed last minute to dev.
+on:
+ workflow_dispatch:
+ pull_request:
+ types:
+ - opened
+ branches:
+ - master
+ pull_request_target:
+ branches:
+ - master
+
+env:
+ NXF_ANSI_LOG: false
+
+jobs:
+ download:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Install Nextflow
+ uses: nf-core/setup-nextflow@v1
+
+ - uses: actions/setup-python@v5
+ with:
+ python-version: "3.11"
+ architecture: "x64"
+ - uses: eWaterCycle/setup-singularity@v7
+ with:
+ singularity-version: 3.8.3
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install git+https://github.com/nf-core/tools.git@dev
+
+ - name: Get the repository name and current branch set as environment variable
+ run: |
+ echo "REPO_LOWERCASE=${GITHUB_REPOSITORY,,}" >> ${GITHUB_ENV}
+ echo "REPOTITLE_LOWERCASE=$(basename ${GITHUB_REPOSITORY,,})" >> ${GITHUB_ENV}
+ echo "REPO_BRANCH=${GITHUB_REF#refs/heads/}" >> ${GITHUB_ENV}
+
+ - name: Download the pipeline
+ env:
+ NXF_SINGULARITY_CACHEDIR: ./
+ run: |
+ nf-core download ${{ env.REPO_LOWERCASE }} \
+ --revision ${{ env.REPO_BRANCH }} \
+ --outdir ./${{ env.REPOTITLE_LOWERCASE }} \
+ --compress "none" \
+ --container-system 'singularity' \
+ --container-library "quay.io" -l "docker.io" -l "ghcr.io" \
+ --container-cache-utilisation 'amend' \
+ --download-configuration
+
+ - name: Inspect download
+ run: tree ./${{ env.REPOTITLE_LOWERCASE }}
+
+ - name: Run the downloaded pipeline
+ env:
+ NXF_SINGULARITY_CACHEDIR: ./
+ NXF_SINGULARITY_HOME_MOUNT: true
+ run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results
diff --git a/.github/workflows/fix-linting.yml b/.github/workflows/fix-linting.yml
index 9b25d06..5a89221 100644
--- a/.github/workflows/fix-linting.yml
+++ b/.github/workflows/fix-linting.yml
@@ -1,55 +1,89 @@
name: Fix linting from a comment
on:
- issue_comment:
- types: [created]
+ issue_comment:
+ types: [created]
jobs:
- deploy:
- # Only run if comment is on a PR with the main repo, and if it contains the magic keywords
- if: >
- contains(github.event.comment.html_url, '/pull/') &&
- contains(github.event.comment.body, '@nf-core-bot fix linting') &&
- github.repository == 'nf-core/omicsgenetraitassociation'
- runs-on: ubuntu-latest
- steps:
- # Use the @nf-core-bot token to check out so we can push later
- - uses: actions/checkout@v4
- with:
- token: ${{ secrets.nf_core_bot_auth_token }}
-
- # Action runs on the issue comment, so we don't get the PR by default
- # Use the gh cli to check out the PR
- - name: Checkout Pull Request
- run: gh pr checkout ${{ github.event.issue.number }}
- env:
- GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }}
-
- - uses: actions/setup-node@v4
-
- - name: Install Prettier
- run: npm install -g prettier @prettier/plugin-php
-
- # Check that we actually need to fix something
- - name: Run 'prettier --check'
- id: prettier_status
- run: |
- if prettier --check ${GITHUB_WORKSPACE}; then
- echo "result=pass" >> $GITHUB_OUTPUT
- else
- echo "result=fail" >> $GITHUB_OUTPUT
- fi
-
- - name: Run 'prettier --write'
- if: steps.prettier_status.outputs.result == 'fail'
- run: prettier --write ${GITHUB_WORKSPACE}
-
- - name: Commit & push changes
- if: steps.prettier_status.outputs.result == 'fail'
- run: |
- git config user.email "core@nf-co.re"
- git config user.name "nf-core-bot"
- git config push.default upstream
- git add .
- git status
- git commit -m "[automated] Fix linting with Prettier"
- git push
+ fix-linting:
+ # Only run if comment is on a PR with the main repo, and if it contains the magic keywords
+ if: >
+ contains(github.event.comment.html_url, '/pull/') &&
+ contains(github.event.comment.body, '@nf-core-bot fix linting') &&
+ github.repository == 'nf-core/omicsgenetraitassociation'
+ runs-on: ubuntu-latest
+ steps:
+ # Use the @nf-core-bot token to check out so we can push later
+ - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
+ with:
+ token: ${{ secrets.nf_core_bot_auth_token }}
+
+ # indication that the linting is being fixed
+ - name: React on comment
+ uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
+ with:
+ comment-id: ${{ github.event.comment.id }}
+ reactions: eyes
+
+ # Action runs on the issue comment, so we don't get the PR by default
+ # Use the gh cli to check out the PR
+ - name: Checkout Pull Request
+ run: gh pr checkout ${{ github.event.issue.number }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }}
+
+ # Install and run pre-commit
+ - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5
+ with:
+ python-version: 3.11
+
+ - name: Install pre-commit
+ run: pip install pre-commit
+
+ - name: Run pre-commit
+ id: pre-commit
+ run: pre-commit run --all-files
+ continue-on-error: true
+
+ # indication that the linting has finished
+ - name: react if linting finished succesfully
+ if: steps.pre-commit.outcome == 'success'
+ uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
+ with:
+ comment-id: ${{ github.event.comment.id }}
+ reactions: "+1"
+
+ - name: Commit & push changes
+ id: commit-and-push
+ if: steps.pre-commit.outcome == 'failure'
+ run: |
+ git config user.email "core@nf-co.re"
+ git config user.name "nf-core-bot"
+ git config push.default upstream
+ git add .
+ git status
+ git commit -m "[automated] Fix code linting"
+ git push
+
+ - name: react if linting errors were fixed
+ id: react-if-fixed
+ if: steps.commit-and-push.outcome == 'success'
+ uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
+ with:
+ comment-id: ${{ github.event.comment.id }}
+ reactions: hooray
+
+ - name: react if linting errors were not fixed
+ if: steps.commit-and-push.outcome == 'failure'
+ uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
+ with:
+ comment-id: ${{ github.event.comment.id }}
+ reactions: confused
+
+ - name: react if linting errors were not fixed
+ if: steps.commit-and-push.outcome == 'failure'
+ uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4
+ with:
+ issue-number: ${{ github.event.issue.number }}
+ body: |
+ @${{ github.actor }} I tried to fix the linting errors, but it didn't work. Please fix them manually.
+ See [CI log](https://github.com/nf-core/omicsgenetraitassociation/actions/runs/${{ github.run_id }}) for more details.
diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml
index 6ad3392..26a9bbb 100644
--- a/.github/workflows/release-announcements.yml
+++ b/.github/workflows/release-announcements.yml
@@ -1,68 +1,68 @@
name: release-announcements
# Automatic release toot and tweet anouncements
on:
- release:
- types: [published]
- workflow_dispatch:
+ release:
+ types: [published]
+ workflow_dispatch:
jobs:
- toot:
- runs-on: ubuntu-latest
- steps:
- - uses: rzr/fediverse-action@master
- with:
- access-token: ${{ secrets.MASTODON_ACCESS_TOKEN }}
- host: "mstdn.science" # custom host if not "mastodon.social" (default)
- # GitHub event payload
- # https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#release
- message: |
- Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}!
+ toot:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: rzr/fediverse-action@master
+ with:
+ access-token: ${{ secrets.MASTODON_ACCESS_TOKEN }}
+ host: "mstdn.science" # custom host if not "mastodon.social" (default)
+ # GitHub event payload
+ # https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#release
+ message: |
+ Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}!
- Please see the changelog: ${{ github.event.release.html_url }}
+ Please see the changelog: ${{ github.event.release.html_url }}
- send-tweet:
- runs-on: ubuntu-latest
+ send-tweet:
+ runs-on: ubuntu-latest
- steps:
- - uses: actions/setup-python@v4
- with:
- python-version: "3.10"
- - name: Install dependencies
- run: pip install tweepy==4.14.0
- - name: Send tweet
- shell: python
- run: |
- import os
- import tweepy
+ steps:
+ - uses: actions/setup-python@v5
+ with:
+ python-version: "3.10"
+ - name: Install dependencies
+ run: pip install tweepy==4.14.0
+ - name: Send tweet
+ shell: python
+ run: |
+ import os
+ import tweepy
- client = tweepy.Client(
- access_token=os.getenv("TWITTER_ACCESS_TOKEN"),
- access_token_secret=os.getenv("TWITTER_ACCESS_TOKEN_SECRET"),
- consumer_key=os.getenv("TWITTER_CONSUMER_KEY"),
- consumer_secret=os.getenv("TWITTER_CONSUMER_SECRET"),
- )
- tweet = os.getenv("TWEET")
- client.create_tweet(text=tweet)
- env:
- TWEET: |
- Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}!
+ client = tweepy.Client(
+ access_token=os.getenv("TWITTER_ACCESS_TOKEN"),
+ access_token_secret=os.getenv("TWITTER_ACCESS_TOKEN_SECRET"),
+ consumer_key=os.getenv("TWITTER_CONSUMER_KEY"),
+ consumer_secret=os.getenv("TWITTER_CONSUMER_SECRET"),
+ )
+ tweet = os.getenv("TWEET")
+ client.create_tweet(text=tweet)
+ env:
+ TWEET: |
+ Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}!
- Please see the changelog: ${{ github.event.release.html_url }}
- TWITTER_CONSUMER_KEY: ${{ secrets.TWITTER_CONSUMER_KEY }}
- TWITTER_CONSUMER_SECRET: ${{ secrets.TWITTER_CONSUMER_SECRET }}
- TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
- TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
+ Please see the changelog: ${{ github.event.release.html_url }}
+ TWITTER_CONSUMER_KEY: ${{ secrets.TWITTER_CONSUMER_KEY }}
+ TWITTER_CONSUMER_SECRET: ${{ secrets.TWITTER_CONSUMER_SECRET }}
+ TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
+ TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
- bsky-post:
- runs-on: ubuntu-latest
- steps:
- - uses: zentered/bluesky-post-action@v0.0.2
- with:
- post: |
- Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}!
+ bsky-post:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: zentered/bluesky-post-action@v0.1.0
+ with:
+ post: |
+ Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}!
- Please see the changelog: ${{ github.event.release.html_url }}
- env:
- BSKY_IDENTIFIER: ${{ secrets.BSKY_IDENTIFIER }}
- BSKY_PASSWORD: ${{ secrets.BSKY_PASSWORD }}
- #
+ Please see the changelog: ${{ github.event.release.html_url }}
+ env:
+ BSKY_IDENTIFIER: ${{ secrets.BSKY_IDENTIFIER }}
+ BSKY_PASSWORD: ${{ secrets.BSKY_PASSWORD }}
+ #
diff --git a/.gitpod.yml b/.gitpod.yml
index acf7269..01179e3 100644
--- a/.gitpod.yml
+++ b/.gitpod.yml
@@ -1,21 +1,21 @@
image: nfcore/gitpod:latest
tasks:
- - name: Update Nextflow and setup pre-commit
- command: |
- pre-commit install --install-hooks
- nextflow self-update
- - name: unset JAVA_TOOL_OPTIONS
- command: |
- unset JAVA_TOOL_OPTIONS
+ - name: Update Nextflow and setup pre-commit
+ command: |
+ pre-commit install --install-hooks
+ nextflow self-update
+ - name: unset JAVA_TOOL_OPTIONS
+ command: |
+ unset JAVA_TOOL_OPTIONS
vscode:
- extensions: # based on nf-core.nf-core-extensionpack
- - codezombiech.gitignore # Language support for .gitignore files
- # - cssho.vscode-svgviewer # SVG viewer
- - esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code
- - eamodio.gitlens # Quickly glimpse into whom, why, and when a line or code block was changed
- - EditorConfig.EditorConfig # override user/workspace settings with settings found in .editorconfig files
- - Gruntfuggly.todo-tree # Display TODO and FIXME in a tree view in the activity bar
- - mechatroner.rainbow-csv # Highlight columns in csv files in different colors
- # - nextflow.nextflow # Nextflow syntax highlighting
- - oderwat.indent-rainbow # Highlight indentation level
- - streetsidesoftware.code-spell-checker # Spelling checker for source code
+ extensions: # based on nf-core.nf-core-extensionpack
+ - codezombiech.gitignore # Language support for .gitignore files
+ # - cssho.vscode-svgviewer # SVG viewer
+ - esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code
+ - eamodio.gitlens # Quickly glimpse into whom, why, and when a line or code block was changed
+ - EditorConfig.EditorConfig # override user/workspace settings with settings found in .editorconfig files
+ - Gruntfuggly.todo-tree # Display TODO and FIXME in a tree view in the activity bar
+ - mechatroner.rainbow-csv # Highlight columns in csv files in different colors
+ # - nextflow.nextflow # Nextflow syntax highlighting
+ - oderwat.indent-rainbow # Highlight indentation level
+ - streetsidesoftware.code-spell-checker # Spelling checker for source code
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 0c31cdb..46518b1 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,5 +1,10 @@
repos:
- - repo: https://github.com/pre-commit/mirrors-prettier
- rev: "v2.7.1"
- hooks:
- - id: prettier
+ - repo: https://github.com/pre-commit/mirrors-prettier
+ rev: "v3.1.0"
+ hooks:
+ - id: prettier
+ - repo: https://github.com/editorconfig-checker/editorconfig-checker.python
+ rev: "2.7.3"
+ hooks:
+ - id: editorconfig-checker
+ alias: ec
diff --git a/CITATIONS.md b/CITATIONS.md
index 83fb40b..20047c2 100644
--- a/CITATIONS.md
+++ b/CITATIONS.md
@@ -10,28 +10,28 @@
## Pipeline tools
-- [corrmeta](https://doi.org/10.1142/9789814447973_0023)
+- [corrmeta](https://doi.org/10.1142/9789814447973_0023)
- > Province MA. Meta-analyses of correlated genomic scans. Genet Epidemiol. 2005;29:274,#137.
+ > Province MA. Meta-analyses of correlated genomic scans. Genet Epidemiol. 2005;29:274,#137.
## Software packaging/containerisation tools
-- [Anaconda](https://anaconda.com)
+- [Anaconda](https://anaconda.com)
- > Anaconda Software Distribution. Computer software. Vers. 2-2.4.0. Anaconda, Nov. 2016. Web.
+ > Anaconda Software Distribution. Computer software. Vers. 2-2.4.0. Anaconda, Nov. 2016. Web.
-- [Bioconda](https://pubmed.ncbi.nlm.nih.gov/29967506/)
+- [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.
+ > 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/)
+- [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.
+ > 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)
+- [Docker](https://dl.acm.org/doi/10.5555/2600239.2600241)
- > Merkel, D. (2014). Docker: lightweight linux containers for consistent development and deployment. Linux Journal, 2014(239), 2. doi: 10.5555/2600239.2600241.
+ > Merkel, D. (2014). Docker: lightweight linux containers for consistent development and deployment. Linux Journal, 2014(239), 2. doi: 10.5555/2600239.2600241.
-- [Singularity](https://pubmed.ncbi.nlm.nih.gov/28494014/)
+- [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.
+ > 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.
diff --git a/README.md b/README.md
index a0d4d3f..efbfe8d 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,9 @@
-# ![nf-core/omicsgenetraitassociation](docs/images/nf-core-omicsgenetraitassociation_logo_light.png#gh-light-mode-only) ![nf-core/omicsgenetraitassociation](docs/images/nf-core-omicsgenetraitassociation_logo_dark.png#gh-dark-mode-only)
-
+
+
+
[![GitHub Actions CI Status](https://github.com/nf-core/omicsgenetraitassociation/workflows/nf-core%20CI/badge.svg)](https://github.com/nf-core/omicsgenetraitassociation/actions?query=workflow%3A%22nf-core+CI%22)
[![GitHub Actions Linting Status](https://github.com/nf-core/omicsgenetraitassociation/workflows/nf-core%20linting/badge.svg)](https://github.com/nf-core/omicsgenetraitassociation/actions?query=workflow%3A%22nf-core+linting%22)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/omicsgenetraitassociation/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX)
@@ -67,12 +71,12 @@ nf-core/omicsgenetraitassociation was originally written by Woo Jung ([@wsjung](
Many thanks to others who have written parts of the pipeline or helped out along the way too, including (but not limited to):
-- [Chase Mateusiak](https://github.com/cmatKhan)
-- [Sandeep Acharya](https://github.com/sandeepacharya464)
-- [Edward Kang](https://github.com/edwardkang0925)
-- Lisa Liao
-- Michael Brent
-- Michael Province
+- [Chase Mateusiak](https://github.com/cmatKhan)
+- [Sandeep Acharya](https://github.com/sandeepacharya464)
+- [Edward Kang](https://github.com/edwardkang0925)
+- Lisa Liao
+- Michael Brent
+- Michael Province
## Contributions and Support
diff --git a/docs/output.md b/docs/output.md
index 7e70a72..1c05b93 100644
--- a/docs/output.md
+++ b/docs/output.md
@@ -37,17 +37,17 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d
1. Prepare gene-level trait-association P-values
-- [PASCAL](#pascal)
-- [MMAP](#mmap)
+- [PASCAL](#pascal)
+- [MMAP](#mmap)
2. Perform (correlated) Meta-Analysis
-- [CMA](#cma)
+- [CMA](#cma)
3. Enrichment Analyses
-- [MEA](#mea)
-- [GOEA](#mea)
+- [MEA](#mea)
+- [GOEA](#mea)
### PASCAL
@@ -56,9 +56,9 @@ This step aggregates GWAS summary statistics P-values to gene-level scores using
Output files
-- `pascal/`
- - `pascal_out.tsv`: PASCAL gene-level P-values
- - `manhattan_plot.png`: manhattan plot
+- `pascal/`
+ - `pascal_out.tsv`: PASCAL gene-level P-values
+ - `manhattan_plot.png`: manhattan plot
### MMAP
@@ -67,9 +67,9 @@ This step uses MMAP to perform linear mixed model analysis using gene expression
Output files
-- `mmap/`
- - `mmap/`: directory containing single-gene results
- - `parsed_output_mmap_results.csv`: parsed output file
+- `mmap/`
+ - `mmap/`: directory containing single-gene results
+ - `parsed_output_mmap_results.csv`: parsed output file
### CMA
@@ -78,9 +78,9 @@ This step performs correlated meta-analysis using the CMA package. It provides a
Output files
-- `cma/`
- - `CMA_meta.csv`: file with meta p-value
- - `tetrachor_sigma.txt`: tetrachoric correlations between input datasets
+- `cma/`
+ - `CMA_meta.csv`: file with meta p-value
+ - `tetrachor_sigma.txt`: tetrachoric correlations between input datasets
### MEA
@@ -89,19 +89,19 @@ This step performs module and gene ontology (GO) enrichment analyses. It provide
Output files
-- `mea/`
- - `master_summary_.csv`: master summary file with all enrichment analysis results
+- `mea/`
+ - `master_summary_.csv`: master summary file with all enrichment analysis results
### Pipeline information
Output files
-- `pipeline_info/`
- - Reports generated by Nextflow: `execution_report.html`, `execution_timeline.html`, `execution_trace.txt` and `pipeline_dag.dot`/`pipeline_dag.svg`.
- - Reports generated by the pipeline: `pipeline_report.html`, `pipeline_report.txt` and `software_versions.yml`. The `pipeline_report*` files will only be present if the `--email` / `--email_on_fail` parameter's are used when running the pipeline.
- - Reformatted samplesheet files used as input to the pipeline: `samplesheet.valid.csv`.
- - Parameters used by the pipeline run: `params.json`.
+- `pipeline_info/`
+ - Reports generated by Nextflow: `execution_report.html`, `execution_timeline.html`, `execution_trace.txt` and `pipeline_dag.dot`/`pipeline_dag.svg`.
+ - Reports generated by the pipeline: `pipeline_report.html`, `pipeline_report.txt` and `software_versions.yml`. The `pipeline_report*` files will only be present if the `--email` / `--email_on_fail` parameter's are used when running the pipeline.
+ - Reformatted samplesheet files used as input to the pipeline: `samplesheet.valid.csv`.
+ - Parameters used by the pipeline run: `params.json`.
diff --git a/docs/usage.md b/docs/usage.md
index 7dfe117..61a7b3f 100644
--- a/docs/usage.md
+++ b/docs/usage.md
@@ -1,5 +1,7 @@
# nf-core/omicsgenetraitassociation: Usage
+## :warning: Please read this documentation on the nf-core website: [https://nf-co.re/omicsgenetraitassociation/usage](https://nf-co.re/omicsgenetraitassociation/usage)
+
> _Documentation of pipeline parameters is generated automatically from the pipeline schema and can no longer be found in markdown files._
## Introduction
@@ -124,28 +126,28 @@ They are loaded in sequence, so later profiles can overwrite earlier profiles.
If `-profile` is not specified, the pipeline will run locally and expect all software to be installed and available on the `PATH`. This is _not_ recommended, since it can lead to different results on different machines dependent on the computer enviroment.
-- `test`
- - A profile with a complete configuration for automated testing
- - Includes links to test data so needs no other parameters
-- `docker`
- - A generic configuration profile to be used with [Docker](https://docker.com/)
-- `singularity`
- - A generic configuration profile to be used with [Singularity](https://sylabs.io/docs/)
-- `podman`
- - A generic configuration profile to be used with [Podman](https://podman.io/)
-- `shifter`
- - A generic configuration profile to be used with [Shifter](https://nersc.gitlab.io/development/shifter/how-to-use/)
-- `charliecloud`
- - A generic configuration profile to be used with [Charliecloud](https://hpc.github.io/charliecloud/)
-- `apptainer`
- - A generic configuration profile to be used with [Apptainer](https://apptainer.org/)
-- `conda`
- - A generic configuration profile to be used with [Conda](https://conda.io/docs/). Please only use Conda as a last resort i.e. when it's not possible to run the pipeline with Docker, Singularity, Podman, Shifter, Charliecloud, or Apptainer.
+- `test`
+ - A profile with a complete configuration for automated testing
+ - Includes links to test data so needs no other parameters
+- `docker`
+ - A generic configuration profile to be used with [Docker](https://docker.com/)
+- `singularity`
+ - A generic configuration profile to be used with [Singularity](https://sylabs.io/docs/)
+- `podman`
+ - A generic configuration profile to be used with [Podman](https://podman.io/)
+- `shifter`
+ - A generic configuration profile to be used with [Shifter](https://nersc.gitlab.io/development/shifter/how-to-use/)
+- `charliecloud`
+ - A generic configuration profile to be used with [Charliecloud](https://hpc.github.io/charliecloud/)
+- `apptainer`
+ - A generic configuration profile to be used with [Apptainer](https://apptainer.org/)
+- `conda`
+ - A generic configuration profile to be used with [Conda](https://conda.io/docs/). Please only use Conda as a last resort i.e. when it's not possible to run the pipeline with Docker, Singularity, Podman, Shifter, Charliecloud, or Apptainer.
**Omicsgenetraitassociation specific profiles**
-- `test`
- - A minimal test profile for the full workflow
+- `test`
+ - A minimal test profile for the full workflow
### `-resume`
diff --git a/lib/WorkflowMain.groovy b/lib/WorkflowMain.groovy
index 083d586..151032b 100755
--- a/lib/WorkflowMain.groovy
+++ b/lib/WorkflowMain.groovy
@@ -24,7 +24,7 @@ class WorkflowMain {
//
// Validate parameters and print summary to screen
//
- public static void initialise(workflow, params, log) {
+ public static void initialise(workflow, params, log, args) {
// Print workflow version and exit on --version
if (params.version) {
@@ -35,6 +35,8 @@ class WorkflowMain {
// Check that a -profile or Nextflow config has been provided to run the pipeline
NfcoreTemplate.checkConfigProvided(workflow, log)
+ // Check that the profile doesn't contain spaces and doesn't end with a trailing comma
+ checkProfile(workflow.profile, args, log)
// Check that conda channels are set-up correctly
if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) {
@@ -60,4 +62,16 @@ class WorkflowMain {
}
return null
}
+
+ //
+ // Exit pipeline if --profile contains spaces
+ //
+ private static void checkProfile(profile, args, log) {
+ if (profile.endsWith(',')) {
+ Nextflow.error "Profile cannot end with a trailing comma. Please remove the comma from the end of the profile string.\nHint: A common mistake is to provide multiple values to `-profile` separated by spaces. Please use commas to separate profiles instead,e.g., `-profile docker,test`."
+ }
+ if (args[0]) {
+ log.warn "nf-core pipelines do not accept positional arguments. The positional argument `${args[0]}` has been detected.\n Hint: A common mistake is to provide multiple values to `-profile` separated by spaces. Please use commas to separate profiles instead,e.g., `-profile docker,test`."
+ }
+ }
}
diff --git a/lib/WorkflowOmicsgenetraitassociation.groovy b/lib/WorkflowOmicsgenetraitassociation.groovy
index 1f8c6ee..0d380fa 100755
--- a/lib/WorkflowOmicsgenetraitassociation.groovy
+++ b/lib/WorkflowOmicsgenetraitassociation.groovy
@@ -11,7 +11,6 @@ class WorkflowOmicsgenetraitassociation {
// Check and validate parameters
//
public static void initialise(params, log) {
-
}
//
@@ -59,9 +58,12 @@ class WorkflowOmicsgenetraitassociation {
public static String toolBibliographyText(params) {
+ // TODO Optionally add bibliographic entries to this list.
// Can use ternary operators to dynamically construct based conditions, e.g. params["run_xyz"] ? "
Author (2023) Pub name, Journal, DOI
" : "",
// Uncomment function in methodsDescriptionText to render in MultiQC report
def reference_text = [
+ "
Ewels, P., Magnusson, M., Lundin, S., & Käller, M. (2016). MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics , 32(19), 3047–3048. doi: /10.1093/bioinformatics/btw354