Week 11 - Legacy Backends Removed, Bridge Constraints, and Build Fixes
This week I removed the old SCPSolver/GLPK stack, confirmed OptSolvX as the default solver path in SBSCL, fixed an ODE compatibility issue, and extended constraint tests for the bridge.
Progress
Legacy backends removed (SCPSolver/GLPK/Lp_solve)
-
Deleted
org.simulator.fba.NewGLPKSolver. -
Dropped Maven dependencies for SCPSolver, GLPK, and Lp_solve.
-
Verification:
-
mvn -DskipTests clean compile→ BUILD SUCCESS -
mvn dependency:tree | grep -i "scpsolver\|glpk\|lpsolve"→ no results -
Only references left are in legacy test scripts outside the Maven build.
-
OptSolvX confirmed as the default path
-
FluxBalanceAnalysisnow resolves the backend viaServiceLoaderwith fallback, using the OptSolvX adapter by default. -
FbaToOptSolvXremains the central SBML FBC → LP translation layer.
ODE compatibility fix
-
Re-added
commons-math:2.2(alongsidecommons-math3:3.6.1) for legacy ODE APIs. -
Project builds cleanly again without
org.apache.commons.math.odeerrors.
Bridge constraint tests (S·v = 0)
-
New
BridgeConstraintTestscover:-
unitStoich_reactant_negativeSign_and_count -
nonUnitStoich_signs_and_values(net +0.5 for 3.5 → 4.0) -
species_on_both_sides_netZero_should_not_create_constraint -
summing_across_multiple_reactions_and_filter_zero_entries -
boundary_species_are_ignored -
ignore_species_with_no_participation -
multiple_species_constraint_counts_and_per_species_entries
-
-
Existing
BridgeSmokeTestandBridgeObjectiveTestremain green.
Small performance and code hygiene
-
Bridge caches SBML lists/IDs and presizes maps.
-
Unified comment sections for consistency
Logs and behavior
-
Expected warning when FBC objective is not set:
WARNING: FBC Objective not set; using empty objective (objective=0). -
Example build log from tests:
INFO: FbaToOptSolvX: built LP (vars=2, cons=2, objectiveVars=0, dir=MAXIMIZE)
Next steps
-
Complete the full FBC → LP mapping (bounds, objectives, reaction constraints, variable naming, objective sense).
-
Add integration tests on small BiGG-style FBC models and edge cases (unbounded, infeasible, multiple objectives).
-
Decide on OptSolvX distribution until a public Maven release is available:
-
Local
mvn installwith snapshot, or -
GitHub Packages, or
-
Vendor JAR under
src/lib/mavenwith install script, or -
Wrapper task to fetch on build.
-
-
Clean up remaining legacy test scripts and jars outside the Maven build if no longer needed.
That’s it for this week - see you next week!
Project Details
GitHub Repository: OptSolvX GitHub
Weekly Meeting: Every Monday at 11:00 AM (Berlin time)
Original Project Idea (NRNB Issue): Google Summer of Code Issue #259
Kommentare
Kommentar veröffentlichen