Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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: 0 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
6 changes: 0 additions & 6 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).

Expand Down
13 changes: 8 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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",
Expand Down
Loading