diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b010363..b2a6898 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,10 +9,6 @@ name: release # https://pypi.org/manage/project/geckopy/settings/publishing/ , pointing # at this repo, workflow filename `release.yml`, and environment `pypi`. # 2. Create a `pypi` environment in this repo's Settings -> Environments. -# Also note: geckopy's `raven-toolbox` dependency is currently a git direct -# reference (see pyproject.toml), which PyPI rejects on upload -- the -# pypi-publish job below will fail until that's switched to a released -# version pin. on: release: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 747f59e..ef078fc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -38,11 +38,5 @@ jobs: - name: Install run: pip install -e ".[dev,evotune]" - # ec_fseof needs the `equality` option of raven_toolbox.analysis.fseof, - # which is not in a release yet. Remove this step once geckopy requires - # a raven-toolbox release that has it. - - name: Install raven-toolbox from develop - run: pip install --upgrade --force-reinstall --no-deps "raven-toolbox @ git+https://github.com/CompMetEng/raven-toolbox.git@develop" - - name: Run pytest run: pytest -q diff --git a/CHANGELOG.md b/CHANGELOG.md index c91849a..2b9ce06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 4.0.0b2 — 2026-11-02 * `pfba_enzymes` with `fraction_of_optimum` below 1 lets the objective fall by that fraction of the magnitude of its optimum, for a negative optimum and for a minimised objective as for a maximised positive one, as MATLAB's `getPfbaEnzymes` does; it raised `Infeasible` for these objectives. * `ec_fseof` ranks the targets by the score `|slope| * |correlation|` rounded to 9 significant digits, with scores that are equal after rounding in model order, as GECKO's `ecFSEOF` does; scores that differ by solver noise used to decide the order. diff --git a/README.md b/README.md index 3d7ab27..0c1cff1 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Enzyme-constrained genome-scale metabolic modelling in Python: the Python port o An *ec*Model adds the limits of enzymes to a genome-scale model: each enzyme has a finite capacity (its kcat) and the cell has a finite protein budget. geckopy fetches kcats from BRENDA, predicts them with DLKcat, tunes them against growth and flux data with CMA-ES, applies custom curations and integrates proteomics. -> **Status: beta (`4.0.0b1`).** The yeast-GEM tutorial runs end to end. The major and minor version follow GECKO, which is why it starts at 4. +> **Status: beta (`4.0.0b2`).** The yeast-GEM tutorial runs end to end. The major and minor version follow GECKO, which is why it starts at 4. > **Not the older geckopy.** This is a new port of GECKO. It is unrelated to the earlier `geckopy` on PyPI (release 2.0.2 and earlier), described in Carrasco Muriel, Long & Sonnenschein, *Microbiology Spectrum* 11(6):e01705-23 (2023), [doi:10.1128/spectrum.01705-23](https://doi.org/10.1128/spectrum.01705-23). diff --git a/pyproject.toml b/pyproject.toml index 09393d0..efa246a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "geckopy" -version = "4.0.0b1" +version = "4.0.0b2" description = "Enzyme-constrained genome-scale metabolic modeling in Python, inspired by the GECKO Toolbox" readme = "README.md" requires-python = ">=3.11" @@ -44,10 +44,13 @@ dependencies = [ # raven-toolbox provides the underlying model-manipulation primitives geckopy # extends, plus the ecModel YAML I/O (raven_toolbox.io.ec_data.EcData and the # ec-rxns / ec-enzymes / gecko_light sections in read/write_yaml_model). - # >=3.0.0b1: first release carrying convert_to_irreversible(..., rxns=...), - # which make_ec_model needs (#42). The "b1" in the specifier opts pip into - # matching pre-releases, so no --pre flag is needed downstream. - "raven-toolbox>=3.0.0b1", + # >=3.0.0b2: carries convert_to_irreversible(..., rxns=...), which + # make_ec_model needs (#42), raven_toolbox.utils.solver, which + # load_conventional_gem imports, and the `equality` option of + # raven_toolbox.analysis.fseof, which ec_fseof needs. The "b2" in the + # specifier opts pip into matching pre-releases, so no --pre flag is needed + # downstream. + "raven-toolbox>=3.0.0b2", "requests>=2.28", "ruamel.yaml>=0.17", "scipy>=1.10",