diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 1137ef5..df9e16d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -54,7 +54,7 @@ jobs: - name: Install package and dependencies run: | python -m pip install --upgrade pip - pip install --only-binary :all: . pyinstaller + pip install --only-binary :all: .[ionmob] pyinstaller - name: Install Inno Setup uses: crazy-max/ghaction-chocolatey@v3 @@ -83,3 +83,43 @@ jobs: tag: ${{ github.ref }} file_glob: true file: dist/*.exe + + docker-image: + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + attestations: write + id-token: write + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ghcr.io/${{ github.repository }} + + - name: Build and push Docker images + id: push + uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-name: ghcr.io/${{ github.repository }} + subject-digest: ${{ steps.push.outputs.digest }} + push-to-registry: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 26f9eb5..522e183 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -55,7 +55,7 @@ jobs: - name: Install package and dependencies run: | python -m pip install --upgrade pip - pip install --only-binary :all: . pyinstaller + pip install --only-binary :all: .[ionmob] pyinstaller - name: Install Inno Setup uses: crazy-max/ghaction-chocolatey@v1 diff --git a/ms2rescore.spec b/ms2rescore.spec index 19ffb55..15bdb68 100644 --- a/ms2rescore.spec +++ b/ms2rescore.spec @@ -16,6 +16,8 @@ project = "ms2rescore" bundle_name = "ms2rescore" bundle_identifier = f"{bundle_name}.{__version__}" +extra_requirements = {"ionmob"} + # Requirements config skip_requirements_regex = r"^(?:.*\..*)" @@ -28,6 +30,7 @@ requirements = { if "; extra ==" not in req # Exclude optional dependencies } requirements.update([project, "xgboost"]) +requirements.update(extra_requirements) hidden_imports = set() datas = [] diff --git a/ms2rescore/__init__.py b/ms2rescore/__init__.py index c99ef9b..8b4a1ee 100644 --- a/ms2rescore/__init__.py +++ b/ms2rescore/__init__.py @@ -1,6 +1,6 @@ """MSĀ²Rescore: Sensitive PSM rescoring with predicted MSĀ² peak intensities and RTs.""" -__version__ = "3.1.0" +__version__ = "3.1.1" from warnings import filterwarnings diff --git a/ms2rescore/gui/app.py b/ms2rescore/gui/app.py index a077a45..50f8451 100644 --- a/ms2rescore/gui/app.py +++ b/ms2rescore/gui/app.py @@ -383,6 +383,9 @@ def get(self) -> Dict: config["deeplc"] = deeplc_config if ionmob_enabled: config["ionmob"] = ionmob_config + if im2deep_enabled: + config["im2deep"] = im2deep_config + return config diff --git a/ms2rescore/rescoring_engines/percolator.py b/ms2rescore/rescoring_engines/percolator.py index 9952aed..192950b 100644 --- a/ms2rescore/rescoring_engines/percolator.py +++ b/ms2rescore/rescoring_engines/percolator.py @@ -88,7 +88,7 @@ def rescore( "decoy-results-proteins": output_file_root + ".percolator.decoy.proteins.pout", "weights": output_file_root + ".percolator.weights.tsv", "verbose": LOG_LEVEL_MAP[log_level], - "num-threads": processes, + "num-threads": min(processes, 128), # Higher values not supported by Percolator "post-processing-tdc": True, } if percolator_kwargs: