mirror of
https://github.com/MillironX/taxprofiler.git
synced 2024-11-14 06:53:09 +00:00
Template update for nf-core/tools version 2.4
This commit is contained in:
parent
feeb8ba8dd
commit
a560492353
12 changed files with 136 additions and 131 deletions
3
.github/workflows/awsfulltest.yml
vendored
3
.github/workflows/awsfulltest.yml
vendored
|
@ -28,6 +28,3 @@ jobs:
|
|||
"outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/taxprofiler/results-${{ github.sha }}"
|
||||
}
|
||||
profiles: test_full,aws_tower
|
||||
nextflow_config: |
|
||||
process.errorStrategy = 'retry'
|
||||
process.maxRetries = 3
|
||||
|
|
3
.github/workflows/awstest.yml
vendored
3
.github/workflows/awstest.yml
vendored
|
@ -23,6 +23,3 @@ jobs:
|
|||
"outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/taxprofiler/results-test-${{ github.sha }}"
|
||||
}
|
||||
profiles: test,aws_tower
|
||||
nextflow_config: |
|
||||
process.errorStrategy = 'retry'
|
||||
process.maxRetries = 3
|
||||
|
|
3
.github/workflows/branch.yml
vendored
3
.github/workflows/branch.yml
vendored
|
@ -13,7 +13,7 @@ jobs:
|
|||
- name: Check PRs
|
||||
if: github.repository == 'nf-core/taxprofiler'
|
||||
run: |
|
||||
"{ [[ ${{github.event.pull_request.head.repo.full_name }} == nf-core/taxprofiler ]] && [[ $GITHUB_HEAD_REF = "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]]"
|
||||
{ [[ ${{github.event.pull_request.head.repo.full_name }} == nf-core/taxprofiler ]] && [[ $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
|
||||
|
@ -42,4 +42,3 @@ jobs:
|
|||
Thanks again for your contribution!
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
allow-repeats: false
|
||||
#
|
||||
|
|
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
|
@ -48,5 +48,3 @@ jobs:
|
|||
# Remember that you can parallelise this by using strategy.matrix
|
||||
run: |
|
||||
nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results
|
||||
|
||||
#
|
||||
|
|
55
.github/workflows/fix-linting.yml
vendored
Normal file
55
.github/workflows/fix-linting.yml
vendored
Normal file
|
@ -0,0 +1,55 @@
|
|||
name: Fix linting from a comment
|
||||
on:
|
||||
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/taxprofiler'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Use the @nf-core-bot token to check out so we can push later
|
||||
- uses: actions/checkout@v3
|
||||
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@v2
|
||||
|
||||
- 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 "::set-output name=result::pass"
|
||||
else
|
||||
echo "::set-output name=result::fail"
|
||||
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
|
4
.github/workflows/linting.yml
vendored
4
.github/workflows/linting.yml
vendored
|
@ -48,7 +48,7 @@ jobs:
|
|||
wget -qO- get.nextflow.io | bash
|
||||
sudo mv nextflow /usr/local/bin/
|
||||
|
||||
- uses: actions/setup-python@v1
|
||||
- uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: "3.6"
|
||||
architecture: "x64"
|
||||
|
@ -78,5 +78,3 @@ jobs:
|
|||
lint_log.txt
|
||||
lint_results.md
|
||||
PR_number.txt
|
||||
|
||||
#
|
||||
|
|
1
.github/workflows/linting_comment.yml
vendored
1
.github/workflows/linting_comment.yml
vendored
|
@ -26,4 +26,3 @@ jobs:
|
|||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
number: ${{ steps.pr_number.outputs.pr_number }}
|
||||
path: linting-logs/lint_results.md
|
||||
#
|
||||
|
|
9
.prettierignore
Normal file
9
.prettierignore
Normal file
|
@ -0,0 +1,9 @@
|
|||
email_template.html
|
||||
.nextflow*
|
||||
work/
|
||||
data/
|
||||
results/
|
||||
.DS_Store
|
||||
testing/
|
||||
testing*
|
||||
*.pyc
|
21
README.md
21
README.md
|
@ -1,18 +1,19 @@
|
|||
# ![nf-core/taxprofiler](docs/images/nf-core/taxprofiler_logo_light.png#gh-light-mode-only) ![nf-core/taxprofiler](docs/images/nf-core/taxprofiler_logo_dark.png#gh-dark-mode-only)
|
||||
# ![nf-core/taxprofiler](docs/images/nf-core-taxprofiler_logo_light.png#gh-light-mode-only) ![nf-core/taxprofiler](docs/images/nf-core-taxprofiler_logo_dark.png#gh-dark-mode-only)
|
||||
|
||||
[![GitHub Actions CI Status](https://github.com/nf-core/taxprofiler/workflows/nf-core%20CI/badge.svg)](https://github.com/nf-core/taxprofiler/actions?query=workflow%3A%22nf-core+CI%22)
|
||||
[![GitHub Actions Linting Status](https://github.com/nf-core/taxprofiler/workflows/nf-core%20linting/badge.svg)](https://github.com/nf-core/taxprofiler/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/taxprofiler/results)
|
||||
[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX)
|
||||
[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?logo=Amazon%20AWS)](https://nf-co.re/taxprofiler/results)
|
||||
[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8)](https://doi.org/10.5281/zenodo.XXXXXXX)
|
||||
|
||||
[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A521.10.3-23aa62.svg?labelColor=000000)](https://www.nextflow.io/)
|
||||
[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)
|
||||
[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)
|
||||
[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)
|
||||
[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A521.10.3-23aa62.svg)](https://www.nextflow.io/)
|
||||
[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?logo=anaconda)](https://docs.conda.io/en/latest/)
|
||||
[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?logo=docker)](https://www.docker.com/)
|
||||
[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg)](https://sylabs.io/docs/)
|
||||
[![Launch on Nextflow Tower](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Nextflow%20Tower-%234256e7)](https://tower.nf/launch?pipeline=https://github.com/nf-core/taxprofiler)
|
||||
|
||||
[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23taxprofiler-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/taxprofiler)
|
||||
[![Follow on Twitter](http://img.shields.io/badge/twitter-%40nf__core-1DA1F2?labelColor=000000&logo=twitter)](https://twitter.com/nf_core)
|
||||
[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)
|
||||
[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23taxprofiler-4A154B?logo=slack)](https://nfcore.slack.com/channels/taxprofiler)
|
||||
[![Follow on Twitter](http://img.shields.io/badge/twitter-%40nf__core-1DA1F2?logo=twitter)](https://twitter.com/nf_core)
|
||||
[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?logo=youtube)](https://www.youtube.com/c/nf-core)
|
||||
|
||||
## Introduction
|
||||
|
||||
|
|
|
@ -1,111 +1,53 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<meta name="description" content="nf-core/taxprofiler: Taxonomic profiling of shotgun metagenomic data" />
|
||||
<title>nf-core/taxprofiler Pipeline Report</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="font-family: Helvetica, Arial, sans-serif; padding: 30px; max-width: 800px; margin: 0 auto">
|
||||
<img src="cid:nfcorepipelinelogo" />
|
||||
<meta name="description" content="nf-core/taxprofiler: Taxonomic profiling of shotgun metagenomic data">
|
||||
<title>nf-core/taxprofiler Pipeline Report</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="font-family: Helvetica, Arial, sans-serif; padding: 30px; max-width: 800px; margin: 0 auto;">
|
||||
|
||||
<h1>nf-core/taxprofiler v${version}</h1>
|
||||
<h2>Run Name: $runName</h2>
|
||||
<img src="cid:nfcorepipelinelogo">
|
||||
|
||||
<% if (!success){ out << """
|
||||
<div
|
||||
style="
|
||||
color: #a94442;
|
||||
background-color: #f2dede;
|
||||
border-color: #ebccd1;
|
||||
padding: 15px;
|
||||
margin-bottom: 20px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 4px;
|
||||
"
|
||||
>
|
||||
<h4 style="margin-top: 0; color: inherit">nf-core/taxprofiler execution completed unsuccessfully!</h4>
|
||||
<h1>nf-core/taxprofiler v${version}</h1>
|
||||
<h2>Run Name: $runName</h2>
|
||||
|
||||
<% if (!success){
|
||||
out << """
|
||||
<div style="color: #a94442; background-color: #f2dede; border-color: #ebccd1; padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px;">
|
||||
<h4 style="margin-top:0; color: inherit;">nf-core/taxprofiler execution completed unsuccessfully!</h4>
|
||||
<p>The exit status of the task that caused the workflow execution to fail was: <code>$exitStatus</code>.</p>
|
||||
<p>The full error message was:</p>
|
||||
<pre style="white-space: pre-wrap; overflow: visible; margin-bottom: 0">${errorReport}</pre>
|
||||
</div>
|
||||
""" } else { out << """
|
||||
<div
|
||||
style="
|
||||
color: #3c763d;
|
||||
background-color: #dff0d8;
|
||||
border-color: #d6e9c6;
|
||||
padding: 15px;
|
||||
margin-bottom: 20px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 4px;
|
||||
"
|
||||
>
|
||||
nf-core/taxprofiler execution completed successfully!
|
||||
</div>
|
||||
""" } %>
|
||||
|
||||
<p>The workflow was completed at <strong>$dateComplete</strong> (duration: <strong>$duration</strong>)</p>
|
||||
<p>The command used to launch the workflow was as follows:</p>
|
||||
<pre
|
||||
style="
|
||||
white-space: pre-wrap;
|
||||
overflow: visible;
|
||||
background-color: #ededed;
|
||||
padding: 15px;
|
||||
border-radius: 4px;
|
||||
margin-bottom: 30px;
|
||||
"
|
||||
>
|
||||
$commandLine</pre
|
||||
>
|
||||
|
||||
<h3>Pipeline Configuration:</h3>
|
||||
<table
|
||||
style="
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
border-spacing: 0;
|
||||
border-collapse: collapse;
|
||||
border: 0;
|
||||
margin-bottom: 30px;
|
||||
"
|
||||
>
|
||||
<tbody style="border-bottom: 1px solid #ddd">
|
||||
<% out << summary.collect{ k,v -> "
|
||||
<tr>
|
||||
<th
|
||||
style="
|
||||
text-align: left;
|
||||
padding: 8px 0;
|
||||
line-height: 1.42857143;
|
||||
vertical-align: top;
|
||||
border-top: 1px solid #ddd;
|
||||
"
|
||||
>
|
||||
$k
|
||||
</th>
|
||||
<td
|
||||
style="
|
||||
text-align: left;
|
||||
padding: 8px;
|
||||
line-height: 1.42857143;
|
||||
vertical-align: top;
|
||||
border-top: 1px solid #ddd;
|
||||
"
|
||||
>
|
||||
<pre style="white-space: pre-wrap; overflow: visible">$v</pre>
|
||||
</td>
|
||||
</tr>
|
||||
" }.join("\n") %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>nf-core/taxprofiler</p>
|
||||
<p><a href="https://github.com/nf-core/taxprofiler">https://github.com/nf-core/taxprofiler</a></p>
|
||||
<pre style="white-space: pre-wrap; overflow: visible; margin-bottom: 0;">${errorReport}</pre>
|
||||
</div>
|
||||
</body>
|
||||
"""
|
||||
} else {
|
||||
out << """
|
||||
<div style="color: #3c763d; background-color: #dff0d8; border-color: #d6e9c6; padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px;">
|
||||
nf-core/taxprofiler execution completed successfully!
|
||||
</div>
|
||||
"""
|
||||
}
|
||||
%>
|
||||
|
||||
<p>The workflow was completed at <strong>$dateComplete</strong> (duration: <strong>$duration</strong>)</p>
|
||||
<p>The command used to launch the workflow was as follows:</p>
|
||||
<pre style="white-space: pre-wrap; overflow: visible; background-color: #ededed; padding: 15px; border-radius: 4px; margin-bottom:30px;">$commandLine</pre>
|
||||
|
||||
<h3>Pipeline Configuration:</h3>
|
||||
<table style="width:100%; max-width:100%; border-spacing: 0; border-collapse: collapse; border:0; margin-bottom: 30px;">
|
||||
<tbody style="border-bottom: 1px solid #ddd;">
|
||||
<% out << summary.collect{ k,v -> "<tr><th style='text-align:left; padding: 8px 0; line-height: 1.42857143; vertical-align: top; border-top: 1px solid #ddd;'>$k</th><td style='text-align:left; padding: 8px; line-height: 1.42857143; vertical-align: top; border-top: 1px solid #ddd;'><pre style='white-space: pre-wrap; overflow: visible;'>$v</pre></td></tr>" }.join("\n") %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>nf-core/taxprofiler</p>
|
||||
<p><a href="https://github.com/nf-core/taxprofiler">https://github.com/nf-core/taxprofiler</a></p>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -98,7 +98,7 @@ class RowChecker:
|
|||
if row[self._first_col] and row[self._second_col]:
|
||||
row[self._single_col] = False
|
||||
assert (
|
||||
Path(row[self._first_col]).suffixes == Path(row[self._second_col]).suffixes
|
||||
Path(row[self._first_col]).suffixes[-2:] == Path(row[self._second_col]).suffixes[-2:]
|
||||
), "FASTQ pairs must have the same file extensions."
|
||||
else:
|
||||
row[self._single_col] = True
|
||||
|
@ -129,6 +129,16 @@ class RowChecker:
|
|||
row[self._sample_col] = f"{sample}_T{seen[sample]}"
|
||||
|
||||
|
||||
def read_head(handle, num_lines=10):
|
||||
"""Read the specified number of lines from the current position in the file."""
|
||||
lines = []
|
||||
for idx, line in enumerate(handle):
|
||||
if idx == num_lines:
|
||||
break
|
||||
lines.append(line)
|
||||
return "".join(lines)
|
||||
|
||||
|
||||
def sniff_format(handle):
|
||||
"""
|
||||
Detect the tabular format.
|
||||
|
@ -144,13 +154,13 @@ def sniff_format(handle):
|
|||
https://docs.python.org/3/glossary.html#term-text-file
|
||||
|
||||
"""
|
||||
peek = handle.read(2048)
|
||||
peek = read_head(handle)
|
||||
handle.seek(0)
|
||||
sniffer = csv.Sniffer()
|
||||
if not sniffer.has_header(peek):
|
||||
logger.critical(f"The given sample sheet does not appear to contain a header.")
|
||||
sys.exit(1)
|
||||
dialect = sniffer.sniff(peek)
|
||||
handle.seek(0)
|
||||
return dialect
|
||||
|
||||
|
||||
|
|
|
@ -159,7 +159,7 @@ trace {
|
|||
}
|
||||
dag {
|
||||
enabled = true
|
||||
file = "${params.tracedir}/pipeline_dag_${trace_timestamp}.svg"
|
||||
file = "${params.tracedir}/pipeline_dag_${trace_timestamp}.html"
|
||||
}
|
||||
|
||||
manifest {
|
||||
|
|
Loading…
Reference in a new issue