Skip to content

Latest commit

 

History

History
109 lines (95 loc) · 3 KB

about.rst

File metadata and controls

109 lines (95 loc) · 3 KB

About AMICI

AMICI provides a multi-language (Python, C++, Matlab) interface to the :term:`SUNDIALS` solvers :term:`CVODES` (for :term:`ODE`s) and :term:`IDAS` (for :term:`DAE`s). AMICI allows the user to read differential equation models specified as :term:`SBML` or :term:`PySB` and automatically compiles such models into Python modules, C++ libraries or .mex simulation files (Matlab).

In contrast to the (no longer maintained) sundialsTB Matlab interface, all necessary functions are transformed into native C++ code, which allows for a significantly faster simulation.

Beyond forward integration, the compiled simulation file also allows for forward sensitivity analysis, steady state sensitivity analysis and adjoint sensitivity analysis for likelihood-based output functions.

The interface was designed to provide routines for efficient gradient computation in parameter estimation of biochemical reaction models but it is also applicable to a wider range of differential equation constrained optimization problems.

Features

Interfaces & workflow

The AMICI workflow starts with importing a model from either :term:`SBML` (Matlab, Python), :term:`PySB` (Python), or a Matlab definition of the model (Matlab-only). From this input, all equations for model simulation are derived symbolically and C++ code is generated. This code is then compiled into a C++ library, a Python module, or a Matlab .mex file and is then used for model simulation.

AMICI workflow

The functionality of the Python, Matlab and C++ interfaces slightly differ, as shown in the following table:

Feature \ Interface Python C++ Matlab
:term:`SBML` import yes (:ref:`details <amici_python_sbml_support>`) no yes (<=R2017b)
:term:`PySB` import yes no no
:term:`DAE` import no no yes
Forward sensitivities yes yes yes
Adjoint sensitivities yes yes yes
Steadystate sensitivities yes yes yes
Second-order sensitivities no no yes
Events yes yes yes
:term:`preequilibration` yes yes yes
:term:`presimulation` yes yes no