Skip to content

Commit

Permalink
restructured the entire repo as per maven standards
Browse files Browse the repository at this point in the history
  • Loading branch information
shalinshah1993 committed Jun 1, 2018
1 parent 503531b commit cbb9c16
Show file tree
Hide file tree
Showing 121 changed files with 19,934 additions and 44 deletions.
298 changes: 298 additions & 0 deletions overview.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,298 @@
<!DOCTYPE PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Simulation Core Library: Documentation</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="page-type" content="documentation">
<meta name="Author" content="Andreas Dr&auml;ger, Roland Keller, Alexander D&ouml;rr">
<meta name="keywords" content="Simulation Core Library; Java; JSBML; source code; example; introduction; documentation">
<meta name="description" content="A brief overview of the Simulation Core Library including source code examples.">
<meta name="allow-search" content="yes">
<meta name="page-topic" content="Simulation Core Library">

<!-- Generated by JavaCode4Web (philipphauer.de): -->
<style type="text/css">
<!--
code.spoiled span.keyword {
color: #660033;
font-weight:bold;
}
code.spoiled span.comment-javadoc {
color:#3f5fbf;
}
code.spoiled span.comment-multi {
color:#3f7f5f;
}
code.spoiled span.stringliteral, code.spoiled span.charliteral {
color:#cc0000;
}
code.spoiled span.comment-single {
color:#336633;
}
code.spoiled span.javadoc-tag {
font-weight:bold;
color:#003399;
}
code.spoiled {
white-space:nowrap;
display:block;
font-family:"Courier New", Courier, monospace;
font-size:13px;
background: #e9f2f8;
border:1px solid #006481;
border-left:3px solid #006481;
overflow-y: hidden;
overflow-x: scroll;
padding: 10px;
}
code.spoiled span.class {
color: 0033cc;
font-weight:bold;
}
code.spoiled span.method {
color: 0033cc;
}
-->
</style>
</head>

<body>

<h2>Simulation Core Library: Documentation</h2>

<h3>About Simulation Core Library</h3>
<p>
The Java&#8482; API Simulation Core Library comprises a collection of
integrators for differential equation systems combined with an interpreter
for the Systems Biology Markup Language
(<a href="http://sbml.org" target="_blank">SBML</a>).
It is the first simulation library that is based on
<a href="http://sbml.org/Software/JSBML/" target="_blank">JSBML</a>.
The user can read an SBML model and simulate it with one of the provided
numerical integration routines. All SBML levels and versions are
supported.
The library can easily be integrated into customized software, such as
parameter estimation tools.
</p>
<p style="border-style:solid; border-color:#A51E37; padding: 10px;">
<b>When using the Simulation Core Library, please cite</b>:<br/>
Roland Keller, Alexander D&#246;rr, Akito Tabira, Akira Funahashi, Michael
J. Ziller, Richard Adams, Nicolas Rodriguez, Nicolas Le Nov&#232;re,
Noriko Hiroi, Hannes Planatscher, Andreas Zell, and Andreas Dr&#228;ger.
The systems biology simulation core algorithm. BMC Systems Biology, 7:55,
July 2013. [ <a href="http://dx.doi.org/10.1186/1752-0509-7-55">DOI</a> |
<a href="http://www.biomedcentral.com/1752-0509/7/55">link</a> |
<a href="http://www.biomedcentral.com/content/pdf/1752-0509-7-55.pdf">pdf</a> ]
</p>

<h3>How to integrate Simulation Core Library into your software?</h3>
<p>
You just have to add the provided jar-file simulation-core-library.jar to the class path of your Java project.
Then you have access to all classes of the library.
This library depends on the following third-party libraries:
<ul>
<li><a href="http://commons.apache.org/math/" target="_blank">Commons-math-2.2.jar</a></li>
<li><a href="http://www.junit.org/" target="_blank">JUnit-4.8.jar</a></li>
<li><a href="http://sbml.org/Software/JSBML" target="_blank">JSBML</a></li>
</ul>
For <a href="http://sed-ml.org/" target="_blank">SED-ML</a> support, the following
additional libraries are required:
<ul>
<li><a href="http://commons.apache.org/proper/commons-io/" target="_blank">commons-io-1.4.jar</a></li>
<li><a href="http://jaxen.codehaus.org/apidocs/" target="_blank">jaxen-1.1.1.jar</a></li>
<li><a href="http://www.jdom.org/docs/apidocs.1.1/" target="_blank">jdom-contrib.jar</a></li>
<li><a href="http://www.jdom.org/docs/apidocs.1.1/" target="_blank">jdom.jar</a></li>
<li><a href="http://jlibsedml.sourceforge.net" target="_blank">jlibsedml.jar</a></li>
<li><a href="http://sourceforge.net/projects/jmathml/" target="_blank">jmathml.jar</a></li>
<li><a href="http://www.xom.nu/" target="_blank">xom-1.2.1.jar</a></li>
</ul>
Please make sure to include the correct third-party libraries into your
class path before working with this library.
</p>

<h3>The provided integration methods</h3>
<p>
The {@link org.simulator.math.odes.RosenbrockSolver} is best suitable for integrating stiff differential
equation systems and also has a precise timing of SBML events. It is taken
and adapted from
<a href="http://www.math.hmc.edu/clinic/projects/2010/" target="_blank">Kotcon <i>et al.</i> (2011)</a>
</p><p>
Several further solvers have been taken from the
<a href="http://commons.apache.org/math/" target="_blank">Apache Commons
Math Library</a> and wrapped into our library:
<ul>
<li>{@link org.simulator.math.odes.AdamsBashforthSolver}</li>
<li>{@link org.simulator.math.odes.AdamsMoultonSolver}</li>
<li>{@link org.simulator.math.odes.DormandPrince54Solver}</li>
<li>{@link org.simulator.math.odes.DormandPrince853Solver}</li>
<li>{@link org.simulator.math.odes.GraggBulirschStoerSolver}</li>
<li>{@link org.simulator.math.odes.HighamHall54Solver}</li>
</ul>

The following solvers have been implemented additionally and are fast, but
not suitable for all differential equation systems:
<ul>
<li>{@link org.simulator.math.odes.EulerMethod}</li>
<li>{@link org.simulator.math.odes.RungeKutta_EventSolver}</li>
</ul>
</p><p>
For a full list of available solvers, see {@link org.simulator.math.odes}.
</p>

<h3>Reading an SBML model and creating the respective differential equation
system</h3>
<p>
A model can be read in by using the {@link org.sbml.jsbml.SBMLReader}
class from <a href="http://sbml.org/Software/JSBML" target="_blank">JSBML</a>.
With the model in memory the {@link org.simulator.sbml.SBMLinterpreter}
can create the differential equation system that provides the basis for
simulation:
</p>
<pre><code class="spoiled">
<span class="class">Model</span> model = (<span class="keyword">new</span> <span class="class">SBMLReader</span>()).<span class="method">readSBML</span>(sbmlfile).<span class="method">getModel()</span>;<br/>
<span class="class">SBMLinterpreter</span> interpreter = <span class="keyword">new</span> <span class="class">SBMLinterpreter</span>(model);
</code></pre>
<p>
For more documentation about working with SBML models in simulations see
{@link org.simulator.sbml}.
</p>

<h3>Simulation of a differential equation system</h3>
<p>
The created differential equation system can then be simulated with a
chosen solver and given time points.
The result is stored in a data structure called
{@link org.simulator.math.odes.MultiTable}.
</p>
<pre><code class="spoiled">
<span class="class">AbstractDESSolver</span> solver = <span class="keyword">new</span> <span class="class">RosenbrockSolver</span>();<br/>
<span class="keyword">double</span>[] timePoints = {0.0, 0.1, 0.2, 0.3, 0.4, 0.5};<br/>
<span class="class">MultiTable</span> solution = solver.<span class="method">solve</span>(interpreter, interpreter.<span class="method">getInitialValues</span>(), timePoints);
</code></pre>

<h3>Using SED-ML for simulation</h3>
<p>
The following example shows how to read in a {@link java.io.File} f (in
<a href="http://sed-ml.org/" target="_blank">SED-ML</a> format) and how to run a simulation
described in this file afterwards. The simulation results are stored in a
{@link org.simulator.math.odes.MultiTable}:
</p>

<pre><code class="spoiled">
<span class="class">SEDMLDocument</span> doc = <span class="class">Libsedml</span>.<span class="method">readDocument</span>(f);<br/>
<span class="class">SedML</span> sedml = doc.<span class="method">getSBMLModel</span>();<br/>
<span class="class">Output</span> wanted = sedml.<span class="method">getOutputs</span>().<span class="method">get</span>(0);<br/>
<span class="class">SedMLSBMLSimulatorExecutor</span> exe = <span class="keyword">new</span> <span class="class">SedMLSBMLSimulatorExecutor</span>(sedml, wanted);<br/>
<span class="class">Map<Task, IRawSedmlSimulationResults></span> res = exe.<span class="method">runSimulations</span>();<br/>
<span class="class">MultiTable</span> solution = exe.<span class="method">processSimulationResults</span>(wanted, res);<br/>
</code></pre>

<p>
For more information about how to use SED-ML to execute your simulation
experiments, see {@link org.simulator.sedml}.
</p>

<h3>Simulation of the models in the SBML Test Suite</h3>
<p>
You can run the simulation of the models in the
<a href="http://sbml.org/Facilities/Online_SBML_Test_Suite" target="_blank">SBML Test
Suite</a> by using the command below. <i>TestSuiteDirectory</i> denotes
the directory containing your copy of the (entire) SBML test suite.
Here we assume that the actual test cases are located in the sub-folder
<i>cases/semantic/</i> within the <i>TestSuiteDirectory</i> on your
computer.
The simulation is conducted for the models with numbers from <i>first</i>
to <i>last</i> (these numbers are the indices of the models in the test
suite, without leading zeros).
</p>
<pre><code class="spoiled">
java -cp SimulationCoreLibrary_vX.Y_incl-libs.jar org.simulator.SBMLTestSuiteRunner TestSuiteDirectory/cases/semantic/ first last
</code></pre>
Please note that, you have to replace <i>_vX.Y_</i> within the library's
name by the current release number, e.g., 1.2.
<p>
For example, if you like to simulate all test suite models ranging from
<i>00259</i> to <i>00326</i>, simply call the algorithm with
<i>first = 259</i> and <i>last = 326</i>.
</p>

<p>
Note that for the sake of a simple configuration, the simulation is
started using default settings for the selection of the
integration routine, step size etc.
</p>

<p>
The
<a href="http://sbml.org/Facilities/Database/Simulator">SBML Test Suite Database</a>
provides an up-to-date overview about the
capabilities of various SBML-compliant solver implementations.
</p>

<h3>Simulation of the models from BioModels database</h3>
<p>
In a similar way, you can also download and simulate all models from
<a href="http://www.ebi.ac.uk/biomodels-main/" target="_blank">BioModels database</a>:
<pre><code class="spoiled">
java -cp SimulationCoreLibrary_vX.Y_incl-libs.jar org.simulator.TestBiomodels BioModelsDirectory/ first last
</code></pre>
Again, you have to replace <i>_vX.Y_</i> within the library's
name by the current release number, e.g., 1.2. Please use the variables
<i>first</i> and <i>last</i> without leading zeros as in the previous
case. The variable <i>BioModelsDirectory</i> gives the path to your local
copy of
<a href="http://www.ebi.ac.uk/biomodels-main/" target="_blank">BioModels database</a>.
</p>
<p>
As in the previous case, the simulation is conducted using default
settings.
</p>

<h3>Listening to SBML constraint violation</h3>
<p>
In version 1.3 a new listener interface has been added to
this library, which can be used to perform user-defined actions upon violation
of a {@link org.sbml.jsbml.Constraint}'s math expression during a simulation.
A simple implementation is already included in this package,
which logs violation at the
{@link java.util.logging.Level#WARNING} using standard Java&trade;
logging (see {@link java.util.logging.Logger}).
By default the
{@link org.simulator.sbml.SBMLinterpreter} adds this
{@link org.simulator.sbml.SimpleConstraintListener} to its internal list of
{@link org.simulator.sbml.ConstraintListener}s.
</p>

<p>
You can remove this listener by calling the method
{@link org.simulator.sbml.SBMLinterpreter#removeConstraintListener(int)},
with the argument 0 for the first listener in the list,
and add your own listener implementation with the help of method
{@link org.simulator.sbml.SBMLinterpreter#addConstraintListener(ConstraintListener)}.
</p>
<p>The following example demonstrates how you can easily define your customized
{@link org.simulator.sbml.ConstraintListener}:
<pre><code class="spoiled">
<span class="keyword">double</span> timeEnd = 5d;<br/>
<span class="class">SBMLDocument</span> doc = <span class="class">SBMLReader</span>.<span class="method">read</span>(<span class="keyword">new</span> <span class="class">File</span>(<span class="stringliteral">"path/to/file.xml"</span>));<br/>
<span class="class">SBMLinterpreter</span> interpreter = <span class="keyword">new</span> <span class="class">SBMLinterpreter</span>(doc.<span class="method">getModel</span>());<br/>
interpreter.<span class="method">addConstraintListener</span>(<span class="keyword">new</span> <span class="class">ConstraintListener</span>() {<br/>
&#160;&#160;<span class="comment-single">/* (non-Javadoc)<br/>
&#160;&#160;&#160;* @see org.simulator.sbml.ConstraintListener#processViolation(org.simulator.sbml.ConstraintEvent)<br/>
&#160;&#160;&#160;*/</span><br/>
&#160;&#160;public <span class="keyword">void</span> <span class="method">processViolation</span>(<span class="class">ConstraintEvent</span> evt) {<br/>
&#160;&#160;&#160;&#160;<span class="class">System</span>.err.<span class="method">println</span>(<span class="stringliteral">"Constraint violated at time "</span> + evt.<span class="method">getTime</span>() + <span class="stringliteral">": "</span> + evt.<span class="method">getSource</span>().<span class="method">getMath</span>().<span class="method">toFormula</span>());<br/>
&#160;&#160;}<br/>
});<br/>
solver.<span class="method">solve</span>(interpreter, interpreter.<span class="method">getInitialValues()</span>, 0d, timeEnd);
</code></pre>
</p>
<p>
You can find more details about this topic in the description of package
{@link org.simulator.sbml}.
</p>

</body>

</html>
48 changes: 4 additions & 44 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -141,13 +141,6 @@
<!-- =================================================================== -->

<repositories>
<!-- Local libraries are an in-project repository -->
<!-- Add the dependencies and put them in -->
<!-- ${project.basedir}/lib/groupId/artifactId/version/ -->
<repository>
<id>libs</id>
<url>file://${project.basedir}/lib</url>
</repository>
<!-- Adding repository to download latest jlibSBML -->
<repository>
<id>JSBML-SNAPSHOT</id>
Expand Down Expand Up @@ -212,21 +205,21 @@
<artifactId>scpsolver</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/nmi/scpsolver/1.0/scpsolver-1.0.jar</systemPath>
<systemPath>${project.basedir}/src/lib/nmi/scpsolver/1.0/scpsolver-1.0.jar</systemPath>
</dependency>
<dependency>
<groupId>nmi</groupId>
<artifactId>glpksolver</artifactId>
<version>4.35</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/nmi/scpsolver/1.0/GLPKSolverPack.jar</systemPath>
<systemPath>${project.basedir}/src/lib/nmi/scpsolver/1.0/GLPKSolverPack.jar</systemPath>
</dependency>
<dependency>
<groupId>nmi</groupId>
<artifactId>lpsolver</artifactId>
<version>5.5.2.5</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/nmi/scpsolver/1.0/LPSOLVESolverPack.jar</systemPath>
<systemPath>${project.basedir}/src/lib/nmi/scpsolver/1.0/LPSOLVESolverPack.jar</systemPath>
</dependency>
<dependency>
<groupId>junit</groupId>
Expand All @@ -251,40 +244,7 @@

<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>

<resources>
<resource>
<directory>resources</directory>
<filtering>true</filtering>
</resource>
<!-- <resource>
<directory>.</directory>
</resource> -->
</resources>

<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.basedir}/src/</source>
<source>${project.basedir}/examples/</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>


<pluginManagement>
<plugins>
<!-- Download source code in Eclipse, best practice [OPTIONAL!] -->
Expand Down
Binary file added src/lib/UmlGraph.jar
Binary file not shown.
Binary file added src/lib/commons-math-2.2-src.zip
Binary file not shown.
Binary file added src/lib/commons-math-2.2.jar
Binary file not shown.
Binary file not shown.
Binary file added src/lib/ext-lib/commons-io-1.4.jar
Binary file not shown.
Binary file added src/lib/ext-lib/jaxen-1.1.1.jar
Binary file not shown.
Binary file added src/lib/ext-lib/jdom-contrib.jar
Binary file not shown.
Binary file added src/lib/ext-lib/jdom.jar
Binary file not shown.
Binary file added src/lib/ext-lib/jmathml.jar
Binary file not shown.
Binary file added src/lib/ext-lib/xom-1.2.1.jar
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added src/lib/lp-lib/GLPKSolverPack.jar
Binary file not shown.
Binary file added src/lib/lp-lib/LPSOLVESolverPack.jar
Binary file not shown.
Binary file added src/lib/nmi/scpsolver/1.0/GLPKSolverPack.jar
Binary file not shown.
Binary file added src/lib/nmi/scpsolver/1.0/LPSOLVESolverPack.jar
Binary file not shown.
Binary file added src/lib/nmi/scpsolver/1.0/SCPSolver-1.0.jar
Binary file not shown.
Binary file not shown.
Binary file added src/lib/org/sbml/JSBML/1.3.1/jsbml-1.3.1.jar
Binary file not shown.
Loading

0 comments on commit cbb9c16

Please sign in to comment.