Releases: sys-bio/roadrunner
v2.1.3
Bugfix release! New since 2.1.1:
- NamedArray working better in Python
- The 'simulate' function no longer retains extra information from previous calls, particularly the 'times' vector argument.
v2.1.2
Fixed problem with NamedArray
repr vs str.
v2.1.1 experimental
Experimental release of roadrunner v2.1.1
Changes since 2.1.0:
- Bug fix: conversion of NamedArray more robust.
v2.1.1
Roadrunner v2.1.1 full release
Changes since 2.1.0:
- Bug Fix: conversion of NamedArray more robust.
v2.1.0
Full release of roadrunner. The new features since the experimental 2.0.10 release include:
- Ability to pickle the roadrunner object.
- Save state in memory as well as to file whereas before you could only save state to file.
- New argument 'times' to the 'simulate' function for requested output times.
- More complete support for SBML L3v2 (particularly the use of empty objects and use of boolean values in numeric contexts, and visa versa).
- Can set/get the id and name of the model from the roadrunner object.
- Allow negative start times in 'simulate'.
- Re-introduce rrplugins that had been dropped when the new plugin system was devised.
- Add set/getHasOnlySubstanceUnits to the roadrunner objects for species.
- Functions that had been marked as 'deprecated' are no longer marked as such.
- Implemented two new steady state solvers, newton and linesearch which use sundials library.
- Implemented support for time series sensitivities.
Bug fix highlights:
- NamedArray objects more robust.
- Various memory leaks fixed.
- Clean up Gillespie simulation options.
- 'reset' and 'resetAll' now function as expected: 'reset' only resets variables changed by reactions and rate rules; 'resetAll' now resets all variables. Both use current 'init(x)' values, if they were changed from model load. 'resetToOrigin' continues to work as before, resetting everything back to its initially-loaded state.
v2.0.10
This release is basically the same as v2.0.9 but with a fix to the roadrunner.testing
subpackage in that we now also package and distribute the TestModelFactory
binary.
v2.0.9
In order of implementation, here are the list of additions in v2.0.9
-
More unit tests for C++ API using conventional Googletest
-
More unit tests for Python API using conventional unittests module
-
Added developers documentation
-
Refactoring of
IntegratorFactory
andSteadyStateSolverFactory
. Their logic is identical and so there is no need for duplicated code. The logic was refactored into a superclassRegistrationFactory
andIntegrator
/SteadyStateSolver
Factories now derive from them.SensitivitySolverFactory
was added in a similar fashion. -
Removal of the "Registrar" system. Until now each Solver class needed a side class classed SolverRegistrar. They all do the same thing. This is not only requires twice as many classes but also required static and non-static version of the same methods in the
Solver
classes. The problem was resolved by introducing aRegistrable
interface which is a superclass ofSolver
. The registration system is the same, but the implementation is more elegant (extendable, maintainable etc.). Furthermore, there used to be a managerSolverFactoryMgr
class. This was found to be superfluous (and abuse of abstraction/encapsulation concepts of OOP) - the job of constructing instances ofSolver
objects has been transferred to theRegistrationFactory
s themselves. -
Implemented a
rr::Matrix<T>
template type, which is derived from the ls::Matrix type. The issue is that roadrunners main data type for results is a type fromrr-libstruct
in the dependencies package. However, we need to be able to maintain/extend/tweak this type. Instead of moving rr-libstruct from the dependencies package, this release implements a typerr:Matrix<T>
that derives fromls::Matrix<T>
and extends it to include operations such as comparison operators (operator==
andoperator!=
) as well as analmostEquals
for floating point comparisons and sorting rows/columns by row and column names. -
Implemented a
rr::Matrix3D<IndexType, DataType>
type. This was mainly implemented for storing results of a time series sensitivity analysis, which is a 3D matrix, but has been generalized so that any data type can be stored and any data type can be used as an index. Since time series sensitivities requiresrr::Matrix3D<double, double>
, this is the main data type that theMatrix3D
has been tested with at this time. TheIndexType
is used to store time whereas theDataType
is used to store sensitivity data at each time point. -
Bugfix in
CVODEIntegrator
where initial concentrations were always 0 and not updated insideCVODEIntegrator
but instead by theRoadRunner
class. This caused a bug whereby theCVODEIntegrator
could not be used as a stand alone class. -
Implemented a new set of interfaces for
SensitivitySolver
that derives fromSolver
and distinguishes betweenTimeSeriesSensitivitySolver
andSteadyStateSensitivitySolver
. The main difference between these interfaces is that the return types of the main solve methods are either 3D or 2D matrices respectively. Note -SteadyStateSensitivitySolver
is just a stub to be implemented in a future version. -
Implemented a
ForwardSensitivitySolver
class that implements theTimeSeriesSensitivitySolver
interface. This class uses sundialscvodes
for both integrating the model and for solving the sensitivity equations at each time step. One option for the design is to inherit fromSolver
(viaTimeSeriesSensitivitySolver
andSensitivitySolver
) and fromCVODEIntegrator
. This works but requires changing solver types to use virtual inheritance because of the introduced diamond inheritance problem. Instead, we opt to use composition instead of inheritance and use theCVODEIntegrator
for the main integration routines for code reuse. Options forForwardSensitivitySolver
include choosing parameters for sensitivity analysis (vs all model variables), choosing the nonlinear solver (newton vs fixed point), choosing finite difference approx method (central or forward) and choosing the method of computing sensitivities (either simultaneous or staggered). -
Implemented a typemap in roadrunner's swig-Python bindings for converting
rr::Matrix3D<double, double>
to a 3D numpy.ndarray. The actual return type is a 4-tuple: (1d time array, 3d results array, rownames, column names). TheNamedArray
type was not used because it is Python wizardry. -
Added some interfaces to the
TestModelFactory
test suite so that we can test structural properties, jabobians, mca and eigenvalues using this test suite. These are swigged so that we can implement the same tests from both C++ and Python. Python test suits have been added that useunittest
and they are built in such a way that requires minimal effort to add a test case (developers would add a newTestModel
toTestModelFactory
, implement the desired interfaces and then the relevant test methods should already work. -
Modified Azure pipelines so that the "other" Python tests are actually executed. We make use
pytest
to easily find and run roadrunner-python tests in a Python standard way. -
Solver types have a number of methods inside
RoadRunner
class. They are:getSolver
,getSolverByName
,makeSolver
,getExistingSolverNames
,getRegisteredSolverNames
,setSolver
,SolverExists
, replacing solver with eitherIntegrator
,SteadyState
orSensitivity
. These have been added forSensitivity
solver and the missing ones added forSteadyState
solvers. Notably, there is a lot of duplicated logic here, it should be the subject of future efforts to abstract this logic and to implement it in a generalized way. -
Added an "Examples" section to the documentation, which is populated only by sensitivity examples at this time.
v2.0.8
This is an experimental release. It contains several big changes, including support for kinsol steady state solver (basic newton and linesearch strategies). Other changes are backend only and shouldnt be noticed by the user
2.0.1
Small updates to v2.0.0 to facilitate compilation on MacOSX 10.9
2.0.0
Various updates and bug fixes, including:
- Added ability to edit models in-memory.
- Added save/load feature for roadrunner states.
- Added ability to clone roadrunner states.
- Updated to use newly-released version of SBML 'distributions'.
- Now tested against more of the SBML test suite.
- Removed warnings from build.