Posts

Es werden Posts vom August, 2025 angezeigt.

OptSolvX in SBSCL: A Solver-Agnostic LP Core (GSoC 2025 Final Report)

Bild
Enhancing the Systems Biology Simulation Core Library (SBSCL) with a Solver-Agnostic Framework for Constraint-Based Simulation and Analysis National Resource of Network Biology (NRNB) Google Summer of Code 2025 Final Report Name Michael Gaas Mentors           Prof. Dr. Andreas Dräger, Matthias König Overview This work modernizes constraint-based simulation in the Systems Biology Simulation Core Library (SBSCL) by introducing a solver-agnostic linear programming (LP) core (OptSolvX), a thin integration layer within SBSCL, and a bridge from SBML/FBC to linear programs. The objective is to restore robust, portable Flux Balance Analysis (FBA) on current platforms, including ARM-based systems, while preserving SBSCL’s public API and keeping solver-specific concerns decoupled from biological model handling. Implementation Summary OptSolvX provides a minimal, solver-agnostic LP domain model with AbstractLPModel, Variable, Constraint, OptimizationDirection,...

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 FluxBalanceAnalysis now resolves the backend via ServiceLoader with fallback, using the OptSolvX adapter by default. FbaToOptSolvX remains the central SBML FBC → LP translation layer. ODE compatibility fix Re-added commons-math:2.2 (alongside commons-math3:3.6.1 ) for legacy ODE APIs. Project builds cleanly again without org.apache.commons.math.ode e...

Week 10 - Bridge Prototype and Classpath Fix

This week I brought the first pieces of the SBML-to-LP bridge to life, fixed a classpath issue that blocked tests, and refreshed docs and the pending PR. I also ran the bridge on the E. coli core model end-to-end. Progress Bridge scaffolding running (now on a real model) Implemented a minimal FbaToOptSolvX path that builds an LP and executes. End-to-end with SBSCL on E. coli core : the bridge emits an LP with 95 variables and 72 constraints , objective direction MAXIMIZE . Solver: OptSolvX → CommonsMath backend. Results: feasible = true , objective ≈ 0.874 , typical solve time ~70–170 ms . Smoke & objective tests (JDK 22) Both focused tests complete with exit code 0. Example logs: INFO: FbaToOptSolvX: built LP (vars=95, cons=72, objectiveVars=1, dir=MAXIMIZE) INFO: OptSolvXSolverAdapter: result feasible=true, objective=0.874 Classpath fix Root cause: legacy XML parser jars shadowed the JDK’s JAXP and triggered Log4j2’s XML-parser feature toggles to fail...

Week 9 - OptSolvX Integration into SBSCL and Bridge Preparation

In the past week, I focused on implementing the OptSolvX integration in SBSCL, adding tests and documentation, and preparing the groundwork for the SBML-to-LP bridge. Progress: SBSCL – OptSolvX Adapter: Implemented org.simulator.optsolvx.OptSolvXSolverAdapter (implements LPSolverAdapter ) with checks for model != null and model.isBuilt() . Added debug logging via MessageFormat , including before/after states and runtime measurement. Solver calls are delegated to the existing CommonsMathSolver . New Demo in SBSCL: Added org.simulator.optsolvx.OptSolvXDemo running a minimal LP example ( max x + y , with constraints x + 2y ≤ 4 and x ≤ 3 ). Expected result: x = 3.0 , y = 0.5 , objective 3.5 , feasible true . New Tests: Created OptSolvXSolverAdapterTest covering: Null model handling ( IllegalArgumentException ) Build requirement check ( IllegalStateException ) Minimization case with equality and bounds ( x = 0 , y = 5 , objective 5 ). All d...