# amici.sbml_import¶

## SBML Import¶

This module provides all necessary functionality to import a model specified in the Systems Biology Markup Language (SBML).

Classes

 SbmlImporter(sbml_source[, …]) Class to generate AMICI C++ files for a model provided in the Systems Biology Markup Language (SBML).

Functions Summary

 assignmentRules2observables(sbml_model[, …]) Turn assignment rules into observables. grouper(iterable, n[, fillvalue]) Collect data into fixed-length chunks or blocks Parse noise distribution string to a cost function definition amici can work with. replace_logx(math_str) Replace logX(.) by log(., X) since sympy cannot parse the former smart_subs(element, old, new) Optimized substitution that checks whether anything needs to be done first toposort_symbols(symbols[, field]) Topologically sort symbol definitions according to their interdependency

Functions

amici.sbml_import.assignmentRules2observables(sbml_model, filter_function=<function <lambda>>)[source]

Turn assignment rules into observables.

Parameters
• sbml_model (libsbml.Model) – Model to operate on

• filter_function (typing.Callable) – Callback function taking assignment variable as input and returning True/False to indicate if the respective rule should be turned into an observable.

Returns

A dictionary(observableId:{ ‘name’: observableName, ‘formula’: formulaString })

amici.sbml_import.grouper(iterable, n, fillvalue=None)[source]

Collect data into fixed-length chunks or blocks

grouper(‘ABCDEFG’, 3, ‘x’) –> ABC DEF Gxx”

Parameters
Return type
Returns

itertools.zip_longest of requested chunks

amici.sbml_import.noise_distribution_to_cost_function(noise_distribution)[source]

Parse noise distribution string to a cost function definition amici can work with.

The noise distributions listed in the following are supported. $$m$$ denotes the measurement, $$y$$ the simulation, and $$\sigma$$ a distribution scale parameter (currently, AMICI only supports a single distribution parameter).

• ‘normal’, ‘lin-normal’: A normal distribution:

$\pi(m|y,\sigma) = \frac{1}{\sqrt{2\pi}\sigma}\ exp\left(-\frac{(m-y)^2}{2\sigma^2}\right)$
• ‘log-normal’: A log-normal distribution (i.e. log(m) is normally distributed):

$\pi(m|y,\sigma) = \frac{1}{\sqrt{2\pi}\sigma m}\ exp\left(-\frac{(\log m - \log y)^2}{2\sigma^2}\right)$
• ‘log10-normal’: A log10-normal distribution (i.e. log10(m) is normally distributed):

$\pi(m|y,\sigma) = \frac{1}{\sqrt{2\pi}\sigma m \log(10)}\ exp\left(-\frac{(\log_{10} m - \log_{10} y)^2}{2\sigma^2}\right)$
• ‘laplace’, ‘lin-laplace’: A laplace distribution:

$\pi(m|y,\sigma) = \frac{1}{2\sigma} \exp\left(-\frac{|m-y|}{\sigma}\right)$
• ‘log-laplace’: A log-Laplace distribution (i.e. log(m) is Laplace distributed):

$\pi(m|y,\sigma) = \frac{1}{2\sigma m} \exp\left(-\frac{|\log m - \log y|}{\sigma}\right)$
• ‘log10-laplace’: A log10-Laplace distribution (i.e. log10(m) is Laplace distributed):

$\pi(m|y,\sigma) = \frac{1}{2\sigma m \log(10)} \exp\left(-\frac{|\log_{10} m - \log_{10} y|}{\sigma}\right)$
• ‘binomial’, ‘lin-binomial’: A (continuation of a discrete) binomial distribution, parameterized via the success probability $$p=\sigma$$:

$\pi(m|y,\sigma) = \operatorname{Heaviside}(y-m) \cdot \frac{\Gamma(y+1)}{\Gamma(m+1) \Gamma(y-m+1)} \sigma^m (1-\sigma)^{(y-m)}$
• ‘negative-binomial’, ‘lin-negative-binomial’: A (continuation of a discrete) negative binomial distribution, with with mean = y, parameterized via success probability p:

$\pi(m|y,\sigma) = \frac{\Gamma(m+r)}{\Gamma(m+1) \Gamma(r)} (1-\sigma)^m \sigma^r$

where

$r = \frac{1-\sigma}{\sigma} y$

The distributions above are for a single data point. For a collection $$D=\{m_i\}_i$$ of data points and corresponding simulations $$Y=\{y_i\}_i$$ and noise parameters $$\Sigma=\{\sigma_i\}_i$$, AMICI assumes independence, i.e. the full distributions is

$\pi(D|Y,\Sigma) = \prod_i\pi(m_i|y_i,\sigma_i)$

AMICI uses the logarithm $$\log(\pi(m|y,\sigma)$$.

In addition to the above mentioned distributions, it is also possible to pass a function taking a symbol string and returning a log-distribution string with variables ‘{str_symbol}’, ‘m{str_symbol}’, ‘sigma{str_symbol}’ for y, m, sigma, respectively.

Parameters

noise_distribution (str) –

An identifier specifying a noise model. Possible values are

{‘normal’, ‘lin-normal’, ‘log-normal’, ‘log10-normal’, ‘laplace’, ‘lin-laplace’, ‘log-laplace’, ‘log10-laplace’, ‘binomial’, ‘lin-binomial’, ‘negative-binomial’, ‘lin-negative-binomial’, <Callable>}

For the meaning of the values see above.

Return type
Returns

A function that takes a strSymbol and then creates a cost function string (negative log-likelihood) from it, which can be sympified.

amici.sbml_import.replace_logx(math_str)[source]

Replace logX(.) by log(., X) since sympy cannot parse the former

Parameters

math_str (typing.Union[str, float, None]) – string for sympification

Return type
Returns

sympifiable string

amici.sbml_import.smart_subs(element, old, new)[source]

Optimized substitution that checks whether anything needs to be done first

Parameters
Return type

sympy.core.expr.Expr

Returns

substituted expression

amici.sbml_import.toposort_symbols(symbols, field=None)[source]

Topologically sort symbol definitions according to their interdependency

Parameters
Return type
Returns

ordered symbol definitions