Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
e5be97d
First output of deeplc as onnx and first notebook
Alirezak2n Mar 14, 2025
b3c3ed9
Update the ONNX model
Alirezak2n Mar 24, 2025
f3a9962
Formatting with Ruff
RalfG Mar 27, 2025
a5ec35c
First refactoring of do_f_extraction* methods
RalfG Mar 27, 2025
655a665
Add calibration test
Alirezak2n Apr 2, 2025
18922d4
Final pytorch version
Alirezak2n Apr 22, 2025
efbe81f
Update pyproject.toml
Alirezak2n Apr 22, 2025
bc6da2e
Add onnx2torch
Alirezak2n Apr 22, 2025
8e897b0
Delete ATLANTIS_SILICA_fixed_mods.csv
Alirezak2n Apr 22, 2025
922e19a
Add feature_matrices function
Alirezak2n Apr 22, 2025
6588d4d
Further cleanup; refactor feature generation; try dask for multiproce…
RalfG Apr 23, 2025
b05223d
Undo changes redundant with upcoming PR from RalfG
RalfG Apr 23, 2025
efabc32
Replace .gitignore with the one from GitHub
RalfG Apr 23, 2025
a373dc9
Merge pull request #88 from Alirezak2n/master
RalfG Apr 23, 2025
194d2be
Merge branch 'dev' into cleanup
RalfG Apr 23, 2025
ccc6ae3
Add dask dependency
RobbinBouwmeester Apr 24, 2025
57db4c8
Update pyproject.toml
RobbinBouwmeester Apr 24, 2025
cc965d6
Read function to prepare matrices
RobbinBouwmeester Apr 24, 2025
efb18bc
Merge pull request #89 from compomics/cleanup
RalfG Apr 24, 2025
984f563
Split-up DeepLC class into separate functions (WIP)
RalfG Apr 24, 2025
12f332a
Generate features as part of dataloader for optimized multiprocessing…
RalfG Jun 5, 2025
8ebbd6c
Simplify predict function and only predict unique peptidoforms:
RalfG Jun 6, 2025
f1947eb
Fully vectorize linear calibration
RalfG Sep 23, 2025
b0ec680
New core functions, model ops, improved calibration, more repo cleanup
RalfG Dec 10, 2025
970ac5d
Restructure data files into package data dir
RalfG Dec 10, 2025
306c3f7
separate finetune function in core
ArthurDeclercq Jan 8, 2026
b4451d0
add finetune to import
ArthurDeclercq Jan 8, 2026
c3a4480
add warnings for reference psm list
ArthurDeclercq Jan 8, 2026
f93cb83
Make data module public
RalfG Jan 8, 2026
09a5645
Make naming in calibration module more generic to also fit use for io…
RalfG Jan 8, 2026
37f4b86
change default epochs in train
ArthurDeclercq Jan 8, 2026
e4b25e5
Merge branch 'feature/new-api' of https://github.com/compomics/DeepLC…
RalfG Jan 8, 2026
d554c30
Add initial architecture
RalfG Jan 8, 2026
5c3e5a0
default patience to at least 10, change data import
ArthurDeclercq Jan 9, 2026
1b6bd57
Create align.py
RobbinBouwmeester Jan 13, 2026
b7fb430
Update align.py
RobbinBouwmeester Jan 13, 2026
cc5f39f
General cleanup, docstrings, etc
RalfG Feb 19, 2026
9338d16
Add basic skeleton for readthedocs
RalfG Feb 19, 2026
336ec9e
Add v4.0 to do list
RalfG Feb 19, 2026
f7a08be
Update actions
RalfG Mar 3, 2026
1bbe23e
Fix tests
RalfG Mar 3, 2026
bce8675
Only lint package dir
RalfG Mar 3, 2026
35bc90f
Fix formatting
RalfG Mar 3, 2026
d0aa1cd
Update changelog; include in docs
RalfG Mar 3, 2026
dff9b59
Merge branch 'master' of https://github.com/compomics/DeepLC into fea…
RalfG Mar 3, 2026
2b0aea9
Merge pull request #90 from CompOmics/feature/new-api
RalfG Mar 3, 2026
5e9890c
Update _model_ops.py
RobbinBouwmeester Mar 11, 2026
f907cf1
Remove calibration parameter from finetune_and_predict
RalfG Mar 12, 2026
d0ef7f1
Simplify and improve progress bar
RalfG Mar 12, 2026
be62266
Remove partial freeze support, as this mostly reduces finetuning perf…
RalfG Mar 12, 2026
d795330
Add plain calibration function to core to avoid code duplication and …
RalfG Mar 12, 2026
09a2131
Fix missing encoding for terminal modifications
RalfG Mar 12, 2026
5a2af07
Update function order in _features; add todo for fixed modifications
RalfG Mar 12, 2026
6bbffa3
Improve linear calibration; remove 'simplified' option in spline cali…
RalfG Mar 13, 2026
1401fe2
Improve logging and progress bar
RalfG Mar 13, 2026
ac7e53d
Change to SplineCalibration by default after finetuning
RalfG Mar 13, 2026
fe9bb73
Hard fix promote buffers to parameters in model files, avoiding fix o…
RalfG Mar 13, 2026
49abc72
Improve piece-wise linear calibration:
RalfG Mar 16, 2026
9c40b0d
Add show_progress parameter to predict
RalfG Mar 16, 2026
d1daeea
Update tests
RalfG Mar 16, 2026
09fc121
Packaging: Update manifest file
RalfG Mar 16, 2026
c9689d1
Update changelog for alpha.1 release; fix linting
RalfG Mar 16, 2026
c6d0e9f
Merge pull request #96 from CompOmics/feature/progress-and-threads
RalfG Mar 16, 2026
c5d8bd1
Improve API flexibility, input validation, and robustness
RalfG Mar 25, 2026
b3df454
Bump version
RalfG Mar 25, 2026
86979bd
feat: Implement CLI
RalfG Mar 25, 2026
b2a8811
Update docs
RalfG Mar 25, 2026
f5c7791
Formatting
RalfG Mar 25, 2026
cceec9c
Merge pull request #97 from CompOmics/feature/api-flexibility
RalfG Mar 26, 2026
3a7fc5f
Add multitask adapter fine-tuning and correlation-based head calibration
RobbinBouwmeester Apr 2, 2026
89cbce6
Package pretrained multitask model as default in DeepLC
RobbinBouwmeester Apr 2, 2026
e662314
feat: Add GUI module and improve CLI
RalfG Apr 13, 2026
9c7c961
feat: Add auto-calibration and improve GUI
RalfG Apr 14, 2026
2b54572
GUI code cleanup
RalfG Apr 14, 2026
cc26576
Fix multitask_model.pt loading: add BatchedHeads/MultitaskDeepLCModel…
RobbinBouwmeester Apr 24, 2026
6a58ad2
Merge pull request #98 from CompOmics/fix/multitask-model-loading
RobbinBouwmeester Apr 24, 2026
7dfec5d
Fix black
RobbinBouwmeester Jun 22, 2026
5c6a94e
Black formatting
RobbinBouwmeester Jun 22, 2026
861ed43
feat: Add NiceGUI GUI module, Docker web server, and CLI improvements
RalfG Jul 1, 2026
3cd43ca
test: Add tests for reference selection and core predict_and_calibrate
RalfG Jul 1, 2026
ea43afd
feat: Add PyInstaller spec and InnoSetup Windows installer config
RalfG Jul 1, 2026
df1d2c7
ci: Add publish workflow with Windows installer, Docker build, and dr…
RalfG Jul 1, 2026
ddde602
Convert example files from old CSV input format to psm_utils TSV and …
RalfG Jul 1, 2026
e717916
Update CHANGELOG.md
RalfG Jul 1, 2026
361377a
Fix setup-uv action version
RalfG Jul 2, 2026
877df34
fix: build wheel as part of docker build instead of relying on wheel …
RalfG Jul 3, 2026
d3ff2d7
fix: formatting
RalfG Jul 3, 2026
5b08402
fix: sanitize version tag for innosetup
RalfG Jul 3, 2026
abddae7
Use Python 3.14 as default for Docker and Windows installer builds
RalfG Jul 3, 2026
8d11413
Merge pull request #101 from CompOmics/feat/gui
RalfG Jul 3, 2026
85f3c7a
Merge branch 'release/4.0' of https://github.com/compomics/DeepLC int…
RalfG Jul 3, 2026
cac8a84
refactor: Move MultitaskAdapter to _architecture.py, fix unsqueeze an…
RalfG Jul 3, 2026
ea5b2b3
refactor: Extract multitask helper functions to _multitask_utils.py
RalfG Jul 3, 2026
129e274
fix: Fix psm_list_reference bug, simplify default model, guard model …
RalfG Jul 3, 2026
237dfae
test: Fix test_core comparison for multitask model output
RalfG Jul 3, 2026
3b6cdef
Unify model into single DeepLCModel class with optional adapter
RalfG Jul 7, 2026
8464940
docs: improve docstring formatting
RalfG Jul 7, 2026
3143a52
Add Calibration.selected_model_head to replace monkey-patching
RalfG Jul 7, 2026
a8e996e
Update CHANGELOG.md
RalfG Jul 7, 2026
a2333ee
Merge pull request #99 from CompOmics/4.0_MT
RalfG Jul 7, 2026
a9ee1a2
cleanup repo: remove old and deprecated files, including old Streamli…
RalfG Jul 7, 2026
501324f
Merge pull request #102 from CompOmics/feat/cleanup
RalfG Jul 7, 2026
ebcc1e0
docs: overhaul documentation for v4
RalfG Jul 9, 2026
c955e8a
Merge pull request #103 from CompOmics/feat/more-docs
RalfG Jul 9, 2026
2630a51
Bump version to 4.0.0b1 and update changelog
RalfG Jul 10, 2026
fc44598
docs: update readme
RalfG Jul 10, 2026
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
315 changes: 126 additions & 189 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -1,204 +1,141 @@
name: Publish to PyPI and GitHub release
name: Publish

on:
push:
tags:
- 'v*'
release:
types: [created]
workflow_dispatch:
inputs:
ref:
description: 'Git ref (branch, tag, or SHA) to build from'
required: true
default: 'master' # ← was 'main'
type: string

# Least-privilege defaults for all jobs (override per-job if needed)
permissions:
contents: write # to create releases and read code
packages: write # to push container images to ghcr.io
id-token: write # for PyPI OIDC publish
dry_run:
description: "Dry run: build and test everything, but skip publishing to PyPI, GHCR, and GitHub releases"
type: boolean
default: true

jobs:
python-package:
build-python-package:
runs-on: ubuntu-latest
permissions:
contents: read

steps:
- name: Select ref
id: select-ref
run: |
if [ -n "${{ github.event.inputs.ref }}" ]; then
echo "ref=${{ github.event.inputs.ref }}" >> $GITHUB_OUTPUT
else
# Fallback to the event ref (e.g. refs/tags/v1.2.3 on tag pushes)
echo "ref=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
fi

- uses: actions/checkout@v4
with:
# Checkout the chosen ref for manual runs; for tag-push runs this will be that tag
ref: ${{ steps.select-ref.outputs.ref }}

- name: Derive version
id: version
shell: bash
run: |
# If the ref looks like a release tag (v*), use it as version (strip refs/tags/ if present)
REF="${{ steps.select-ref.outputs.ref }}"
if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
VER="${GITHUB_REF#refs/tags/}"
elif [[ "$REF" == refs/tags/v* ]]; then
VER="${REF#refs/tags/}"
elif [[ "$REF" == v* ]]; then
VER="$REF"
else
# Fallback for non-tag manual runs
VER="manual-${{ github.run_number }}"
fi
echo "version=$VER" >> $GITHUB_OUTPUT
echo "Resolved version: $VER"

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build flake8

- name: Check for syntax errors
run: |
flake8 ./deeplc --count --select=E9,F63,F7,F82 --show-source --statistics

- name: Build package
run: |
python -m build . --sdist --wheel

- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
skip-existing: true

- name: Upload compiled wheels
uses: actions/upload-artifact@v4
with:
name: python-wheels
path: dist/*.whl
- uses: actions/checkout@v7

- uses: actions/setup-python@v6
with:
python-version-file: "pyproject.toml"

- uses: astral-sh/setup-uv@v8.2.0
with:
enable-cache: true

- name: Build
run: uv build --no-sources

- name: Upload dists
uses: actions/upload-artifact@v7
with:
name: python-package-distributions
path: dist/
if-no-files-found: error

publish-python-package:
needs: build-python-package
runs-on: ubuntu-latest
permissions:
id-token: write

steps:
- name: Download dists
uses: actions/download-artifact@v8
with:
name: python-package-distributions
path: dist/

- name: Publish to PyPI
if: github.event_name == 'release' || inputs.dry_run == 'false'
uses: pypa/gh-action-pypi-publish@release/v1

windows-installer:
runs-on: windows-latest
needs: python-package
needs: build-python-package
steps:
- uses: actions/checkout@v4
with:
# Match the same ref used for building the Python package
ref: ${{ needs.python-package.outputs.ref || github.ref }}
# If you want to avoid recomputing the ref/version here, you can
# alternatively repeat the "Select ref" + "Derive version" steps as above
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install .[gui] pyinstaller
- name: Install Inno Setup
uses: crazy-max/ghaction-chocolatey@v3
with:
args: install innosetup -y --allow-unofficial --force
- name: Run pyinstaller
run: pyinstaller ./deeplc_pyinstaller.spec --clean --noconfirm
- name: Test built DeepLC exe
run: dist/deeplc/deeplc.exe --ignore-gooey --help
- name: Derive version (Windows)
id: version
shell: bash
run: |
REF="${{ github.event.inputs.ref }}"
if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
VER="${GITHUB_REF#refs/tags/}"
elif [[ "$REF" == refs/tags/v* ]]; then
VER="${REF#refs/tags/}"
elif [[ "$REF" == v* ]]; then
VER="$REF"
else
VER="manual-${{ github.run_number }}"
fi
echo "version=$VER" >> $GITHUB_OUTPUT
echo "Resolved version: $VER"
- name: Run Inno Setup
run: ISCC.exe ./deeplc_innosetup.iss /DAppVersion=${{ steps.version.outputs.version }}
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: windows-installer
path: dist/*.exe

git-release:
- uses: actions/checkout@v7

- name: Sanitize version tag
id: tag
shell: bash
run: echo "tag=$(echo '${{ github.ref_name }}' | tr '/' '-')" >> $GITHUB_OUTPUT

- uses: actions/setup-python@v6
with:
python-version: "3.14"

- uses: astral-sh/setup-uv@v8.2.0
with:
enable-cache: true

- name: Install dependencies
run: uv pip install --system ".[gui]" pyinstaller

- name: Install Inno Setup
uses: crazy-max/ghaction-chocolatey@v3
with:
args: install innosetup -y --allow-unofficial --force

- name: Run PyInstaller
run: pyinstaller ./deeplc.spec --clean --noconfirm

- name: Test built executable
run: dist/deeplc/deeplc.exe predict --help

- name: Run Inno Setup
run: ISCC.exe ./deeplc_innosetup.iss /DAppVersion=${{ steps.tag.outputs.tag }}

- name: Upload installer artifact
uses: actions/upload-artifact@v7
with:
name: windows-installer
path: dist/*.exe

- name: Upload installer to release
if: github.event_name == 'release' || inputs.dry_run == 'false'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
file_glob: true
file: dist/*.exe

build-docker-image:
runs-on: ubuntu-latest
needs: [python-package, windows-installer]
# Only create a GitHub Release when the ref is a v* tag (either push or manual)
if: startsWith(github.ref, 'refs/tags/v') || startsWith(github.event.inputs.ref, 'v')
steps:
- uses: actions/checkout@v4

- name: Resolve version/tag
id: version
shell: bash
run: |
if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
VER="${GITHUB_REF#refs/tags/}"
elif [[ "${{ github.event.inputs.ref }}" == v* ]]; then
VER="${{ github.event.inputs.ref }}"
else
echo "This job should only run for v* tags."
exit 1
fi
echo "version=$VER" >> $GITHUB_OUTPUT
echo "Resolved version: $VER"

- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: dist

- name: Create GitHub Release
# The docker action infers the tag from GITHUB_REF; set it explicitly for manual runs.
uses: docker://antonyurchenko/git-release:v6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DRAFT_RELEASE: "false"
PRE_RELEASE: "false"
CHANGELOG_FILE: "CHANGELOG.md"
# Provide a synthetic tag ref for manual runs with input v*
GITHUB_REF: refs/tags/${{ steps.version.outputs.version }}
with:
args: |
dist/**/*.exe
dist/**/*.whl

build-streamlit-image:
runs-on: ubuntu-latest
needs: python-package
needs: build-python-package
permissions:
packages: write

steps:
- uses: actions/checkout@v4
- id: latest_release
uses: pozetroninc/github-action-get-latest-release@master
with:
owner: compomics
repo: DeepLC
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push to ghcr.io
uses: docker/build-push-action@v5
with:
context: streamlit
push: true
tags: |
ghcr.io/compomics/deeplc-streamlit:${{ steps.latest_release.outputs.release }}
ghcr.io/compomics/deeplc-streamlit:latest
- uses: actions/checkout@v7

- name: Sanitize image tag
id: tag
run: echo "tag=$(echo '${{ github.ref_name }}' | tr '/' '-')" >> $GITHUB_OUTPUT

- name: Login to GitHub Container Registry
if: github.event_name == 'release' || inputs.dry_run == 'false'
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push to ghcr.io
uses: docker/build-push-action@v7
with:
context: .
file: docker/Dockerfile
push: ${{ github.event_name == 'release' || inputs.dry_run == 'false' }}
tags: |
ghcr.io/compomics/deeplc:${{ steps.tag.outputs.tag }}
${{ github.event_name == 'release' && 'ghcr.io/compomics/deeplc:latest' || '' }}

- name: Test Docker image
if: github.event_name == 'release' || inputs.dry_run == 'false'
run: docker run --rm ghcr.io/compomics/deeplc:${{ steps.tag.outputs.tag }} deeplc --help
Loading
Loading