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

Release v2.0.0 #45

Merged
merged 38 commits into from
Feb 5, 2025
Merged
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
caaa3b3
Template update for nf-core/tools version 3.1.2
nf-core-bot Jan 20, 2025
53e3569
Merge branch 'dev' into nf-core-template-merge-3.1.2
charles-plessy Jan 21, 2025
448340d
Do not output the LAST database files, closes #36.
charles-plessy Jan 16, 2025
4b9f8b8
Do not output the _many-to-one_ alignment except in `--m2m` mode.
charles-plessy Jan 16, 2025
10c2d2a
Enforce strictness in seqtk cutn, fixes #18
charles-plessy Jan 16, 2025
5d09fc1
Allow all seeds, closes #34
charles-plessy Jan 16, 2025
cff62c5
Ignore errors probably caused by no alignments found
charles-plessy Jan 23, 2025
d0377b3
Update all modules.
charles-plessy Jan 23, 2025
6cd6052
Fix subworkflows to accept a fixed parameter file. Closes #22
charles-plessy Jan 23, 2025
11fd73f
Fix CI with Nextflow 24.12.0-edge
charles-plessy Jan 23, 2025
997effa
New option `export_aln_to` for people who need different formats than…
charles-plessy Jan 23, 2025
d83862e
Lint fixes. Thanks Arthur for the hint on Slack!
charles-plessy Jan 24, 2025
4a72cd0
Remove Debian-style tilde from the version number
charles-plessy Jan 24, 2025
bb21e41
Merge pull request #37 from nf-core/nf-core-template-merge-3.1.2
charles-plessy Jan 24, 2025
7f4b00c
Merge branch 'dev' into milestone_2.0.0
charles-plessy Jan 24, 2025
f32de98
Factorise dotplot options and group dotplot config sections
charles-plessy Jan 24, 2025
b969767
pre-commit run --all-files
charles-plessy Jan 24, 2025
97103fd
Current changelog
charles-plessy Jan 24, 2025
3abb4df
Update tubemap to version 2.0
charles-plessy Jan 27, 2025
776a06f
Documentation updates
charles-plessy Jan 27, 2025
eba8c2f
Merge branch 'milestone_2.0.0' of github.com:nf-core/pairgenomealign …
charles-plessy Jan 27, 2025
cd91bad
Prepare release 2.0.0
charles-plessy Jan 27, 2025
75da46d
Template update for nf-core/tools version 3.2.0
nf-core-bot Jan 27, 2025
d7a6808
Delete modules/nf-core/fastqc/main.nf
charles-plessy Jan 27, 2025
c764bdb
Merge branch 'dev' into nf-core-template-merge-3.2.0
charles-plessy Jan 28, 2025
01a14cd
Merge pull request #40 from nf-core/nf-core-template-merge-3.2.0
charles-plessy Jan 28, 2025
976b137
Merge branch 'dev' into milestone_2.0.0
charles-plessy Jan 28, 2025
2a65161
Merge pull request #41 from nf-core/master
charles-plessy Jan 28, 2025
700586d
Brush up changelog.
charles-plessy Jan 30, 2025
90b6b43
Update nextflow_schema.json
charles-plessy Jan 30, 2025
5e22a3a
Update nextflow_schema.json
charles-plessy Jan 30, 2025
d71189e
Merge branch 'milestone_2.0.0' of github.com:nf-core/pairgenomealign …
charles-plessy Jan 30, 2025
5ecdcbd
Mention compression algorithm.
charles-plessy Jan 30, 2025
8cfa80b
Restore unicode quotes.
charles-plessy Jan 30, 2025
894e584
Collect all last/ submodules versions.
charles-plessy Jan 30, 2025
a09c4d4
Merge pull request #39 from nf-core/milestone_2.0.0
charles-plessy Jan 30, 2025
eba63d0
Mention upgrade to nf-core template 3.2.0
charles-plessy Feb 1, 2025
19637a8
Fix date in CHANGELOG.md
charles-plessy Feb 5, 2025
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
4 changes: 4 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -31,3 +31,7 @@ indent_size = unset
# ignore python and markdown
[*.{py,md}]
indent_style = unset

# ignore ro-crate metadata files
[**/ro-crate-metadata.json]
insert_final_newline = unset
1 change: 0 additions & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -9,7 +9,6 @@ body:

- [nf-core website: troubleshooting](https://nf-co.re/usage/troubleshooting)
- [nf-core/pairgenomealign pipeline documentation](https://nf-co.re/pairgenomealign/usage)

- type: textarea
id: description
attributes:
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -46,6 +46,8 @@ jobs:
steps:
- name: Check out pipeline code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
fetch-depth: 0

- name: Set up Nextflow
uses: nf-core/setup-nextflow@v2
51 changes: 32 additions & 19 deletions .github/workflows/download_pipeline.yml
Original file line number Diff line number Diff line change
@@ -28,8 +28,23 @@ env:
NXF_ANSI_LOG: false

jobs:
configure:
runs-on: ubuntu-latest
outputs:
REPO_LOWERCASE: ${{ steps.get_repo_properties.outputs.REPO_LOWERCASE }}
REPOTITLE_LOWERCASE: ${{ steps.get_repo_properties.outputs.REPOTITLE_LOWERCASE }}
REPO_BRANCH: ${{ steps.get_repo_properties.outputs.REPO_BRANCH }}
steps:
- name: Get the repository name and current branch
id: get_repo_properties
run: |
echo "REPO_LOWERCASE=${GITHUB_REPOSITORY,,}" >> "$GITHUB_OUTPUT"
echo "REPOTITLE_LOWERCASE=$(basename ${GITHUB_REPOSITORY,,})" >> "$GITHUB_OUTPUT"
echo "REPO_BRANCH=${{ github.event.inputs.testbranch || 'dev' }}" >> "$GITHUB_OUTPUT"

download:
runs-on: ubuntu-latest
needs: configure
steps:
- name: Install Nextflow
uses: nf-core/setup-nextflow@v2
@@ -52,12 +67,6 @@ jobs:
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.event.inputs.testbranch || 'dev' }}" >> ${GITHUB_ENV}

- name: Make a cache directory for the container images
run: |
mkdir -p ./singularity_container_images
@@ -66,55 +75,59 @@ jobs:
env:
NXF_SINGULARITY_CACHEDIR: ./singularity_container_images
run: |
nf-core pipelines download ${{ env.REPO_LOWERCASE }} \
--revision ${{ env.REPO_BRANCH }} \
--outdir ./${{ env.REPOTITLE_LOWERCASE }} \
nf-core pipelines download ${{ needs.configure.outputs.REPO_LOWERCASE }} \
--revision ${{ needs.configure.outputs.REPO_BRANCH }} \
--outdir ./${{ needs.configure.outputs.REPOTITLE_LOWERCASE }} \
--compress "none" \
--container-system 'singularity' \
--container-library "quay.io" -l "docker.io" -l "community.wave.seqera.io/library/" \
--container-cache-utilisation 'amend' \
--download-configuration 'yes'

- name: Inspect download
run: tree ./${{ env.REPOTITLE_LOWERCASE }}
run: tree ./${{ needs.configure.outputs.REPOTITLE_LOWERCASE }}

- name: Inspect container images
run: tree ./singularity_container_images | tee ./container_initial

- name: Count the downloaded number of container images
id: count_initial
run: |
image_count=$(ls -1 ./singularity_container_images | wc -l | xargs)
echo "Initial container image count: $image_count"
echo "IMAGE_COUNT_INITIAL=$image_count" >> ${GITHUB_ENV}
echo "IMAGE_COUNT_INITIAL=$image_count" >> "$GITHUB_OUTPUT"

- name: Run the downloaded pipeline (stub)
id: stub_run_pipeline
continue-on-error: true
env:
NXF_SINGULARITY_CACHEDIR: ./singularity_container_images
NXF_SINGULARITY_HOME_MOUNT: true
run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results
run: nextflow run ./${{needs.configure.outputs.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ needs.configure.outputs.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results
- name: Run the downloaded pipeline (stub run not supported)
id: run_pipeline
if: ${{ job.steps.stub_run_pipeline.status == failure() }}
if: ${{ steps.stub_run_pipeline.outcome == 'failure' }}
env:
NXF_SINGULARITY_CACHEDIR: ./singularity_container_images
NXF_SINGULARITY_HOME_MOUNT: true
run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -profile test,singularity --outdir ./results
run: nextflow run ./${{ needs.configure.outputs.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ needs.configure.outputs.REPO_BRANCH }}) -profile test,singularity --outdir ./results

- name: Count the downloaded number of container images
id: count_afterwards
run: |
image_count=$(ls -1 ./singularity_container_images | wc -l | xargs)
echo "Post-pipeline run container image count: $image_count"
echo "IMAGE_COUNT_AFTER=$image_count" >> ${GITHUB_ENV}
echo "IMAGE_COUNT_AFTER=$image_count" >> "$GITHUB_OUTPUT"

- name: Compare container image counts
run: |
if [ "${{ env.IMAGE_COUNT_INITIAL }}" -ne "${{ env.IMAGE_COUNT_AFTER }}" ]; then
initial_count=${{ env.IMAGE_COUNT_INITIAL }}
final_count=${{ env.IMAGE_COUNT_AFTER }}
if [ "${{ steps.count_initial.outputs.IMAGE_COUNT_INITIAL }}" -ne "${{ steps.count_afterwards.outputs.IMAGE_COUNT_AFTER }}" ]; then
initial_count=${{ steps.count_initial.outputs.IMAGE_COUNT_INITIAL }}
final_count=${{ steps.count_afterwards.outputs.IMAGE_COUNT_AFTER }}
difference=$((final_count - initial_count))
echo "$difference additional container images were \n downloaded at runtime . The pipeline has no support for offline runs!"
tree ./singularity_container_images
tree ./singularity_container_images > ./container_afterwards
diff ./container_initial ./container_afterwards
exit 1
else
echo "The pipeline can be downloaded successfully!"
2 changes: 1 addition & 1 deletion .github/workflows/linting_comment.yml
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download lint results
uses: dawidd6/action-download-artifact@80620a5d27ce0ae443b965134db88467fc607b43 # v7
uses: dawidd6/action-download-artifact@20319c5641d495c8a52e688b7dc5fada6c3a9fbc # v8
with:
workflow: linting.yml
workflow_conclusion: completed
33 changes: 0 additions & 33 deletions .github/workflows/release-announcements.yml
Original file line number Diff line number Diff line change
@@ -27,39 +27,6 @@ jobs:

${{ steps.get_topics.outputs.topics }} #nfcore #openscience #nextflow #bioinformatics

send-tweet:
runs-on: ubuntu-latest

steps:
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # 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 }}!

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:
2 changes: 1 addition & 1 deletion .nf-core.yml
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@ lint:
- assets/nf-core-pairgenomealign_logo_light.png
- docs/images/nf-core-pairgenomealign_logo_light.png
- docs/images/nf-core-pairgenomealign_logo_dark.png
nf_core_version: 3.1.0
nf_core_version: 3.2.0
repository_type: pipeline
template:
author: charles-plessy
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@ repos:
- prettier@3.2.5

- repo: https://github.com/editorconfig-checker/editorconfig-checker.python
rev: "3.0.3"
rev: "3.1.2"
hooks:
- id: editorconfig-checker
alias: ec
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -10,3 +10,4 @@ testing/
testing*
*.pyc
bin/
ro-crate-metadata.json
59 changes: 56 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -3,14 +3,67 @@
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.0.0](https://github.com/nf-core/pairgenomealign/releases/tag/2.0.0) "Naga imo" - [February 5th, 2025]

### `Breaking changes`

- The LAST software was updated and it has new defaults for some of its
parameters. The alignments ran with this pipeline will not be identical to
the ones from older versions.

### `Added`

- The `alignment/lastdb` directory is not output anymore. It consumed space,
is not usually needed for downstream analysis, and can be re-computed
identically if needed.
- The _many-to-one_ alignment file is not output anymore by default, to save
space. To keep this file, you can run the pipeline in `many-to-many` mode
with the `--m2m` parameter.
- The `--seed` parameter allows for all the existing values in the `lastdb`
program.
- Errors caused by absence of alignments at training or plotting steps
are now ignored.
- New parameter `--export_aln_to` that creates additional files containing
the alignments in a different format such as Axt, Chain, GFF or SAM.

### `Fixed`

- Incorrect detection of regions with 10 or more `N`s was corrected ([#18](https://github.com/nf-core/pairgenomealign/issues/18)).
- The `--lastal_params` now works as intended instead of being ignored ([#22](https://github.com/nf-core/pairgenomealign/issues/22)).
- The _workflow summary_ is now properly sorted at the end of the MultiQC report ([#32](https://github.com/nf-core/pairgenomealign/issues/32)).
- Conforms to nf-core template version 3.2.0 ([#40](https://github.com/nf-core/pairgenomealign/pull/40)).

### `Parameters`

| Old parameter | New parameter |
| ------------- | ----------------- |
| | `--export_aln_to` |

### `Dependencies`

| Dependency | Old version | New version |
| ---------- | ----------- | ----------- |
| `LAST` | 1542 | 1608 |
| `MultiQC` | 1.25.1 | 1.27 |

## [v1.1.1](https://github.com/nf-core/pairgenomealign/releases/tag/1.1.1) "Kani nabe" - [December 17th, 2024]

This release brings the pipeline to the standards of Nextflow 24.10.1 and
nf-core 3.1.0. No changes were made to the alignment process.
### `Fixed`

- This release brings the pipeline to the standards of Nextflow 24.10.1 and
nf-core 3.1.0.

## [v1.1.0](https://github.com/nf-core/pairgenomealign/releases/tag/1.1.0) "Nattou maki" - [September 27th, 2024]

Added a new `softmask` parameter, to optionally keep original softmasking.
### `Added`

- Added a new `softmask` parameter, to optionally keep original softmasking.

### `Parameters`

| Old parameter | New parameter |
| ------------- | ------------- |
| | `--softmask` |

## [v1.0.0](https://github.com/nf-core/pairgenomealign/releases/tag/1.0.0) "Sweet potato" - [August 27th, 2024]

2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) charles-plessy
Copyright (c) The nf-core/pairgenomealign team

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -23,6 +23,13 @@

![Tubemap workflow summary](docs/images/pairgenomealign-tubemap.png "Tubemap workflow summary")

The main steps of the pipeline are:

1. Genome QC ([`assembly-scan`](https://github.com/rpetit3/assembly-scan)).
2. Genome indexing ([`lastdb`](https://gitlab.com/mcfrith/last/-/blob/main/doc/lastdb.rst)).
3. Genome pairwise alignments ([`lastal`](https://gitlab.com/mcfrith/last/-/blob/main/doc/lastal.rst)).
4. Alignment plotting ([`last-dotplot`](https://gitlab.com/mcfrith/last/-/blob/main/doc/last-dotplot.rst)).

The pipeline can generate four kinds of outputs, called _many-to-many_, _many-to-one_, _one-to-many_ and _one-to-one_, depending on whether sequences of one genome are allowed match the other genome multiple times or not.

These alignments are output in [MAF](https://genome.ucsc.edu/FAQ/FAQformat.html#format5) format, and optional line plot representations are output in PNG format.
4 changes: 2 additions & 2 deletions assets/multiqc_config.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
report_comment: >
This report has been generated by the <a href="https://github.com/nf-core/pairgenomealign/releases/tag/1.1.1"
This report has been generated by the <a href="https://github.com/nf-core/pairgenomealign/releases/tag/2.0.0"
target="_blank">nf-core/pairgenomealign</a> analysis pipeline. For information about
how to interpret these results, please see the <a href="https://nf-co.re/pairgenomealign/1.1.1/docs/output"
how to interpret these results, please see the <a href="https://nf-co.re/pairgenomealign/2.0.0/docs/output"
target="_blank">documentation</a>.
report_section_order:
"nf-core-pairgenomealign-methods-description":
32 changes: 22 additions & 10 deletions conf/modules.config
Original file line number Diff line number Diff line change
@@ -19,11 +19,11 @@ process {
]

withName: CUTN_TARGET {
ext.args = { "-n 10" }
ext.args = { "-n 10 -p 100000" }
}

withName: CUTN_QUERY {
ext.args = { "-n 10" }
ext.args = { "-n 10 -p 100000" }
}

withName: 'ALIGNMENT_LASTDB' {
@@ -33,18 +33,16 @@ process {
// -c: soft-mask lowercase letters
// -S2: index both strands
ext.args = { "${params.softmask=="tantan" ? '-R01' : '-R11'} -c -u${params.seed} -S2" }
publishDir = [
enabled: false
]
}

withName: 'ALIGNMENT_SPLIT_O2M' {
ext.prefix = { "${meta.id}.o2m_aln" }
ext.args = { "--reverse -m${params.last_split_mismap}" }
}

withName: 'ALIGNMENT_DOTPLOT_O2M' {
ext.prefix = { "${meta.id}.o2m_plt" }
ext.args = { "--rot2=h --sort2=3 --strands2=1 ${params.dotplot_options}" }
}

withName: 'ALIGNMENT_SPLIT_M2O' {
ext.prefix = { "${meta.id}.m2o_aln" }
ext.args = { "-m${params.last_split_mismap}" }
@@ -56,32 +54,46 @@ process {
}

withName: 'ALIGNMENT_TRAIN' {
// If the training step fails, it is likely that there are no
// alignments to be found with the selected seed. Ignore and therefore
// skip alignments instead of crashing the pipeline.
errorStrategy = { task.exitStatus in (130..145) ? 'retry' : task.exitStatus == 1 ? 'ignore' : 'finish' }
ext.args = { "--revsym ${params.lastal_args}" }
}

withName: 'ALIGNMENT_LASTAL_M2O' {
ext.prefix = { "${meta.id}.m2o_aln" }
ext.args = { "--split-f=MAF+ ${params.lastal_args} ${params.lastal_extr_args}" }
publishDir = [
enabled: false
]
}

withName: 'ALIGNMENT_LASTAL_M2M' {
ext.prefix = { "${meta.id}.m2m_aln" }
ext.args = { "${params.lastal_args} ${params.lastal_extr_args}" }
}

withName: 'LAST_DOTPLOT' {
// The number one cause of failure is absence of alignments.
errorStrategy = { task.exitStatus in (130..145) ? 'retry' : task.exitStatus == 1 ? 'ignore' : 'finish' }
ext.args = { "--rot2=h --sort2=3 --strands2=1 ${params.dotplot_options}" }
}

withName: 'ALIGNMENT_DOTPLOT_O2O' {
ext.prefix = { "${meta.id}.o2o_plt" }
ext.args = { "--rot2=h --sort2=3 --strands2=1 ${params.dotplot_options}" }
}

withName: 'ALIGNMENT_DOTPLOT_M2O' {
ext.prefix = { "${meta.id}.m2o_plt" }
ext.args = { "--rot2=h --sort2=3 --strands2=1 ${params.dotplot_options}" }
}

withName: 'ALIGNMENT_DOTPLOT_O2M' {
ext.prefix = { "${meta.id}.o2m_plt" }
}

withName: 'ALIGNMENT_DOTPLOT_M2M' {
ext.prefix = { "${meta.id}.m2m_plt" }
ext.args = { "--rot2=h --sort2=3 --strands2=1 ${params.dotplot_options}" }
}

withName: 'MULTIQC' {
Binary file modified docs/images/pairgenomealign-tubemap.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading