Skip to content

feat(diann): add --strip_unknown_mods to recover hydroxyproline / non-standard PTMs #389

feat(diann): add --strip_unknown_mods to recover hydroxyproline / non-standard PTMs

feat(diann): add --strip_unknown_mods to recover hydroxyproline / non-standard PTMs #389

Workflow file for this run

name: nf-core extended CI
# Job dependency chain:
# test-default (1.8.1, fast, public) → test-latest (2.2.0, all features)
# → test-singularity (1.8.1, Singularity)
# If test-default fails, downstream jobs are skipped to save resources.
on:
push:
branches:
- dev
- master
pull_request:
release:
types: [published]
workflow_dispatch:
env:
NXF_ANSI_LOG: false
NXF_SINGULARITY_CACHEDIR: ${{ github.workspace }}/.singularity
NXF_SINGULARITY_LIBRARYDIR: ${{ github.workspace }}/.singularity
concurrency:
group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}"
cancel-in-progress: true
jobs:
# ──────────────────────────────────────────────────────────────────────────
# Stage 1: Default tests — DIA-NN 1.8.1 (public, fast, no auth)
# Must pass before any other job runs.
# ──────────────────────────────────────────────────────────────────────────
test-default:
name: "Default [${{ matrix.test_profile }}] DIA-NN=1.8.1 NXF=${{ matrix.NXF_VER }}"
if: ${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'bigbio/quantmsdiann') }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
NXF_VER: ["25.10.4", "latest-everything"]
test_profile: ["test_dia", "test_dia_dotd"]
env:
NXF_ANSI_LOG: false
CAPSULE_LOG: none
TEST_PROFILE: ${{ matrix.test_profile }}
EXEC_PROFILE: docker
steps:
- name: Checkout repository
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
- name: Set up Java 17
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "17"
- name: Set up Nextflow
uses: nf-core/setup-nextflow@v2
with:
version: "${{ matrix.NXF_VER }}"
- name: Disk space cleanup
uses: jlumbroso/free-disk-space@v1.3.1
- name: Run pipeline with test data
if: github.ref != 'refs/heads/master' && github.event.pull_request.base.ref != 'master'
run: |
nextflow run ${GITHUB_WORKSPACE} -profile $TEST_PROFILE,$EXEC_PROFILE,dev --outdir ${TEST_PROFILE}_${EXEC_PROFILE}_results
- name: Run pipeline with test data (master branch)
if: github.ref == 'refs/heads/master' || github.event.pull_request.base.ref == 'master'
run: |
nextflow run ${GITHUB_WORKSPACE} -profile $TEST_PROFILE,$EXEC_PROFILE --outdir ${TEST_PROFILE}_${EXEC_PROFILE}_results
- name: Gather failed logs
if: failure() || cancelled()
run: |
mkdir -p failed_logs
if [ -f "${TEST_PROFILE}_${EXEC_PROFILE}_results/pipeline_info/execution_trace.txt" ]; then
failed=$(grep "FAILED" ${TEST_PROFILE}_${EXEC_PROFILE}_results/pipeline_info/execution_trace.txt | cut -f 2)
while read -r line ; do cp $(ls work/${line}*/*.log) failed_logs/ || true ; done <<< "$failed"
fi
- name: Set timestamp
if: always()
run: echo "TS=$(date +%s)" >> $GITHUB_ENV
- uses: actions/upload-artifact@v4
if: failure() || cancelled()
name: Upload failed logs
with:
name: failed_logs_${{ matrix.test_profile }}_${{ matrix.NXF_VER }}_${{ env.TS }}
include-hidden-files: true
path: failed_logs
overwrite: false
if-no-files-found: warn
- uses: actions/upload-artifact@v4
if: always()
name: Upload log
with:
name: nextflow_${{ matrix.test_profile }}_${{ matrix.NXF_VER }}_${{ env.TS }}.log
include-hidden-files: true
path: .nextflow.log
overwrite: false
if-no-files-found: warn
# ──────────────────────────────────────────────────────────────────────────
# Stage 2a: Latest DIA-NN (2.2.0) — all features
# Only runs after test-default passes.
# ──────────────────────────────────────────────────────────────────────────
test-latest:
name: "Latest [${{ matrix.test_profile }}] DIA-NN=2.2.0"
needs: test-default
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
test_profile:
[
"test_latest_dia",
"test_dia_quantums",
"test_dia_parquet",
"test_dia_qpx",
"test_dda",
"test_dia_skip_preanalysis",
]
env:
NXF_ANSI_LOG: false
CAPSULE_LOG: none
TEST_PROFILE: ${{ matrix.test_profile }}
EXEC_PROFILE: docker
steps:
- name: Checkout repository
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
- name: Set up Java 17
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "17"
- name: Set up Nextflow
uses: nf-core/setup-nextflow@v2
with:
version: "25.10.4"
- name: Log in to GitHub Container Registry
env:
GHCR_TOKEN: ${{ secrets.GHCR_TOKEN }}
if: env.GHCR_TOKEN != ''
run: |
echo "${{ secrets.GHCR_TOKEN }}" | docker login ghcr.io -u ${{ secrets.GHCR_USERNAME }} --password-stdin
- name: Disk space cleanup
uses: jlumbroso/free-disk-space@v1.3.1
- name: Run pipeline with test data
if: github.ref != 'refs/heads/master' && github.event.pull_request.base.ref != 'master'
run: |
nextflow run ${GITHUB_WORKSPACE} -profile $TEST_PROFILE,$EXEC_PROFILE,dev --outdir ${TEST_PROFILE}_${EXEC_PROFILE}_results
- name: Run pipeline with test data (master branch)
if: github.ref == 'refs/heads/master' || github.event.pull_request.base.ref == 'master'
run: |
nextflow run ${GITHUB_WORKSPACE} -profile $TEST_PROFILE,$EXEC_PROFILE --outdir ${TEST_PROFILE}_${EXEC_PROFILE}_results
- name: Gather failed logs
if: failure() || cancelled()
run: |
mkdir -p failed_logs
if [ -f "${TEST_PROFILE}_${EXEC_PROFILE}_results/pipeline_info/execution_trace.txt" ]; then
failed=$(grep "FAILED" ${TEST_PROFILE}_${EXEC_PROFILE}_results/pipeline_info/execution_trace.txt | cut -f 2)
while read -r line ; do cp $(ls work/${line}*/*.log) failed_logs/ || true ; done <<< "$failed"
fi
- name: Set timestamp
if: always()
run: echo "TS=$(date +%s)" >> $GITHUB_ENV
- uses: actions/upload-artifact@v4
if: failure() || cancelled()
name: Upload failed logs
with:
name: failed_logs_latest_${{ matrix.test_profile }}_${{ env.TS }}
include-hidden-files: true
path: failed_logs
overwrite: false
if-no-files-found: warn
- uses: actions/upload-artifact@v4
if: always()
name: Upload log
with:
name: nextflow_latest_${{ matrix.test_profile }}_${{ env.TS }}.log
include-hidden-files: true
path: .nextflow.log
overwrite: false
if-no-files-found: warn
# ──────────────────────────────────────────────────────────────────────────
# Stage 2b: Singularity — default tests only (public containers)
# Only runs after test-default passes.
# ──────────────────────────────────────────────────────────────────────────
test-singularity:
name: "Singularity [${{ matrix.test_profile }}] DIA-NN=1.8.1 NXF=${{ matrix.NXF_VER }}"
needs: test-default
if: ${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'bigbio/quantmsdiann') }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
NXF_VER: ["25.10.4", "latest-everything"]
test_profile: ["test_dia", "test_dia_dotd"]
env:
NXF_ANSI_LOG: false
CAPSULE_LOG: none
TEST_PROFILE: ${{ matrix.test_profile }}
EXEC_PROFILE: singularity
steps:
- name: Check out pipeline code
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4
with:
fetch-depth: 0
- uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "17"
- name: Set up Nextflow
uses: nf-core/setup-nextflow@v2
with:
version: "${{ matrix.NXF_VER }}"
- name: Set up Singularity
run: |
mkdir -p $NXF_SINGULARITY_CACHEDIR
mkdir -p $NXF_SINGULARITY_LIBRARYDIR
- name: Install Singularity with defaults
uses: singularityhub/install-singularity@main
- name: Disk space cleanup
uses: jlumbroso/free-disk-space@v1.3.1
- name: Run pipeline with test data
if: github.ref != 'refs/heads/master' && github.event.pull_request.base.ref != 'master'
run: |
nextflow run ${GITHUB_WORKSPACE} -profile $TEST_PROFILE,$EXEC_PROFILE,dev --outdir ${TEST_PROFILE}_${EXEC_PROFILE}_results
- name: Run pipeline with test data (master branch)
if: github.ref == 'refs/heads/master' || github.event.pull_request.base.ref == 'master'
run: |
nextflow run ${GITHUB_WORKSPACE} -profile $TEST_PROFILE,$EXEC_PROFILE --outdir ${TEST_PROFILE}_${EXEC_PROFILE}_results
- name: Gather failed logs
if: failure() || cancelled()
run: |
mkdir -p failed_logs
if [ -f "${TEST_PROFILE}_${EXEC_PROFILE}_results/pipeline_info/execution_trace.txt" ]; then
failed=$(grep "FAILED" ${TEST_PROFILE}_${EXEC_PROFILE}_results/pipeline_info/execution_trace.txt | cut -f 2)
while read -r line ; do cp $(ls work/${line}*/*.log) failed_logs/ || true ; done <<< "$failed"
fi
- name: Set timestamp
if: always()
run: echo "TS=$(date +%s)" >> $GITHUB_ENV
- uses: actions/upload-artifact@v4
if: failure() || cancelled()
name: Upload failed logs
with:
name: failed_logs_sing_${{ matrix.test_profile }}_${{ matrix.NXF_VER }}_${{ env.TS }}
include-hidden-files: true
path: failed_logs
overwrite: false
if-no-files-found: warn
- uses: actions/upload-artifact@v4
if: always()
name: Upload log
with:
name: nextflow_sing_${{ matrix.test_profile }}_${{ matrix.NXF_VER }}_${{ env.TS }}.log
include-hidden-files: true
path: .nextflow.log
overwrite: false
if-no-files-found: warn