Skip to content

Release 4.0.0b1 - #53

Merged
edkerk merged 16 commits into
mainfrom
develop
Sep 8, 2026
Merged

edkerk merged 16 commits into
mainfrom
develop

Conversation

@edkerk

@edkerk edkerk commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Release prep included here: version bump, CHANGELOG conversion, and the README changes to match.

Highlights since 0.3.0:

  • CMA-ES-based kcat tuning against experimental data (kcat_tuning.evotune), replacing the earlier ABC-SMC approach
  • flexibilize_enz_concs, make_ec_model, get_reactions_from_enzyme, read_dlkcat_output, parse_okp_output, set_kcat_for_reactions: parity fixes against MATLAB GECKO
  • raven-toolbox dependency switched from a git pin to the PyPI >=3.0.0b1 release
  • sdist packaging fix (was bundling a local virtualenv into the sdist)
  • release.yml: PyPI publish job enabled (trusted publishing)
  • Version numbering switches from geckopy's own semver to GECKO's toolbox-generation numbering (MATLAB GECKO 1-3, geckopy = 4.x) -- see the README disambiguation note

After merge: publish a GitHub release tagged v4.0.0b1 to trigger release.yml. Note the PyPI publish step still needs two one-time setup steps first (trusted publishing registered on the geckopy PyPI project, and a pypi GitHub environment here) -- without those the pypi-publish job will fail even though build succeeds.

* Add CMA-ES kcat tuning against experimental flux/growth data

* Rename Bayesian kcat tuning to evolutionary (CMA-ES) tuning; drop internal process docs

* Rename evolutionary_tuning to the shorter evotune
* Add EvotuneResult.corrections(): report a tuning result as a ranked table

* Move corrections to kcat_tuning; give sensitivity_tuning its own corrections()
Switches off the git develop pin now that 3.0.0b1 carries the
convert_to_irreversible(rxns=...) addition make_ec_model needs (#42).
Drops allow-direct-references along with it, since nothing in
dependencies needs a direct URL reference anymore -- PyPI would have
rejected an sdist containing one. Full suite passes against the
PyPI release (1410 passed, 1 skipped, 1 xfailed).
Flattens the Keep-a-Changelog ### Added/Fixed/Changed subsections into
one bullet list (matching raven-toolbox's CHANGELOG.md format) and
drops the version header's brackets to match. Also folds in #49 and
#50, which had merged straight to main since 0.3.0 and were missing
from develop until the merge two commits back.
Removes every (#NN) / ([#NN]) citation and the now-unused version/PR
link-reference block at the bottom of the file. Flattens each 0.x.y
entry's Keep-a-Changelog ### Added/Fixed/Changed/... subsections into
one bullet list per raven-toolbox's CHANGELOG.md format, matching what
the 4.0.0b1 entry already does.
Exact list equality between the serial and 2-worker-pool runs is
fragile: rmse_trace is summed in a different order across worker
processes than in-process, so it can differ by a couple of ULPs even
when the optimization result (new_kcat) is bit-identical. Failed on
macOS CI for exactly that reason.
Explains both a plain pip install --pre geckopy (which resolves
raven-toolbox's own pre-release transitively, verified against pip's
actual resolver) and an explicit dual-pin for exact reproducibility.
Also drops the under-active-development title suffix now that Status
already covers that, and points at the evotune docs from Quick start.
Only one MATLAB-COMPAT: comment remained in src/ (query.py) -- the
0.3.0 docstring cleanup already replaced the rest with plain
statements of current behavior, so the convention future_improvements.md
and the README described as active was stale. Rewrites the two
remaining source notes (query.py, _brenda_query.py) as plain
statements, drops the now-false every-divergence-carries-a-
MATLAB-COMPAT-comment claims from README.md and
migrating_from_gecko_matlab.md, and points readers at the actively
maintained MATLAB to Python translation guide on
gecko-docs.readthedocs.io instead.

Also cleans up docs/future_improvements.md: removes three
MATLAB GECKO changes items that PRs #43 and #47 resolved in the
opposite direction (geckopy changed to match MATLAB, rather than
MATLAB adopting geckopy old behavior), and the drop-the-raven-toolbox-
git-URL deferred-migration item, done a few commits back.
Audits the `Ported from GECKO MATLAB:` docstring convention across
src/geckopy: adds the header to files that port real GECKO MATLAB
functionality but were missing it, and fixes three headers that cited
the wrong path.

- adapter/adapter.py, adapter/resolve.py, adapter/template.py,
  adapter/params.py: port GECKO MATLAB's model_adapter/ (ModelAdapter.m,
  ModelAdapterManager.m, adapterTemplate.m), not geckopy-only scaffolding.
- cli.py: the `init` subcommand ports startGECKOproject.m's
  project-scaffolding logic.
- ec_model/pipeline/preprocess.py, populate_ec.py, protein_pool.py:
  split-out stages of makeEcModel.m; protein_pool.py's
  set_prot_pool_size also cites setProtPoolSize.m specifically.
- ec_model/pipeline/query.py: ports getReactionsFromEnzyme.m.
- gather_kcats/fuzzy_kcat_matching/_brenda_query.py, _escalation.py,
  _organism.py: split-out helpers of fuzzyKcatMatching.m, already
  cited by the parent package's __init__.py.
- databases/uniprot_loader.py: cited src/geckomat/utilities/loadDatabases.m;
  loadDatabases.m lives under get_enzyme_data/, not utilities/.
- databases/kegg_download.py, uniprot_download.py: cited nonexistent
  downloadKEGG.m / downloadUniProt.m paths; point at the real source,
  loadDatabases.m, with the extraction noted in prose.
- databases/phyl_dist.py: normalized to the standard
  "Ported from GECKO MATLAB: <path>." wording (was missing the colon,
  so it didn't match the repo convention or the audit grep).
The kcat_tuning package (moved here from kcat_sensitivity_analysis,
which no longer exists) cited `src/kcat_tuning/...` for its ported
functions. That path doesn't resolve on the default GECKO MATLAB
branch, and only partially resolves on `develop4` (sensitivityTuning.m,
sigmaFitter.m, truncateValues.m exist there under `src/kcat_tuning/`,
but findMaxValue.m and the whole `Bayesian/` folder do not). The real,
resolvable source for all eight citations is
`src/geckomat/kcat_sensitivity_analysis/`, matching every other header
in the codebase and confirmed via the GECKO repo's actual tree
(including a stale `doc/` snapshot on `develop4` that still shows
`loadBayesianData.m` at that path).

- kcat_tuning/find_max_value.py, sensitivity_tuning.py, sigma_fitter.py,
  truncate_values.py: `src/kcat_tuning/X.m` -> `src/geckomat/kcat_sensitivity_analysis/X.m`.
- kcat_tuning/evotune/priors.py, distance.py, simulate.py, data.py:
  `src/kcat_tuning/Bayesian/X.m` -> `src/geckomat/kcat_sensitivity_analysis/Bayesian/X.m`.
Adds a callout right under the tagline, before Disambiguation --
that site carries the full protocol, install, troubleshooting, and
API reference for both toolboxes, well beyond what this README
covers, so it belongs as the first thing a reader sees rather than
buried in Relationship to MATLAB GECKO near the bottom.
@edkerk
edkerk merged commit 277b74a into main Sep 8, 2026
6 checks passed
@edkerk
edkerk deleted the develop branch September 8, 2026 21:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant