Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
251772d
Announce the 3.0.0b1 release in README.md and docs/ (#152)
edkerk Sep 8, 2026
63aa7a5
docs: move the localisation and confidence-tracking record to raven-g…
edkerk Sep 8, 2026
3fc0f72
Point the leftover localisation references at raven-gecko-parity (#154)
edkerk Sep 8, 2026
2383ec4
Add a contributing guide covering the artefact build pipeline (#155)
edkerk Sep 8, 2026
450e3ef
Remove data/deeploc, moved to raven-gecko-parity (#156)
edkerk Sep 8, 2026
5d25424
Retire the documentation tree in favour of raven-docs (#157)
edkerk Sep 8, 2026
61da432
Fold omics.hpa into init as init.hpa (#158)
edkerk Sep 9, 2026
7a41303
Cut three redundant costs in ftinit/taskfill (#159)
edkerk Sep 11, 2026
98d02a8
Expose ftINIT's Gurobi tolerances and presolve level as parameters (#…
edkerk Sep 20, 2026
ea95181
GNU GPL-v3
edkerk Sep 23, 2026
d7bd984
Keep the template's solver in merged models and warn on GLPK ftINIT s…
edkerk Sep 24, 2026
2700d6b
ftinit: skip the tie-break when the primary solve stops at the time l…
edkerk Sep 29, 2026
f99f645
Keep InChI out of the Excel MIRIAM column (#162)
edkerk Sep 29, 2026
56b1a11
fix: read whole-number YAML charges as ints (#164)
edkerk Sep 29, 2026
ca11646
fix: write subsystems as strings in the MATLAB export (#165)
edkerk Sep 29, 2026
d0707de
feat: keep gene-free reactions and template notes in get_model_from_h…
edkerk Oct 5, 2026
3a0d442
feat: set_model_metadata / get_model_metadata, and version and date i…
edkerk Oct 5, 2026
7effd68
fix: write RAVEN-format .mat and RAVEN-readable SBML (#168)
edkerk Oct 7, 2026
ee0f886
fix: keep raven-toolbox bookkeeping out of the SBML notes (#169)
edkerk Oct 7, 2026
85c75b2
Point repository, RAVEN checkout and documentation links to CompMetEn…
edkerk Oct 17, 2026
205dd8e
Read SuppOrth consensus orthologs as homology input (#171)
edkerk Oct 17, 2026
4e6d98e
Download assets from CompMetEng/toolbox-assets (#172)
edkerk Oct 17, 2026
16da145
test: find RAVEN's source and tutorials in its src/ layout (#174)
edkerk Oct 17, 2026
ece4835
Fixes from the RAVEN 3 Guide review (#175)
edkerk Oct 17, 2026
4128e2a
Follow-ups from the RAVEN 3 Guide review (#176)
edkerk Oct 19, 2026
516b001
fix: four writer, task and gene-pruning problems from #178 (#179)
edkerk Oct 21, 2026
d555138
fix: keep everything of every model in merge_models; name the subsyst…
edkerk Oct 21, 2026
12f04bf
Align task lists, GPR parsing and YAML warnings with RAVEN (#181)
edkerk Oct 21, 2026
3556933
Run FVA and blocked-reaction searches in process in the gap-filling code
edkerk Oct 22, 2026
212bc76
Align exportForGit with RAVEN: all five formats, exact txt, fuller de…
edkerk Oct 22, 2026
c7af46a
Write equations without a coefficient of 1, as RAVEN does
edkerk Oct 22, 2026
537cc53
Connect blocked reactions with RAVEN's threshold, forced flux, net pr…
edkerk Oct 22, 2026
91ff9a2
Score expression data like RAVEN's scoreModel
edkerk Oct 22, 2026
8a63b01
Fill gaps with a MILP the way RAVEN's gapFillMILP does
edkerk Oct 22, 2026
1721d18
Build models from homology with RAVEN's complex policy and preferred …
edkerk Oct 22, 2026
90d1d92
Curate from tables with RAVEN's grouping, header names, default bound…
edkerk Oct 22, 2026
bf31e7e
Take expression data in ftinit like RAVEN's ftINIT
edkerk Oct 22, 2026
6e45b9e
Rename template reactions that share a draft id in the connectivity a…
edkerk Oct 22, 2026
5e32238
Write YAML like RAVEN: no empty reaction names, default bounds only w…
edkerk Oct 22, 2026
298b805
Remove em dashes from edited docstrings
edkerk Oct 22, 2026
ba16da1
Upgrade pip through python -m pip in the release and nightly workflows
edkerk Oct 22, 2026
f43be47
Raise when the task list has its ID column first, as RAVEN does
edkerk Oct 22, 2026
10c73d8
Keep the first isozyme copy at the position of the original reaction …
edkerk Oct 22, 2026
30a697f
Align simplify_model with RAVEN: mode order, lowest-index survivor, r…
edkerk Oct 22, 2026
a75592f
Add new genes in sorted order in add_reactions_from_equations
edkerk Oct 22, 2026
a5cfd24
Store the exact GAM value and check the NGAM reaction before changing…
edkerk Oct 22, 2026
4b88e8d
Refuse to rebalance charge with unset charges and check the balance c…
edkerk Oct 22, 2026
8e04476
Return only the all test for zero fold changes and std_z 0 for a sing…
edkerk Oct 22, 2026
998bbf9
Parse UniProt locations like RAVEN: whole words, isoform blocks, all …
edkerk Oct 22, 2026
c3a2130
Build the ftinit output from the reference model with the template's …
edkerk Oct 22, 2026
9955434
Add sort_model, the counterpart of sortModel
edkerk Oct 22, 2026
11772d1
Review fixes: scale_biomass atomicity, exact merge of linear chains, …
edkerk Oct 22, 2026
124ba4d
fill_gaps: restore steady-state bounds after the net-production check…
edkerk Oct 22, 2026
c3eb0a0
Equation coefficients as num2str, defaultLB and defaultUB written sep…
edkerk Oct 22, 2026
d312578
ftinit scripts pass reaction scores by keyword, restore tests for pre…
edkerk Oct 22, 2026
c596bcc
num2str as MATLAB writes it, rounding-level spread in reporter_metabo…
edkerk Oct 22, 2026
0f0d000
export_for_git: main_branch_flag raises when raven_toolbox is on anot…
edkerk Oct 23, 2026
01d43a9
rescale_for_init leaves bounds alone; prep_init_model resets them to …
edkerk Oct 23, 2026
dfe069e
write_fasta: an empty sequence gives the header line only
edkerk Oct 23, 2026
724e924
HPA level None scores -8 as in RAVEN
edkerk Oct 23, 2026
f5907c2
parse_hpa_rna: read Sample and Value columns, raise without a tissue …
edkerk Oct 23, 2026
e65f803
generate_new_ids: take the numeric maximum, as generateNewIds; curati…
edkerk Oct 23, 2026
8c0f4ad
remove_duplicate_reactions: group by stoichiometry and reversibility …
edkerk Oct 23, 2026
2de899b
get_init_steps: the full series carries RAVEN's single MILP run
edkerk Oct 23, 2026
22b4078
fseof: regress the absolute flux, as FSEOF.m
edkerk Oct 23, 2026
4bd1cf7
main_branch_flag only checks a raven_toolbox checkout, docstrings sta…
edkerk Oct 23, 2026
a75d665
fseof: report every correlated track with a standard deviation above …
edkerk Oct 23, 2026
4775199
remove_duplicate_reactions: no reserved option, as contractModel
edkerk Oct 23, 2026
8119c1d
Default upper bound of new reactions falls back to model.annotation d…
edkerk Oct 23, 2026
b0e6176
reporter_metabolites: centre the z-scores on the first one before tak…
edkerk Oct 23, 2026
66671d1
Docstrings for main_branch_flag and fseof, tests for each main-branch…
edkerk Oct 23, 2026
fb8b8be
reporter_metabolites: take the moments on z-scores centred on the fir…
edkerk Oct 23, 2026
605b42d
reporter_metabolites: raise ValueError for p-values outside [0, 1] in…
edkerk Oct 23, 2026
7a00f95
Satisfy ruff and mypy: explicit zip strictness, Mapping for read-only…
edkerk Oct 23, 2026
5fb422b
set_gam: check a given NGAM reaction also without a value; an empty N…
edkerk Oct 23, 2026
971b03a
next_ids: read suffixes as MATLAB str2double does (no d exponent, ASC…
edkerk Oct 23, 2026
edb0814
hpa_gene_scores: compare level names case-insensitively, as scoreMode…
edkerk Oct 23, 2026
c64bd20
connect_blocked_reactions: document how scores are keyed for renamed …
edkerk Oct 23, 2026
1443f15
simplify_model keeps genes and prep_init_model prunes unused genes as…
edkerk Oct 23, 2026
6708792
set_gam refuses an NGAM value without an NGAM reaction; next_ids igno…
edkerk Oct 23, 2026
fea1524
get_init_steps: the full series ignores no metabolites, as getINITSte…
edkerk Oct 23, 2026
a915e7c
batch_curate: an empty MIRIAM cell removes the namespace, new entitie…
edkerk Oct 23, 2026
6196a04
prep_init_model keeps the metabolites that tasks name; HPA level scor…
edkerk Oct 23, 2026
cb76094
batch_curate reads numeric cells as RAVEN does (true/false, NaN not g…
edkerk Oct 23, 2026
7297f31
prep_init_model restores every metabolite before the task check and k…
edkerk Oct 23, 2026
bd2181a
batch_curate: a charge must be a finite whole number, a rev cell 0, 1…
edkerk Oct 24, 2026
bbaefb6
batch_curate: cell trimming equals MATLAB strtrim as RAVEN reads cell…
edkerk Oct 24, 2026
2ccea03
batch_curate_from_tsv reads table files with the Python CSV engine so…
edkerk Oct 24, 2026
ae258f9
batch_curate: read table files with the csv module, set bounds togeth…
edkerk Oct 24, 2026
8354f09
batch_curate: a malformed gene rule is refused before the model is to…
edkerk Oct 24, 2026
9c62c6c
batch_curate: header-only reaction tables are empty; several rows for…
edkerk Oct 24, 2026
51e9a18
batch_curate: gene rules follow the grammar of parseGrRule; a gene li…
edkerk Oct 24, 2026
0870673
Tests for the gene rule grammar and for a gene listed twice
edkerk Oct 24, 2026
d72a4e1
batch_curate: a repeated rxnIdx in the reaction table raises before a…
edkerk Oct 24, 2026
77d1a08
prep_init_model: repeated and empty task ids are accepted and a task …
edkerk Oct 24, 2026
e48e445
ftinit: per-reaction big-M from each scored reaction's flux capacity,…
edkerk Oct 27, 2026
036237c
find_task_essential_reactions: candidates follow model reaction order…
edkerk Oct 28, 2026
d72a062
CHANGELOG and analyze_init_params: big_m is the cap on the per-reacti…
edkerk Oct 28, 2026
2c69357
find_task_essential_reactions: re-solve a knock-out cold before count…
edkerk Oct 28, 2026
cc9fbc5
ci: test on Python 3.14 and 3.15
edkerk Oct 28, 2026
3d83be2
ci: install GLPK headers for the Python 3.15 swiglpk source build
edkerk Oct 28, 2026
1eda199
Merge pull request #184 from CompMetEng/ci/python-3.14-3.15
edkerk Oct 28, 2026
73a88ec
Merge pull request #182 from CompMetEng/parity/round-2
edkerk Oct 28, 2026
667795f
Merge pull request #183 from CompMetEng/parity/gecko-round-2
edkerk Oct 28, 2026
a98e2a1
read_yaml_model reads empty enzymes maps and quotes inside values; fs…
edkerk Oct 30, 2026
94f3940
fix: align raven-toolbox with RAVEN (parity review, round 3) (#186)
edkerk Oct 30, 2026
ecb2c30
Set the solver tolerance of read models to RAVEN's 1e-9 (#187)
edkerk Oct 31, 2026
e73374a
Rewrite the docstrings under the documentation prose rules (#188)
edkerk Oct 31, 2026
79e0814
Document all parameters, align eleven functions with RAVEN, add parit…
edkerk Oct 31, 2026
6a28c71
write_yaml_model: omit the enzymes key of an ec reaction without enzy…
edkerk Nov 1, 2026
8f5d643
Remove measured figures from the docstrings (#190)
edkerk Nov 1, 2026
8de47dc
read_yaml_model: flip usage and pool reactions by the sign of the poo…
edkerk Nov 1, 2026
9440b17
docs: README with the documentation links and the logo for dark mode …
edkerk Nov 1, 2026
abc24f2
Prepare 3.0.0b2 release (#177)
edkerk Nov 1, 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
39 changes: 14 additions & 25 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
python-version: "3.12"
cache: pip
cache-dependency-path: pyproject.toml
- run: pip install --upgrade pip
- run: python -m pip install --upgrade pip
# Pinned so the lint result is reproducible (unpinned ruff silently
# adds rules over time). Keep in sync with the ``dev`` extra in pyproject.
- run: pip install ruff==0.15.15
Expand All @@ -38,7 +38,7 @@ jobs:
python-version: "3.12"
cache: pip
cache-dependency-path: pyproject.toml
- run: pip install --upgrade pip
- run: python -m pip install --upgrade pip
# Installs runtime deps + the dev extra (mypy). Third-party stubs are
# absent for cobra/optlang/scipy; ignore_missing_imports handles that.
- run: pip install -e ".[dev]"
Expand All @@ -54,7 +54,7 @@ jobs:
# Full Python range on Linux; a single Python on macOS/Windows to catch
# OS-specific issues (paths, subprocess, file I/O) at low runner cost.
os: [ubuntu-latest]
python: ["3.11", "3.12", "3.13"]
python: ["3.11", "3.12", "3.13", "3.14", "3.15"]
include:
- { os: macos-latest, python: "3.12" }
- { os: windows-latest, python: "3.12" }
Expand All @@ -65,7 +65,12 @@ jobs:
python-version: ${{ matrix.python }}
cache: pip
cache-dependency-path: pyproject.toml
- run: pip install --upgrade pip
- run: python -m pip install --upgrade pip
# swiglpk (a cobra/optlang dependency) publishes no Python 3.15 wheel, so pip
# builds it from source, which needs the GLPK headers and SWIG.
- name: Install GLPK build dependencies
if: matrix.python == '3.15'
run: sudo apt-get update && sudo apt-get install -y libglpk-dev swig
# ``-e .[dev,excel]`` so every optional extra is exercised.
# Gurobi is not installable on free runners; the relevant tests
# skip themselves when ``optlang.gurobi_interface`` cannot import.
Expand All @@ -84,21 +89,21 @@ jobs:
timeout-minutes: 20
steps:
- uses: actions/checkout@v5
# RAVEN is GPL and this package is MIT, so its files are never vendored
# RAVEN is a separate repository, so its files are never vendored
# here -- the cross-language checks read them from a checkout instead.
# develop3 is the branch raven-docs documents and raven-toolbox tracks.
# develop is the RAVEN branch raven-docs documents and raven-toolbox tracks.
- name: Check out MATLAB RAVEN
uses: actions/checkout@v5
with:
repository: SysBioChalmers/RAVEN
ref: develop3
repository: CompMetEng/RAVEN
ref: develop
path: .raven
- uses: actions/setup-python@v6
with:
python-version: "3.12"
cache: pip
cache-dependency-path: pyproject.toml
- run: pip install --upgrade pip
- run: python -m pip install --upgrade pip
# gurobipy ships a size-limited licence (2000 variables / 2000
# constraints). That is useless at genome scale but ample for the small
# fixtures here, and it gives the cross-solver check a second solver to
Expand All @@ -114,19 +119,3 @@ jobs:
RAVEN_ROOT: ${{ github.workspace }}/.raven
PYTHONUNBUFFERED: "1"

docs:
name: docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: "3.12"
cache: pip
cache-dependency-path: pyproject.toml
- run: pip install --upgrade pip
# The package (with autodoc's import-time extras) plus the docs toolchain.
- run: pip install -e ".[excel]" -r docs/requirements.txt
# ``-W --keep-going`` keeps the docs build warning-clean; mirrors the
# ReadTheDocs build (docs/conf.py + .readthedocs.yaml).
- run: sphinx-build -b html -W --keep-going docs docs/_build/html
20 changes: 8 additions & 12 deletions .github/workflows/parity-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,12 @@ jobs:
name: genome-scale parity
# Forks do not have the secrets, and a scheduled run there would fail every
# night for no reason.
if: github.repository == 'SysBioChalmers/raven-toolbox'
if: github.repository == 'CompMetEng/raven-toolbox'
runs-on: ubuntu-latest
# Measured against the classic INIT MILP this job used to check (now
# ftINIT's run_ftinit, bounded to time_limit=600s -- see
# tests/parity/test_genome_scale.py): that extraction took ~68 minutes on
# a fast workstation, of which only ~2 were parsing and copying, and
# time_limit did not bound the call -- a 60-second limit still ran for
# well over 15 minutes -- so the real stop was pytest-timeout below. This
# budget is comfortably larger than ftINIT's bound so a runaway is still
# reported as a test failure instead of a killed job.
# The extraction is run_ftinit bounded to time_limit=600s (see
# tests/parity/test_genome_scale.py). This budget is comfortably larger
# than that bound, so a runaway is reported as a test failure by
# pytest-timeout below instead of a killed job.
timeout-minutes: 150

steps:
Expand All @@ -51,8 +47,8 @@ jobs:
- name: Check out MATLAB RAVEN
uses: actions/checkout@v5
with:
repository: SysBioChalmers/RAVEN
ref: develop3
repository: CompMetEng/RAVEN
ref: develop
path: .raven

- uses: actions/setup-python@v6
Expand All @@ -61,7 +57,7 @@ jobs:
cache: pip
cache-dependency-path: pyproject.toml

- run: pip install --upgrade pip
- run: python -m pip install --upgrade pip
- run: pip install -e ".[dev]" gurobipy

# Fail here, loudly, rather than let the tests skip and the job go green
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
python-version: "3.12"
cache: pip
cache-dependency-path: pyproject.toml
- run: pip install --upgrade pip
- run: python -m pip install --upgrade pip
- run: pip install build
- run: python -m build

Expand Down Expand Up @@ -115,7 +115,7 @@ jobs:
# Trusted Publishing: PyPI verifies this workflow's OIDC identity, so no
# long-lived token is stored in the repo. Requires a one-time publisher on
# PyPI for raven-toolbox with:
# owner: SysBioChalmers repo: raven-toolbox
# owner: CompMetEng repo: raven-toolbox
# workflow: release.yml environment: pypi
environment: pypi
permissions:
Expand Down
28 changes: 0 additions & 28 deletions .readthedocs.yaml

This file was deleted.

Loading
Loading