Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
aba00c6
feat(optsolvx): add OptSolvXAdapter with model validation and debug l…
xts-Michi Aug 6, 2025
be38d5c
feat(optsolvx): add working demo
xts-Michi Aug 10, 2025
1c63b82
test(optsolvx): add JUnit test for OptSolvXSolverAdapter (build check…
xts-Michi Aug 10, 2025
36e4b99
Updated README with OptSolvX User Guide
xts-Michi Aug 10, 2025
6ac8cc0
test: added more tests
xts-Michi Aug 10, 2025
e72f950
feat: added better error handling and a timer to track the time while…
xts-Michi Aug 10, 2025
c8edbe4
feat: add SBML to OptSolvX bridge skeleton (FbaToOptSolvX)
xts-Michi Aug 19, 2025
ae03792
feat(sbscl): harden OptSolvXSolverAdapter (final + null-check + 1-arg…
xts-Michi Aug 20, 2025
f2afc17
feat(sbscl-bridge): add FbaToOptSolvX to map SBML/FBC (reactions, bou…
xts-Michi Aug 20, 2025
a64d24c
feat(sbscl): add OptSolvX bridge skeleton (FbaToOptSolvX) + smoke/obj…
xts-Michi Aug 20, 2025
6c7e239
docs(README): add “Using OptSolvX” section (demo, debug flag) and not…
xts-Michi Aug 20, 2025
d9bdc0c
feat(fba): switch default LP backend to OptSolvX (FBA only)
xts-Michi Aug 21, 2025
2976e25
build(pom), docs(readme): exclude legacy XML parsers & add troublesho…
xts-Michi Aug 23, 2025
902f796
refactor(fba): remove unused epsilon field and accessors
xts-Michi Aug 25, 2025
d940dbd
perf(sbscl-bridge): cache SBML lists/ids and pre-size maps to avoid r…
xts-Michi Aug 26, 2025
72e3e2c
fix(sbscl): add Commons Math 2.x dependency for legacy ODE API
xts-Michi Aug 26, 2025
84c7303
fix(fba): restore getActiveObjective() for API/test compatibility
xts-Michi Aug 26, 2025
5ea0c98
test(optsolvx): add BridgeConstraintTests for S·v=0 (counts, signs/va…
xts-Michi Aug 26, 2025
774280c
refactor(fba): remove legacy SCPSolver/GLPK backend (NewGLPKSolver + …
xts-Michi Aug 26, 2025
d137a9b
docs(README): Updated a small fix
xts-Michi Aug 27, 2025
08fbb93
style: reformat codebase for consistency (no functional changes)
xts-Michi Aug 29, 2025
a252828
refactor(demo): use OptSolvXConfig for backend resolution; drop hardc…
xts-Michi Aug 29, 2025
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
31 changes: 31 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,32 @@ Further examples can be found directly within this repository in the [Examples P
* How to run a [stochastic simulation](https://github.com/draeger-lab/SBSCL/blob/master/src/main/java/fern/Start.java)


## Using OptSolvX (LP) in SBSCL

### Run the OptSolvX demo

* In your IDE, run: `org.simulator.optsolvx.OptSolvXDemo`.
* The demo builds a tiny LP and solves it via OptSolvX (CommonsMath backend for now).
* Make sure the OptSolvX **jdk8** artifact is on the classpath (declared in SBSCL’s `pom.xml`).

*Note:* FBA in SBSCL now uses OptSolvX by default.

### Enable debug logs

Create the adapter with `debug = true`:

```java
LPSolverAdapter solver =
new OptSolvXSolverAdapter(new CommonsMathSolver(), true);
```

You can also pick a backend via `-Doptsolvx.backend=<fqcn>` or env `OPTSOLVX_BACKEND`.

### (Preview) SBML/FBC → LP

An experimental entry point is available at `org.simulator.optsolvx.FbaToOptSolvX`.


### Comparison to Similar Libraries

To compare SBSCL to other simulation engines and to benchmark its predictions and results, a separate project, [SBSCL simulator comparison](https://github.com/matthiaskoenig/sbscl-simulator-comparison), is available.
Expand Down Expand Up @@ -117,6 +143,11 @@ The package structure in more detail:

Please e-mail any bugs, problems, suggestions, or issues regarding this library to the bug tracker at https://github.com/draeger-lab/SBSCL/issues

### Note on XML parsers (JDK ≥ 17)

SBSCL excludes legacy `xercesImpl`, `xml-apis`, and `xalan` (pulled transitively by `jlibsedml`) to avoid JAXP compatibility issues on modern JDKs (e.g., an `AbstractMethodError` during Log4j2 XML configuration).
If you rely on specific Xerces/Xalan features, please open an issue so we can provide an opt-in solution

## Licensing terms

This file is part of Simulation Core Library, a Java-based library for efficient numerical simulation of biological models.
Expand Down
56 changes: 37 additions & 19 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -411,20 +411,44 @@
<artifactId>jmathml</artifactId>
<version>2.1.0</version>
</dependency>

<!--
Exclude legacy XML parser stack for compatibility with modern JDKs.
Reason: xercesImpl/xml-apis/xalan can shadow the JDK's JAXP on JDK 17/22
and trigger AbstractMethodError during Log4j2 XML configuration.
If anyone needs explicit Xerces/Xalan features, please open an issue.
(See SBSCL issue #91)
-->
<dependency>
<groupId>org.jlibsedml</groupId>
<artifactId>jlibsedml</artifactId>
<version>2.2.3</version>
<exclusions>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</exclusion>
<exclusion>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</exclusion>
<exclusion>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math</artifactId>
<version>2.2</version>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>

<!-- Commons Math 2.x (ODE API used under org.apache.commons.math.ode.*) -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
<artifactId>commons-math</artifactId>
<version>2.2</version>
</dependency>

<dependency>
Expand All @@ -439,26 +463,12 @@
</dependency>

<!-- LP solvers -->
<dependency>
<groupId>scpsolver</groupId>
<artifactId>SCPSolver</artifactId>
<version>1.0v2</version>
</dependency>
<dependency>
<groupId>scpsolver</groupId>
<artifactId>GLPKSolverPack</artifactId>
<version>4.35v2</version>
</dependency>
<dependency>
<groupId>scpsolver</groupId>
<artifactId>LPSOLVESolverPack</artifactId>
<version>5.5.2.5</version>
</dependency>
<dependency>
<groupId>kisao</groupId>
<artifactId>libkisao</artifactId>
<version>1.0.3.1-rc</version>
</dependency>

<!-- OMEX archive -->
<dependency>
<groupId>de.uni-rostock.sbi</groupId>
Expand All @@ -471,6 +481,14 @@
</exclusion>
</exclusions>
</dependency>

<!-- OptSolvX -->
<dependency>
<groupId>org.optsolvx</groupId>
<artifactId>optsolvx</artifactId>
<version>0.1.0-SNAPSHOT</version>
<classifier>jdk8</classifier>
</dependency>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please place a local lib file of OptSolvX and use a local dependency for the time being, until we have it in MavenCentral.

</dependencies>


Expand Down
Binary file not shown.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

14 changes: 0 additions & 14 deletions src/lib/maven/scpsolver/GLPKSolverPack/maven-metadata-local.xml

This file was deleted.

This file was deleted.

This file was deleted.

Binary file not shown.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

12 changes: 0 additions & 12 deletions src/lib/maven/scpsolver/LPSOLVESolverPack/maven-metadata-local.xml

This file was deleted.

This file was deleted.

This file was deleted.

Binary file not shown.

This file was deleted.

This file was deleted.

9 changes: 0 additions & 9 deletions src/lib/maven/scpsolver/SCPSolver/1.0v2/SCPSolver-1.0v2.pom

This file was deleted.

This file was deleted.

This file was deleted.

14 changes: 0 additions & 14 deletions src/lib/maven/scpsolver/SCPSolver/maven-metadata-local.xml

This file was deleted.

This file was deleted.

This file was deleted.

3 changes: 0 additions & 3 deletions src/lib/register_maven_jars.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,4 @@
LIB_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )

# register
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -DgroupId=scpsolver -DartifactId=SCPSolver -Dversion=1.0v2 -Dfile=nmi/scpsolver/1.0/SCPSolver-1.0v2.jar -DlocalRepositoryPath=${LIB_DIR}/maven -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -DgroupId=scpsolver -DartifactId=GLPKSolverPack -Dversion=4.35v2 -Dfile=nmi/scpsolver/1.0/GLPKSolverPack-4.35v2.jar -DlocalRepositoryPath=${LIB_DIR}/maven -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -DgroupId=scpsolver -DartifactId=LPSOLVESolverPack -Dversion=5.5.2.5 -Dfile=nmi/scpsolver/1.0/LPSOLVESolverPack-5.5.2.5.jar -DlocalRepositoryPath=${LIB_DIR}/maven -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -DgroupId=kisao -DartifactId=libkisao -Dversion=1.0.3.1-rc -Dfile=kisao/LibKiSAO/1.0.3.1/libkisao-1.0.3.1-rc.jar -DlocalRepositoryPath=${LIB_DIR}/maven -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true
Binary file not shown.
Binary file not shown.
Binary file removed src/lib/sbml_test_runner_wrapper/SCPSolver-1.0v2.jar
Binary file not shown.
Loading