You can subscribe to this list here.
| 2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(121) |
Aug
(343) |
Sep
(98) |
Oct
(55) |
Nov
(158) |
Dec
(219) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2009 |
Jan
(278) |
Feb
(170) |
Mar
(286) |
Apr
(32) |
May
(83) |
Jun
(140) |
Jul
(212) |
Aug
(242) |
Sep
(52) |
Oct
(29) |
Nov
(132) |
Dec
(259) |
| 2010 |
Jan
(251) |
Feb
(147) |
Mar
(76) |
Apr
(140) |
May
(43) |
Jun
(66) |
Jul
(273) |
Aug
(205) |
Sep
(260) |
Oct
(100) |
Nov
(58) |
Dec
(264) |
| 2011 |
Jan
(219) |
Feb
(344) |
Mar
(320) |
Apr
(334) |
May
(125) |
Jun
(131) |
Jul
(195) |
Aug
(155) |
Sep
(55) |
Oct
(261) |
Nov
(286) |
Dec
(216) |
| 2012 |
Jan
(188) |
Feb
(177) |
Mar
(39) |
Apr
(179) |
May
(148) |
Jun
(43) |
Jul
(229) |
Aug
(104) |
Sep
(76) |
Oct
(82) |
Nov
(93) |
Dec
(180) |
| 2013 |
Jan
(323) |
Feb
(335) |
Mar
(35) |
Apr
(220) |
May
(238) |
Jun
(122) |
Jul
(316) |
Aug
(73) |
Sep
(135) |
Oct
(515) |
Nov
(320) |
Dec
(185) |
| 2014 |
Jan
(81) |
Feb
(146) |
Mar
(337) |
Apr
(234) |
May
(112) |
Jun
(239) |
Jul
(323) |
Aug
(123) |
Sep
(83) |
Oct
(285) |
Nov
(321) |
Dec
(96) |
| 2015 |
Jan
(77) |
Feb
(79) |
Mar
(124) |
Apr
(71) |
May
(35) |
Jun
(45) |
Jul
(77) |
Aug
(44) |
Sep
(22) |
Oct
(84) |
Nov
(120) |
Dec
(37) |
| 2016 |
Jan
(38) |
Feb
(74) |
Mar
(242) |
Apr
(153) |
May
(59) |
Jun
(44) |
Jul
(67) |
Aug
(74) |
Sep
(150) |
Oct
(35) |
Nov
(69) |
Dec
(43) |
| 2017 |
Jan
(43) |
Feb
(9) |
Mar
(274) |
Apr
(40) |
May
(81) |
Jun
(81) |
Jul
(87) |
Aug
(46) |
Sep
(98) |
Oct
(50) |
Nov
(220) |
Dec
(66) |
| 2018 |
Jan
(110) |
Feb
(22) |
Mar
(20) |
Apr
(147) |
May
(148) |
Jun
(30) |
Jul
(83) |
Aug
(63) |
Sep
(40) |
Oct
(53) |
Nov
(51) |
Dec
(104) |
| 2019 |
Jan
(14) |
Feb
(81) |
Mar
(80) |
Apr
(102) |
May
(16) |
Jun
(5) |
Jul
(34) |
Aug
(24) |
Sep
(9) |
Oct
(12) |
Nov
(42) |
Dec
(76) |
| 2020 |
Jan
(15) |
Feb
(11) |
Mar
(12) |
Apr
(7) |
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
1
|
2
|
3
|
4
|
5
|
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
|
13
|
14
(1) |
15
|
16
(3) |
17
|
18
(1) |
19
|
|
20
|
21
|
22
(4) |
23
|
24
|
25
|
26
|
|
27
|
28
(1) |
29
(1) |
30
(3) |
31
|
|
|
|
From: <luc...@us...> - 2019-01-30 23:21:08
|
Revision: 25782
http://sourceforge.net/p/sbml/code/25782
Author: luciansmith
Date: 2019-01-30 23:21:02 +0000 (Wed, 30 Jan 2019)
Log Message:
-----------
Re-compile latest version.
Modified Paths:
--------------
trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.pdf
Modified: trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.pdf
===================================================================
(Binary files differ)
|
|
From: <luc...@us...> - 2019-01-30 22:19:19
|
Revision: 25781
http://sourceforge.net/p/sbml/code/25781
Author: luciansmith
Date: 2019-01-30 22:19:12 +0000 (Wed, 30 Jan 2019)
Log Message:
-----------
Remove the function definition extension version from everything; re-order the remaining bits so they make internal sense.
Modified Paths:
--------------
trunk/specifications/sbml-level-3/version-1/distrib/apdx-validation.tex
trunk/specifications/sbml-level-3/version-1/distrib/figs/extended-sbase.pdf
trunk/specifications/sbml-level-3/version-1/distrib/figs/externalDistribution.pdf
trunk/specifications/sbml-level-3/version-1/distrib/figs/uncertStatistics.pdf
trunk/specifications/sbml-level-3/version-1/distrib/figs/uncertValue.pdf
trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.pdf
trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex
Added Paths:
-----------
trunk/specifications/sbml-level-3/version-1/distrib/apdx-distributions.tex
Added: trunk/specifications/sbml-level-3/version-1/distrib/apdx-distributions.tex
===================================================================
--- trunk/specifications/sbml-level-3/version-1/distrib/apdx-distributions.tex (rev 0)
+++ trunk/specifications/sbml-level-3/version-1/distrib/apdx-distributions.tex 2019-01-30 22:19:12 UTC (rev 25781)
@@ -0,0 +1,468 @@
+% -*- TeX-master: "main"; fill-column: 72 -*-
+
+\section{Distributions}
+\label{apdx-distributions}
+
+\subsection{The \class{UnivariateDistribution} class}
+\label{UnivariateDistribution-class}
+\label{univariatedistribution-class}
+
+The \UnivariateDistribution class is an abstract class that derives from the \Distribution abstract class, and which has three derived classes itself: \ContinuousUnivariateDistribution, \DiscreteUnivariateDistribution, and \CategoricalUnivariateDistribution. It is provided as a bookkeeping class to distinguish it from other types of distributions.
+
+
+\subsection{The \class{MultivariateDistribution} class}
+\label{MultivariateDistribution-class}
+\label{multivariatedistribution-class}
+
+The \MultivariateDistribution class is an abstract class with no derived classes in the current specification, but some could be added in the future. Most likely, it will be removed from the final version of the spec.
+
+
+\begin{figure}[htb]
+\includegraphics[width=0.55\linewidth]{figs/continuousUnivariateDistribution_first.pdf}
+\caption{The definition of the \ContinuousUnivariateDistribution abstract class, and its \BetaDistribution, \CauchyDistribution, \ChiSquareDistribution, \ExponentialDistribution, \FDistribution, \GammaDistribution, \InverseGammaDistribution, \LaPlaceDistribution, and \LogNormalDistribution children. All may have lower and upper \UncertBound children, and each has one or more other parameters encoded as \UncertValue children (both defined below).}
+\label{fig:continuousUnivariateDistribution_first}
+\end{figure}
+
+
+\subsection{The \class{ContinuousUnivariateDistribution} class}
+\label{ContinuousUnivariateDistribution-class}
+\label{continuousunivariatedistribution-class}
+The abstract \ContinuousUnivariateDistribution class is the base class for a wide variety of distributions, all of which describe a potentially-bounded continuous range of probabilities. Many of the most commonly-used distributions such as the \NormalDistribution and the \UniformDistribution fall into this category.
+
+\begin{figure}[htb]
+\includegraphics[width=0.55\linewidth]{figs/continuousUnivariateDistribution_second.pdf}
+\caption{The definition of the \ContinuousUnivariateDistribution abstract class, and its \LogisticDistribution, \NormalDistribution, \ParetoDistribution, \RayleighDistribution, \StudentTDistribution, \UniformDistribution, and \WeibullDistribution children. All may have lower and upper \UncertBound children, and each has one or more other parameters encoded as \UncertValue children (both defined below).}
+\label{fig:continuousUnivariateDistribution_second}
+\end{figure}
+
+All \ContinuousUnivariateDistribution elements may have two optional children: \val{lowerTruncationBound} and \val{upperTruncationBound}, both of the class \UncertBound (defined below). Either element, if present, limit the range of possible sampled values from the distribution. The \val{lowerTruncationBound} defines the lowest value (inclusive or not, as defined by that element's \token{inclusive} attribute) that can be sampled, and the \val{upperTruncationBound} defines the highest. If both children are present, the \val{lowerTruncationBound} must either be lower than the \val{upperTruncationBound}, or they may be equal, if both bounds are set \token{inclusive}=\val{true}. Similarly, some distributions are themselves naturally bound (some may, for example, only return values greater than zero). In those cases, the natural lower bound of the distribution must either be lower than the \val{upperTruncationBound}, or be equal to it if the natural lower bound is inclusive, and if the \val{upperTruncationBound} is set \token{inclusive}=\val{true}. Similarly, the natural upper bound of the distribution must either be higher than the \val{lowerTruncationBound}, or it may be equal to it if the natural upper bound is inclusive and if the \val{lowerTruncationBound} is set \token{inclusive}=\val{true}. It may be impossible to determine this from a static analysis of the model, as either or both bound's values may depend on other dynamic variables. If a simulator encounters this situation, the sampled value and the behavior of the simulator are undefined.
+
+If bounded, the cumulative probability that would have been assigned to the region outside the bound is re-assigned proportionally to the rest of the distribution. It should be noted that while discarding any value obtained from the non-truncated version of the distribution and re-sampling is indeed one method that could be used to accomplish this, the efficiency of that algorithm decreases with the width of the allowed window, and indeed is technically zero (and would take an infinite amount of time to complete) should the bounds be equal to one another. Taking any samples obtained outside the bound window and instead returning the boundary value itself is incorrect, and will not result in a proper draw from the defined distribution.
+
+The distributions of this type allowed in this version of the specification are defined in \fig{fig:continuousUnivariateDistribution_first} and \fig{fig:continuousUnivariateDistribution_second}. A full list of all of the distributions is provided in \sec{sec:allDistributions}.
+
+
+\begin{figure}[htb]
+\includegraphics[width=0.55\linewidth]{figs/discreteUnivariateDistribution.pdf}
+\caption{The definition of the \DiscreteUnivariateDistribution abstract class, and its \BinomialDistribution, \GeometricDistribution, \HypergeometricDistribution, \NegativeBinomialDistribution, and \PoissonDistribution children. All may have lower and upper \UncertBound children, and each has one or more other parameters encoded as \UncertValue children (both defined below).}
+\label{fig:discreteUnivariateDistribution}
+\end{figure}
+
+\subsection{The \class{DiscreteUnivariateDistribution} class}
+\label{DiscreteUnivariateDistribution-class}
+\label{discreteunivariatedistribution-class}
+
+The abstract \DiscreteUnivariateDistribution class is the base class for a wide variety of distributions, all of which describe a potentially-bounded range of probabilities of discrete values. The most commonly-used distributions in this class is probably the \PoissonDistribution. Distributions that always return integers fall in this category, which often involve events happening at particular frequencies.
+
+All \DiscreteUnivariateDistribution elements (like \ContinuousUnivariateDistribution elements) may have two optional children: \val{lowerTruncationBound} and \val{upperTruncationBound}, both of the class \UncertBound (defined below). Either element, if present, limit the range of possible sampled values from the distribution. The \val{lowerTruncationBound} defines the value below which no sampling may take place
+(inclusive or not, as defined by that element's \token{inclusive} attribute), and the \val{upperTruncationBound} defines the value above which no sampling may take place. These bounds may fall between the possible discrete values being returned: as an example, for a distribution that returned an integer in the series [0, 1, 2, ...], if it was given a \val{lowerTruncationBound} of 1.5, the lowest value it could return would be 2. In this case, the value of the \token{inclusive} attribute on the \UncertBound would be immaterial, as '1.5' could never be returned.
+
+As in the case of the \ContinuousUnivariateDistribution bounds, if both bounds are present, the \val{lowerTruncationBound} must either be lower than the \val{upperTruncationBound}, or they may be equal, if both bounds are set \token{inclusive}=\val{true}. Similarly, the discrete distributions are themselves often naturally bound (some may, for example, only return values greater than zero). In those cases, the natural lower bound of the distribution must be either be lower than the \val{upperTruncationBound}, or it may be equal to it if the natural lower bound is inclusive, and if the \val{upperTruncationBound} is set \token{inclusive}=\val{true}. Similarly, the natural upper bound of the distribution must either be higher than the \val{lowerTruncationBound}, or it may be equal to it if the natural upper bound is inclusive and if the \val{lowerTruncationBound} is set \token{inclusive}=\val{true}. In addition, if both bounds are defined, they must define a span within which at least one possible sampled discrete value may be found. For a distribution that returns integers, for example, one may not define a lower bound of 1.5 and an upper bound of 1.8, as no integer lies within that range. It may be impossible to determine if any of these rules are violated from a static analysis of the model, as either or both bound's values may depend on other dynamic variables. If a simulator encounters this situation, the sampled value and the behavior of the simulator are undefined.
+
+If bounded, the cumulative probability that would have been assigned to the values outside the bound is re-assigned proportionally to the rest of the distribution. It should be noted that while discarding any value obtained from the non-truncated version of the distribution and re-sampling is indeed one method that could be used to accomplish this, the efficiency of that algorithm decreases with the width of the allowed window, and indeed is technically zero (and could take an infinite amount of time to complete) should the bounds allow only a single discrete value. Taking any samples obtained outside the bound window and instead returning the boundary value itself is incorrect, and will not result in a proper draw from the defined distribution.
+
+The distributions of this type allowed in this version of the specification are defined in \fig{fig:discreteUnivariateDistribution}. A full list of all of the distributions is provided in \sec{sec:allDistributions}.
+
+
+
+\begin{figure}[htb]
+\includegraphics[width=0.85\linewidth]{figs/categoricalUnivariateDistribution.pdf}
+\caption{The definition of the \CategoricalUnivariateDistribution abstract class, plus the \BernoulliDistribution, \CategoricalDistribution, \ListOfCategories, and \Category classes.}
+\label{fig:categoricalUnivariateDistribution}
+\end{figure}
+
+\subsection{The \class{CategoricalUnivariateDistribution} class}
+\label{CategoricalUnivariateDistribution-class}
+\label{categoricalunivariatedistribution-class}
+
+The \CategoricalUnivariateDistribution abstract class includes distributions where the various possible sampled values are each explicitly listed, along with the probability for that sampled value. The sum of these probabilities must therefore equal 1.0, in order to be valid. This type of distribution class is used for things such as weighted die rolls, or other situations where particular values are obtained at arbitrary probabilities.
+
+Because each possible sampled value is explicitly listed in an \CategoricalUnivariateDistribution, it does not have the optional \UncertBound values that the other univariate distributions do: if a particular value is not allowed, it is simply dropped from the list of options, and the probabilities of the other values are scaled accordingly.
+
+
+\begin{figure}[htb]
+\includegraphics[width=0.6\linewidth]{figs/externalDistribution.pdf}
+\caption{The definition of the \ExternalDistribution, \ExternalParameter, and \ListOfExternalParameters classes. These classes define a way to define a distribution with reference to an external database or ontology of distribution definitions.}
+\label{fig:externalDistribution}
+\end{figure}
+
+\subsection{The \class{ExternalDistribution} class}
+\label{ExternalDistribution-class}
+\label{externaldistribution-class}
+
+The \ExternalDistribution class is provided to allow a modeler to encode a distribution not otherwise explicitly handled by this specification. Because the range of possibilities is so vast, the modeler should not normally expect any given SBML simulator or other software to be able to properly manipulate this distribution, but particular software tools may implement support for certain distributions they know their own software's users may require.
+
+The required attribute \token{definitionURL}, of type \primtype{ExternalRef}, must be a URI that defines a valid distribution. It is strongly recommended that modelers use distributions from ProbOnto (\url{http://probonto.org/}), as consistently referencing a single ontology will improve exchangeability, at least slightly. The referenced distribution is then the distribution defined by this \ExternalDistribution, along with any parameterization provided by the children \ExternalParameter elements.
+
+Some referenced distributions are multivarite, meaning they define correlated distributions for two or more parameters. It is impossible with \sbmlthreecore to define a \FunctionDefinition that returns a vector, and similarly no \primtype{SId} in \sbmlthreecore can be used to represent a vector. If this is desired, then, the Arrays package must be used in concert with the \ExternalDistribution to cooperatively set up a model with a \FunctionDefinition that can use an array as input and/or as output.
+
+The \ExternalDistribution defines an optional child \ListOfExternalParameters, which can be used to parameterize the defined distribution.
+
+
+\subsection{Specific Distributions}
+\label{sec:allDistributions}
+
+In this table, all distributions are listed, along with their types (Continuous, Categorical, or Discrete), whether they're univariate or multivariate, and a brief description. The element name is the name of the distribution with spaces removed, the initial letter lower-cased, and \val{Distribution} appended, so, for example, the \val{Exponential} distribution becomes \val{<exponentialDistribution>}, and the \val{Student T} distribution becomes \val{<studentTDistribution>}.
+%The exception is that all of the mixture models (ones that end with \val{Mixture Model}), only have spaces removed but nothing appended: the Continuous Univariate Mixture Model becomes \val{<ContinuousUnivariateMixtureModel>}, etc.
+
+All of these distributions inherit from the abstract \Distribution class. Additionally, the appropriate distributions inherit from the \UnivariateDistribution or \MultivariateDistribution abstract classes, and further from the \ContinuousUnivariateDistribution, \DiscreteUnivariateDistribution, or \CategoricalUnivariateDistribution classes, which are related to one another as one would expect.
+
+All descriptions are based on the information from \url{http://www.uncertml.org/}, which is now defunct, but which can still be accessed at \url{http://web.archive.org/web/20160313012501/uncertml.org}.
+
+Distributions are listed grouped by category (type and univarite/multivariate), and alphabetical within those categories.
+
+
+\subsection{The \class{BetaDistribution} class}
+\label{BetaDistribution-class}
+\label{betadistribution-class}
+
+The \BetaDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{alpha} ($\alpha$) and \token{beta} ($\beta$). Both \token{alpha} and \token{beta} must be positive.
+
+A random variable x is Beta distributed if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{1}{B\left(\alpha,\beta\right)}x^{\alpha-1}\left(1-x\right)^{\beta-1}$, where $B\left(\alpha,\beta\right)$ = $\frac{\Gamma\left(\alpha\right)\Gamma\left(\beta\right)}{\Gamma\left(\alpha+\beta\right)}$
+\end{center}
+
+The distribution is usually denoted as $x\sim Be\left(\alpha,\beta\right)$ with parameters $\alpha$ and $\beta$, both positive real values. As the domain of the random variable is defined to be $[0,1]$ the Beta distribution is normally used to describe the distribution of a probability value.
+
+\subsection{The \class{CauchyDistribution} class}
+\label{CauchyDistribution-class}
+\label{cauchydistribution-class}
+
+The \CauchyDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{location} ($\theta$) and \token{scale} ($\gamma$). The \token{scale} value must be positive.
+
+A random variable x follows a Cauchy distribution if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{1}{\pi\gamma}\left[1+\left(\frac{x-\theta}{\gamma}\right)^2\right]^{-1}$
+\end{center}
+
+The Cauchy distribution is equivalent to a Student-T distribution with 1 degree of freedom. It is widely used in physics, optics and astronomy. It is also known as the Lorenz or the Breit-Wigner distribution.
+
+\subsection{The \class{ChiSquareDistribution} class}
+\label{ChiSquareDistribution-class}
+\label{chisquaredistribution-class}
+
+The \ChiSquareDistribution is a \ContinuousUnivariateDistribution defining a \UncertValue child \token{degreesOfFreedom} ($\nu$). The \token{degreesOfFreedom} must be a positive integer.
+
+A random variable x is Chi-square distributed if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{1}{\Gamma(\nu/2)2^{\nu/2}}x^{\nu/2-1}exp(-x/2)$
+\end{center}
+
+The distribution is usually denoted as $x\sim\chi_\nu$ where $\nu$ is known as the degrees of freedom parameter. $\nu$ has to be positive and $x$ has to be non-negative for the density to be defined. The Chi-square distribution is a special case of the Gamma distribution where $\chi \sim\Gamma(k=\nu/2,\theta=2)$.
+
+\subsection{The \class{ExponentialDistribution} class}
+\label{ExponentialDistribution-class}
+\label{exponentialdistribution-class}
+
+The \ExponentialDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue child \token{rate} ($\lambda$). The \token{rate} value must be positive.
+
+A random variable x follows an exponential distribution if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\lambda e^{-\lambda x}$
+\end{center}
+
+It is often represented as $x \sim$ Exp$(\lambda)$. It is used to model the time between events for a Poisson process and is used in simulation of stochastic systems.
+
+\subsection{The \class{FDistribution} class}
+\label{FDistribution-class}
+\label{fdistribution-class}
+
+The \FDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{numerator} ($\nu_1$) and \token{denominator} ($\nu_2$). Both \token{numerator} and \token{denominator} must be positive integers.
+
+A random variable x follows an F distribution if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{ 1 } {B(\nu_1/2, \nu_2/2)} \left( \frac{\nu_1}{\nu_2}\right)^{\nu_1/2} x^{\nu_1/2 - 1} \left(1 + \frac{\nu_1}{\nu_2}x \right)^{-\frac{\nu_1+\nu_2}{2} }$
+\end{center}
+
+where $B(.)$ is the Beta function. It often arises as the ratio of two random variables that are identically Chi-Square distributed.
+
+\subsection{The \class{GammaDistribution} class}
+\label{GammaDistribution-class}
+\label{gammadistribution-class}
+
+The \GammaDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{shape} ($k$) and \token{scale} ($\theta$). Both \token{shape} and \token{scale} must be positive.
+
+A random variable x is Gamma distributed if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{1}{\Gamma(k) \theta^k} x^{k-1} exp(-x/\theta) $ with $ \Gamma(\cdot) $ the Gamma function.
+\end{center}
+
+The distribution is usually denoted as $x \sim Gamma(k, \theta)$ where $k$ is known as the shape parameter and $\theta$ the scale parameter. Both parameters have be positive and $x$ has to be non-negative for the density to be defined. In practice the Gamma distribution is often use to model the distribution of non-negative quantities such as variances.
+
+\subsection{The \class{InverseGammaDistribution} class}
+\label{InverseGammaDistribution-class}
+\label{inversegammadistribution-class}
+
+The \InverseGammaDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{shape} ($\alpha$) and \token{scale} ($\beta$). Both \token{alpha} and \token{beta} must be positive.
+
+A random variable x is Inverse Gamma distributed if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{\beta^\alpha}{\Gamma(\alpha)}x^{-\alpha-1}exp(-\beta/x)$
+\end{center}
+
+If variable $x$ is Inverse Gamma distributed, 1/$x$ is gamma distributed. The Inverse Gamma distribution function can be obtained from the Gamma distribution by a transformation of variables.
+
+\subsection{The \class{LaPlaceDistribution} class}
+\label{LaPlaceDistribution-class}
+\label{laplacedistribution-class}
+
+The \LaPlaceDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{location} ($\mu$) and \token{scale} ($b$). The \token{scale} value must be positive.
+
+A random variable x is Laplace distributed if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{1}{2b}exp(-\frac{abs(x-\mu)}{b})$
+\end{center}
+
+where $abs$ denotes the absolute value. It can be thought of as a combination of two exponential distributions.
+
+\subsection{The \class{LogNormalDistribution} class}
+\label{LogNormalDistribution-class}
+\label{lognormaldistribution-class}
+
+The \LogNormalDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{shape} ($\sigma^2$) and \token{logScale} ($\mu$). The \token{shape} value must be positive.
+
+A random variable x is Log Normal distributed if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{1}{x \sqrt{2 \pi \sigma^2}} exp(-\frac{ (\mathrm{ln}(x)-\mu)^2 }{2 \sigma^2})$
+\end{center}
+
+If variable x is normally distributed, exp(x) is Log Normal distributed. The Log Normal distribution function can be obtained from the normal distribution by a transformation of variables. It is often used for variables that must be positive.
+
+\subsection{The \class{LogisticDistribution} class}
+\label{LogisticDistribution-class}
+\label{logisticdistribution-class}
+
+The \LogisticDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{location} ($\mu$) and \token{scale} ($s$). The \token{scale} value must be positive.
+
+A random variable x is Logistic distributed if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{exp(-(x-\mu)/s)}{s(1+exp(-(x-\mu)/s))^2}$
+\end{center}
+
+\subsection{The \class{NormalDistribution} class}
+\label{NormalDistribution-class}
+\label{normaldistribution-class}
+
+The \NormalDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{mean} ($\mu$), \token{stddev} ($\sigma$), and \token{variance} ($\sigma^2$). The distribution must either define a \token{stddev} or a \token{variance}, but not both. The \token{variance}, if defined, must be positive.
+
+A random variable x is normally distributed if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{1}{\sqrt{2\pi\sigma^2}}exp(-\frac{(x-\mu)^2}{2\sigma^2})$
+\end{center}
+
+The distribution is usually denoted as $x\sim \mathcal{N}(\mu,\sigma^2)$ where $\mu$ is known as the mean parameter and $\sigma^2$ the variance parameter. If the random variable x is a vector of length greater than one, the normal distribution can be generalised to the Multivariate normal. A reason for the widespread usage of the normal distribution is the Central limit theorem which states that the distribution of the mean of a large number of independent identically distributed random variables tends to a normal distributions as the number of random variables increases.
+
+\subsection{The \class{ParetoDistribution} class}
+\label{ParetoDistribution-class}
+\label{paretodistribution-class}
+
+The \ParetoDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{scale} ($x_m$) and \token{shape} ($\alpha$). Both \token{shape} and \token{scale} must be positive.
+
+A random variable x follows a Pareto distribution if the probability density function is of the form:
+
+\begin{center}
+$\frac{\alpha x_m^\alpha}{x^{\alpha+1}}$
+\end{center}
+
+The distribution allows for the specification of a minimum value below which the density is 0. It is a skewed heavy-tailed distribution.
+
+\subsection{The \class{RayleighDistribution} class}
+\label{RayleighDistribution-class}
+\label{rayleighdistribution-class}
+
+The \RayleighDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{scale}.
+
+[From Wikipedia:] A Rayleigh distribution is often observed when the overall magnitude of a vector is related to its directional components. One example where the Rayleigh distribution naturally arises is when wind velocity is analyzed into its orthogonal 2-dimensional vector components. Assuming that each component is uncorrelated, normally distributed with equal variance, and zero mean, then the overall wind speed (vector magnitude) will be characterized by a Rayleigh distribution. A second example of the distribution arises in the case of random complex numbers whose real and imaginary components are independently and identically distributed Gaussian with equal variance and zero mean. In that case, the absolute value of the complex number is Rayleigh-distributed.
+
+\subsection{The \class{StudentTDistribution} class}
+\label{StudentTDistribution-class}
+\label{studenttdistribution-class}
+
+The \StudentTDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{location} ($\mu$), \token{scale} ($\sigma^2$) and \token{degreesOfFreedom} ($\nu$).
+
+A random variable x follows a Student-t distribution if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{\Gamma(\nu/2+1/2)}{\Gamma(\nu/2)(\pi\nu\sigma^2)^{1/2}}[1+\frac{(x-\mu)^2}{\nu\sigma^2}]^{-\nu/2-1/2}$. The distribution is usually denoted as $x\sim St(\mu,\lambda,\nu)$
+\end{center}
+
+This distribution corresponds to integrating out the variance of a normal distribution using a inverse Gamma prior. It can therefore be interpreted as an infinite mixture of normal distributions having the same mean but different variances. The three parameters are the mean ($\mu$), degrees of freedom ($\nu$) and variance ($\sigma^2$). Setting the variance to 1 and the mean to 0 we obtain the Student-t form found in standard statistics references such as Wikipedia. Setting the d.f. to 1 the Cauchy distribution is obtained. Setting the d.f. to infinity the normal distribution is obtained. The student-t distribution is commonly used in likelihood inference as the maximum likelihood parameter estimates are more robust to outlier observations compared to the normal distribution.
+
+\subsection{The \class{UniformDistribution} class}
+\label{UniformDistribution-class}
+\label{uniformdistribution-class}
+
+The \UniformDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{minimum} ($a$), \token{maximum} ($b$) and the optional \token{numberOfClasses}. The \token{minimum} value must be less than the \token{maximum} value. If \token{numberOfClasses} is defined, its value must be an integer greater than or equal to two.
+
+A random variable x follows a uniform distribution if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{1}{b-a}$
+\end{center}
+
+The distribution assigns equal probability to all events within the chosen domain between (and including) the minimum ($a$) and the maximum ($b$).
+
+If \token{numberOfClasses} is included, the uniform range is divided into $numberOfClasses-1$ sections, and each of the borders of those sections are equally likely to be returned. If \token{numberOfClasses} is 2 (the minimum), the range just has $2-1=1$ section, and the borders of that section (the \token{minimum} and \token{maximum}) are the two possible return values. If \token{numberofClasses} is 3, the range is broken into $3-1=2$ sections, leaving the \token{minimum}, \token{maximum}, and mean as the three possible return values, etc.
+
+\subsection{The \class{WeibullDistribution} class}
+\label{WeibullDistribution-class}
+\label{weibulldistribution-class}
+
+The \WeibullDistribution is a \ContinuousUnivariateDistribution that defines the \UncertValue children \token{shape} ($k$) and \token{scale} ($\lambda$). Both \token{shape} and \token{scale} must be positive.
+
+A random variable x follows an Weibull distribution if the probability density function (pdf) is of the form:
+
+\begin{center}
+$\frac{k}{\lambda}\left(\frac{x}{\lambda}\right)^{k-1}exp(-x/\lambda)^k$
+\end{center}
+
+It includes the exponential distribution as a special case. It is often used in engineering and finance.
+
+%Continuous Multivariate Mixture Model & Continuous & Multivariate
+% & A mixture model is a linear combination of base distributions. A widely used case is where the base distributions are Gaussian in which case the model is known as the Gaussian Mixture Model.
+%Dirichlet & Continuous & Multivariate
+% & A $K$ dimensional random variable x follows a Dirichlet distribution if the probability density function (pdf) is of the form $\frac{1}{B(\mathbf{a})} \prod_{i=1}^K x_i^{\alpha_i - 1}$ where $B(\mathbf{a}) = \frac{ \prod^k_{i=1} \Gamma(\alpha_i) } { \Gamma( \sum_{i=1}^K \alpha_i ) }$ and $\Gamma(.)$ is the Gamma function. It is the multivariate extension of the beta distribution to higher dimensions with K a positive integer greater than or equal to 2.
+%Multivariate Normal & Continuous & Multivariate
+% & The Multivariate Normal is an extension of the univariate normal distribution to higher dimensional vector spaces. A random vector variable of dimension $ k $ denoted $ \mathbf{x} $ is normally distributed if the probability density function (pdf) is of the form $(2 \pi)^{-k/2} \mathrm{det}(\Sigma)^{-1/2} exp (-\frac{1}{2} (\mathbf{x} - \mathbf{\mu})^T \Sigma^{-1} (\mathbf{x} - \mathbf{\mu}) ) $ where $ \mathrm{det}(.) $ denotes the determinant and $ (.)^T $ the matrix transpose. The distribution is usually denoted as $ \mathbf{x} \sim \mathcal{N}(\mathbf{\mu}, \Sigma) $ where $ \mathbf{\mu} $ is known as the mean vector parameter and $ \Sigma $ the covariance matrix parameter.
+%Multivariate Student T & Continuous & Multivariate
+% & A random variable $ \mathbf{x} $ follows a multivariate Student-t distribution if the probability density function (pdf) is of the form $\frac{ \Gamma(\nu/2 + k/2)} {\Gamma(\nu/2) (\pi \nu)^{k/2} \mathrm{det} (\Sigma)^{1/2} } \left[1 + \frac{ \Delta^2 } { \nu } \right]^{-\nu/2 - k/2} $ where $ \Delta^2 = (\mathbf{x} - \mathbf{\mu})^T \Sigma^{-1} (\mathbf{x} - \mathbf{\mu}) $ is the squared Mahalanobis distance. The distribution is usually denoted as $ x \sim St(\mathbf{\mu},\Sigma,\nu) $. It is the extension of the univariate student-t distribution to higher dimensions. Student-t distributions are often used when tails are expected to be heavier than Gaussian or Normal, and can result from applying Bayesian inference.
+%Normal Inverse Gamma & Continuous & Multivariate
+% & A Normal Inverse Gamma distribution is the conjugate prior of a normal distribution with unknown mean and variance. It is the coupled product of an Inverse Gamma distribution and a normal distribution. In particular if $p(\mathbf{X} ; \mu, \sigma^2) $ is the likelihood function of a Normally distributed set of random variables with mean $ \mu $ and variance $ \sigma^2 $ and if both the mean and variance are considered unknown, the conjugate prior is $ p(\mu,\sigma^2) = p(\mu ; \sigma^2) p(\sigma^2) $ where $ p(\mu ; \sigma^2) = \mathcal{N}(\mu ; \mu_0, \sigma^2/\nu) $ a Normal prior on the mean and $ p(\sigma^2) = \mathrm{IG}(\sigma^2 ; \alpha, \beta) $ an Inverse Gamma prior on the variance. Note that the priors are not independent as the prior variance of the mean is a linear function of of the variance $ \sigma^2 $. It is also common to use a Normal-Gamma distribution where a conjugate prior is placed on the unknown mean and precision (i.e. inverse variance) of the Normal likelihood in which case the prior is a product of a Normal and Gamma distributions. In the case of a Multivariate normal likelihood, the corresponding conjugate prior is a Normal-Wishart distribution.
+
+\subsection{The \class{BinomialDistribution} class}
+\label{BinomialDistribution-class}
+\label{binomialdistribution-class}
+
+The \BinomialDistribution is a \DiscreteUnivariateDistribution that defines the \UncertValue children \token{numberOfTrials} ($n$) and \token{probabilityOfSuccess} ($\theta$). The \token{numberOfTrials} must be a positive integer, and \token{probabilityOfSuccess} must be a value between zero and one, inclusive.
+
+A random variable $ x $ follows a Binomial distribution if the probability mass function (pmf) is of the form:
+
+\begin{center}
+${n \choose x} \theta^x (1-\theta)^{n-x} $
+\end{center}
+
+where $ {n \choose x} $ denotes $ n $ choose $ x $. The distribution is usually denoted as $ x \sim b(n,\theta) $. The distribution describes the probability of getting $ x $ successes in $n$ trials of independent experiments that have the same probability of success.
+
+\subsection{The \class{GeometricDistribution} class}
+\label{GeometricDistribution-class}
+\label{geometricdistribution-class}
+
+The \GeometricDistribution is a \DiscreteUnivariateDistribution that defines the \UncertValue child \token{probability} ($p$). The \token{probability} must have a value must be between zero and one, inclusive.
+
+A random variable $ x $ follows a geometric distribution if the probability mass function (pmf) is of the form:
+
+\begin{center}
+$(1-p)^{x-1} p$
+\end{center}
+
+It is often represented as $x \sim \mathrm{Geom}(p)$. It is the discrete analogue of the exponential distribution. It is used to model distribution of the number of binary (Bernoulli) trials needed to get one success, with parameter, probability $p$.
+
+\subsection{The \class{HypergeometricDistribution} class}
+\label{HypergeometricDistribution-class}
+\label{hypergeometricdistribution-class}
+
+The \HypergeometricDistribution is a \DiscreteUnivariateDistribution that defines the \UncertValue children \token{numberOfSuccesses} ($m$). \token{numberOfTrials} ($n$), and \token{populationSize} ($N$). All three values must be positive integers, chosen such that \token{numberOfTrials} is less than or equal to \token{populationSize}.
+
+A random variable $ x $ follows a hypergeometric distribution if the probability mass function (pmf) is of the form:
+
+\begin{center}
+$\frac{ {m \choose k} { N-m \choose n-k } } { {N \choose n}}$
+\end{center}
+
+probability of getting $x$ successes. It describes the number of successes in a sequence of draws without replacement.
+
+\subsection{The \class{NegativeBinomialDistribution} class}
+\label{NegativeBinomialDistribution-class}
+\label{negativebinomialdistribution-class}
+
+The \NegativeBinomialDistribution is a \DiscreteUnivariateDistribution. It has two defined \UncertValue children \token{numberOfFailures} ($r$) and \token{probability} ($p$). The \token{numberOfFailures} must be a positive integer, and \token{probability} must have a value between zero and one, inclusive.
+
+A random variable $ x $ follows a Negative Binomial distribution if the probability mass function (pmf) is of the form:
+
+\begin{center}
+${x + r - 1 \choose x} p^x (1-p)^r $
+\end{center}
+
+The distribution describes the probability of getting $ x $ successes in trials of independent experiments that have the same probability of success, and are run until we observe $ r $ failures. Note that some systems formulate this distribution differently: observing $k$ failures before obtaining the $r^{th}$ success. The formulation above follows the English version of Wikipedia; the alternate formulation is used on other language Wikipedia definitions of the distribution, as well as various software packages like Matlab and R.
+
+{\color{red} Lucian: \controversial NOTE! The above formulation was used by UncertML and Wikipedia, the sort-of-default distribution definition source for the annotation scheme. However, once people actually start implementing it, they may find that their software package uses the alternative. The ProbOnto 2.5 specification (\url{https://sites.google.com/site/probonto/download}) goes into great detail on this issue in Appendix A.3, for anyone who wants to know more. I would be happy to change the definition to match people's software, if need be.}
+
+
+\subsection{The \class{PoissonDistribution} class}
+\label{PoissonDistribution-class}
+\label{poissondistribution-class}
+
+The \PoissonDistribution is a \DiscreteUnivariateDistribution that defines the \UncertValue child \token{rate} ($\lambda$). The \token{rate} value must be positive.
+
+A random variable $ x $ follows a Poisson distribution if the probability mass function (pmf) is of the form:
+
+\begin{center}
+$\frac{\lambda^x}{x!} \mathrm{exp}(-\lambda)$
+\end{center}
+
+The Poisson distribution can be used to model the number of events occurring within fixed time period of time.
+
+
+%Discrete Multivariate Mixture Model & Discrete & Multivariate
+% & A mixture model is a linear combination of base distributions. A widely used case is where the base distributions are Gaussian in which case the model is known as the Gaussian Mixture Model.
+%Multinomial & Discrete & Multivariate
+% & A random variable $ x $ follows a Multinomial distribution if the probability mass function (pmf) is of the form $\frac{N!}{x_1! \dots x_k!} \prod_{i=1}^K p_i^{x_i}$. The Multinomial distribution is a multivariate generalisation of the Binomial distribution for a $ K $ state variable to be in state $ k $ given $N$ observations. This can be confused with the Categorical distribution (added at version 3.0 of UncertML) which can be considered a Multinomial distribution when a 1 of K encoding is used.
+%Wishart & Discrete & Multivariate
+% & A random matrix variable $ \mathbf{X} $ of size $ D \times D $ follows a Wishart distribution if the probability density function is of the form $\mathrm{det}(\mathbf{W})^{-\nu/2} \left( 2^{\nu D/2} \pi^{D(D-1)/4} \prod_{i=1}^D \Gamma\left(\frac{\nu+1-i}{2}\right) \right)^{-1}$ $\mathrm{det}(\mathbf{X})^{(\nu-D-1)/2} \exp\left(-\frac{1}{2} \mathrm{Tr} (\mathbf{W}^{-1} \mathbf{X}) \right)$ where $ \mathrm{det} $ denotes the determinant, $ \mathrm{Tr} $ the matrix trace. The Wishart distributon is the conjugate prior for the inverse of a covariance matrix of a Multivariate Normal distribution. It is a generalistion of the gamma distribution to higher dimensions. In one dimesion the Wishart distribution is equivalent to a gamma distribution with parameters $ k=\nu/2 $ and $ \theta = 1/2\mathbf{W} $.
+
+
+\subsection{The \class{BernoulliDistribution} class}
+\label{BernoulliDistribution-class}
+\label{bernoullidistribution-class}
+
+The \BernoulliDistribution is a \CategoricalUnivariateDistribution that defines the \UncertValue child \token{prob} ($\mu$). The \token{prob} must have a value between zero and one, inclusive. It defines the probability that $x=1$.
+
+A random variable $ x $ follows a Bernoulli distribution if the probability mass function (pmf) is of the form:
+
+\begin{center}
+$\mu^x (1-\mu)^{1-x} $
+\end{center}
+
+It describes the distribution of a single binary variable $ x $.
+
+\subsection{The \class{CategoricalDistribution} class}
+\label{CategoricalDistribution-class}
+\label{categoricaldistribution-class}
+
+The \CategoricalDistribution is a \CategoricalUnivariateDistribution that contains one or more \Category elements, each of which defines \UncertValue \token{value} and \token{probability} children associated with that category. In order to be valid, the sum of the probabilities over all categories must either equal 1.0, or there must be exactly one \Category without a child \UncertValue \token{probability}, which is then set to $ 1.0 - sum(other probabilities)$. (In this case, that sum must be between 0.0 and 1.0, inclusive.)
+
+A Categorical distribution is a generalisation of the Bernoulli distribution to $ K $ discrete outcomes, giving the $ K $ probabilities $ p_i $, $ i=1,..,K $ for each outcome. There is no ordering in the $ K $ outcomes.
+
+The optional \token{rank} attribute, if present, is provided as a way to differentiate between an ordered vs. unordered categorical distribution. It does not affect the sampling of the distribution in any way, and is provided for reference only. The \token{rank} attributes, if present, must be unique among the \Category elements of a single \CategoricalDistribution, and must begin with \val{0}. Thus, if one \Category with a \token{rank} is present, the value of its \token{rank} must be \val{0}; if there are two, they must be \val{0} and \val{1}, etc.
+
+
+\subsection{The \class{ListOfCategories} class}
+\label{ListOfCategories-class}
+\label{listofcategories-class}
+
+The \ListOfCategories class, like other \ListOf classes in \sbmlthreecore, is a container for one or more \Category objects. Unlike many of \ListOf classes in \sbmlthreecore, at least one child \Category is required, because the behavior of the parent distribution would be undefined if it had no child \Category objects from which to choose.
+
+
+\subsection{The \class{Category} class}
+\label{Category-class}
+\label{category-class}
+
+The \Category class has a required \UncertValue child \token{value}, and an optional \UncertValue child \token{probability}. In any \CategoricalDistribution, only one child \Category may have an undefined \token{probability}; the rest must be defined and their totals add up to less than one. If all \Category children have defined \token{probability} children, the total of all of those probabilities must add up to exactly one.
+
+Each \Category defines a \token{value}, and that value's \token{probability} of being sampled from that distribution. If the \token{probability} is not explicitly defined, it is implicitly defined as one minus the sum of the probabilities of all the other \Category objects in the same \CategoricalDistribution.
+
+\subsubsection{Attributes inherited from \SBase}
+
+A \Category always inherits the optional \token{metaid} and \token{sboTerm} attributes, and inherits optional \token{id} and \token{name} attributes as described in \sec{sec:idname}. The \token{id} of a \Category has no mathematical meaning.
Modified: trunk/specifications/sbml-level-3/version-1/distrib/apdx-validation.tex
===================================================================
--- trunk/specifications/sbml-level-3/version-1/distrib/apdx-validation.tex 2019-01-29 22:37:25 UTC (rev 25780)
+++ trunk/specifications/sbml-level-3/version-1/distrib/apdx-validation.tex 2019-01-30 22:19:12 UTC (rev 25781)
@@ -108,14 +108,14 @@
\val{true}. (Reference: SBML Level~3 Package specification for
Distributions, Version~1 \sec{xml-namespace}.)}
-\subsubsection*{Rules for extended \class{FunctionDefinition} object}
+%\subsubsection*{Rules for extended \class{FunctionDefinition} object}
-\validRule{distrib-20201}{A \FunctionDefinition object may contain one
-and only one instance of the \DrawFromDistribution element. No other
-elements from the SBML Level 3 Distributions namespaces are permitted on
-a \FunctionDefinition object. (Reference: SBML Level~3 Package
-specification for Distributions, Version~1,
-\sec{extended-functiondefinition-class}.)}
+%\validRule{distrib-20201}{A \FunctionDefinition object may contain one
+%and only one instance of the \DrawFromDistribution element. No other
+%elements from the SBML Level 3 Distributions namespaces are permitted on
+%a \FunctionDefinition object. (Reference: SBML Level~3 Package
+%specification for Distributions, Version~1,
+%\sec{extended-functiondefinition-class}.)}
\subsubsection*{Rules for extended \class{SBase} object}
@@ -138,69 +138,69 @@
\sec{extended-sbase-class}.)}
-\subsubsection*{Rules for \class{DrawFromDistribution} object}
+%\subsubsection*{Rules for \class{DrawFromDistribution} object}
-\validRule{distrib-20401}{A \DrawFromDistribution object may have the
-optional SBML Level~3 Core attributes \token{metaid} and
-\token{sboTerm}. No other attributes from the SBML Level 3 Core
-namespaces are permitted on a \DrawFromDistribution. (Reference: SBML
-Level~3 Version~1 Core, Section~3.2.)}
+%\validRule{distrib-20401}{A \DrawFromDistribution object may have the
+%optional SBML Level~3 Core attributes \token{metaid} and
+%\token{sboTerm}. No other attributes from the SBML Level 3 Core
+%namespaces are permitted on a \DrawFromDistribution. (Reference: SBML
+%Level~3 Version~1 Core, Section~3.2.)}
-\validRule{distrib-20402}{A \DrawFromDistribution object may have the
-optional SBML Level~3 Core subobjects for notes and annotations. No
-other elements from the SBML Level 3 Core namespaces are permitted on a
-\DrawFromDistribution. (Reference: SBML Level~3 Version~1 Core,
-Section~3.2.)}
+%\validRule{distrib-20402}{A \DrawFromDistribution object may have the
+%optional SBML Level~3 Core subobjects for notes and annotations. No
+%other elements from the SBML Level 3 Core namespaces are permitted on a
+%\DrawFromDistribution. (Reference: SBML Level~3 Version~1 Core,
+%Section~3.2.)}
-\validRule{distrib-20403}{A \DrawFromDistribution object may contain one
-and only one instance of each of the \ListOfDistribInputs and
-Distribution elements. No other elements from the SBML Level 3
-Distributions namespaces are permitted on a \DrawFromDistribution
-object. (Reference: SBML Level~3 Package specification for
-Distributions, Version~1, \sec{drawfromdistribution-class}.)}
+%\validRule{distrib-20403}{A \DrawFromDistribution object may contain one
+%and only one instance of each of the \ListOfDistribInputs and
+%Distribution elements. No other elements from the SBML Level 3
+%Distributions namespaces are permitted on a \DrawFromDistribution
+%object. (Reference: SBML Level~3 Package specification for
+%Distributions, Version~1, \sec{drawfromdistribution-class}.)}
-\validRule{distrib-20404}{Apart from the general notes and annotations
-subobjects permitted on all SBML objects, a \ListOfDistribInputs
-container object may only contain \DistribInput objects. (Reference:
-SBML Level~3 Package specification for Distributions, Version~1,
-\sec{listofdistribinputs-class}.)}
+%\validRule{distrib-20404}{Apart from the general notes and annotations
+%subobjects permitted on all SBML objects, a \ListOfDistribInputs
+%container object may only contain \DistribInput objects. (Reference:
+%SBML Level~3 Package specification for Distributions, Version~1,
+%\sec{listofdistribinputs-class}.)}
-\validRule{distrib-20405}{A \ListOfDistribInputs object may have the
-optional SBML Level~3 Core attributes \token{metaid} and
-\token{sboTerm}. No other attributes from the SBML Level 3 Core
-namespaces are permitted on a \ListOfDistribInputs object. (Reference:
-SBML Level~3 Package specification for Distributions, Version~1,
-\sec{listofdistribinputs-class}.)}
+%\validRule{distrib-20405}{A \ListOfDistribInputs object may have the
+%optional SBML Level~3 Core attributes \token{metaid} and
+%\token{sboTerm}. No other attributes from the SBML Level 3 Core
+%namespaces are permitted on a \ListOfDistribInputs object. (Reference:
+%SBML Level~3 Package specification for Distributions, Version~1,
+%\sec{listofdistribinputs-class}.)}
-\subsubsection*{Rules for \class{DistribInput} object}
+%\subsubsection*{Rules for \class{DistribInput} object}
-\validRule{distrib-20501}{A \DistribInput object may have the optional
-SBML Level~3 Core attributes \token{metaid} and \token{sboTerm}. No
-other attributes from the SBML Level 3 Core namespaces are permitted on
-a \DistribInput. (Reference: SBML Level~3 Version~1 Core, Section~3.2.)}
+%\validRule{distrib-20501}{A \DistribInput object may have the optional
+%SBML Level~3 Core attributes \token{metaid} and \token{sboTerm}. No
+%other attributes from the SBML Level 3 Core namespaces are permitted on
+%a \DistribInput. (Reference: SBML Level~3 Version~1 Core, Section~3.2.)}
-\validRule{distrib-20502}{A \DistribInput object may have the optional
-SBML Level~3 Core subobjects for notes and annotations. No other
-elements from the SBML Level 3 Core namespaces are permitted on a
-\DistribInput. (Reference: SBML Level~3 Version~1 Core, Section~3.2.)}
+%\validRule{distrib-20502}{A \DistribInput object may have the optional
+%SBML Level~3 Core subobjects for notes and annotations. No other
+%elements from the SBML Level 3 Core namespaces are permitted on a
+%\DistribInput. (Reference: SBML Level~3 Version~1 Core, Section~3.2.)}
-\validRule{distrib-20503}{A \DistribInput object may have the optional
-attributes \token{distrib:\-id}, \token{distrib:\-name} and
-\token{distrib:\-index}. No other attributes from the SBML Level 3
-Distributions namespaces are permitted on a \DistribInput object.
-(Reference: SBML Level~3 Package specification for Distributions,
-Version~1, \sec{distribinput-class}.)}
+%\validRule{distrib-20503}{A \DistribInput object may have the optional
+%attributes \token{distrib:\-id}, \token{distrib:\-name} and
+%\token{distrib:\-index}. No other attributes from the SBML Level 3
+%Distributions namespaces are permitted on a \DistribInput object.
+%(Reference: SBML Level~3 Package specification for Distributions,
+%Version~1, \sec{distribinput-class}.)}
-\validRule{distrib-20504}{The attribute \token{distrib:\-name} on a
-\DistribInput must have a value of data type \token{string}. (Reference:
-SBML Level~3 Package specification for Distributions, Version~1,
-\sec{distribinput-class}.)}
+%\validRule{distrib-20504}{The attribute \token{distrib:\-name} on a
+%\DistribInput must have a value of data type \token{string}. (Reference:
+%SBML Level~3 Package specification for Distributions, Version~1,
+%\sec{distribinput-class}.)}
-\validRule{distrib-20505}{The attribute \token{distrib:\-index} on a
-\DistribInput must have a value of data type \token{integer}.
-(Reference: SBML Level~3 Package specification for Distributions,
-Version~1, \sec{distribinput-class}.)}
+%\validRule{distrib-20505}{The attribute \token{distrib:\-index} on a
+%\DistribInput must have a value of data type \token{integer}.
+%(Reference: SBML Level~3 Package specification for Distributions,
+%Version~1, \sec{distribinput-class}.)}
\subsubsection*{Rules for \class{Distribution} object}
Modified: trunk/specifications/sbml-level-3/version-1/distrib/figs/extended-sbase.pdf
===================================================================
(Binary files differ)
Modified: trunk/specifications/sbml-level-3/version-1/distrib/figs/externalDistribution.pdf
===================================================================
(Binary files differ)
Modified: trunk/specifications/sbml-level-3/version-1/distrib/figs/uncertStatistics.pdf
===================================================================
(Binary files differ)
Modified: trunk/specifications/sbml-level-3/version-1/distrib/figs/uncertValue.pdf
===================================================================
(Binary files differ)
Modified: trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.pdf
===================================================================
(Binary files differ)
Modified: trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex
===================================================================
--- trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex 2019-01-29 22:37:25 UTC (rev 25780)
+++ trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex 2019-01-30 22:19:12 UTC (rev 25781)
@@ -19,12 +19,12 @@
\newcommand{\Category}{\defRef{Category}{Category-class}}
\newcommand{\ContinuousUnivariateDistribution}{\defRef{ContinuousUnivariateDistribution}{ContinuousUnivariateDistribution-class}}
\newcommand{\DiscreteUnivariateDistribution}{\defRef{DiscreteUnivariateDistribution}{DiscreteUnivariateDistribution-class}}
-\newcommand{\DistribInput}{\defRef{DistribInput}{DistribInput-class}}
+%\newcommand{\DistribInput}{\defRef{DistribInput}{DistribInput-class}}
\newcommand{\DistribBase}{\defRef{DistribBase}{DistribBase-class}}
\newcommand{\Distribution}{\defRef{Distribution}{Distribution-class}}
-\newcommand{\DrawFromDistribution}{\defRef{DrawFromDistribution}{DrawFromDistribution-class}}
+%\newcommand{\DrawFromDistribution}{\defRef{DrawFromDistribution}{DrawFromDistribution-class}}
\newcommand{\ListOfCategories}{\defRef{ListOfCategories}{ListOfCategories-class}}
-\newcommand{\ListOfDistribInputs}{\defRef{ListOfDistribInputs}{ListOfDistribInputs-class}}
+%\newcommand{\ListOfDistribInputs}{\defRef{ListOfDistribInputs}{ListOfDistribInputs-class}}
\newcommand{\ListOfExternalParameters}{\defRef{ListOfExternalParameters}{ListOfExternalParameters-class}}
\newcommand{\MultivariateDistribution}{\defRef{MultivariateDistribution}{MultivariateDistribution-class}}
\newcommand{\ExternalDistribution}{\defRef{ExternalDistribution}{ExternalDistribution-class}}
@@ -150,7 +150,7 @@
0.18 (Draft) & June 2017 & Lucian Smith & Fixes to reflect feedback on version 0.17.\\\midrule
0.19 (Draft) & June 2018 & Lucian Smith & Resolved id/name issues with SBML core l3v1 vs. l3v2.\\\midrule
0.20 (Draft) & December 2018 & Lucian Smith & Updates to allow distributions as new MathML csymbols.\\\midrule
-0.21 (Draft) & January 2018 & Lucian Smith & \changed{Revisions based on suggestions from sbml-distrib, including extensive edits from Matthias.}\\
+0.21 (Draft) & January 2018 & Lucian Smith & \changed{Revisions based on suggestions from sbml-distrib, including extensive edits from Matthias. Also removed the extended function definitions entirely.}\\
%\midrule
\bottomrule
\end{edtable}
@@ -553,7 +553,7 @@
Note that the \distrib package may be used with both \threeone and \threetwo documents, with the only semantic change between the two present in the \DistribBase class. Note that if used with \threeone the corresponding \distrib namespace for \threeone must be used and similarly if \threetwo is being used, the \distrib namespace must be the one for \threetwo.
-In addition, SBML documents using a given package must indicate whether the package may be used to change the mathematical meaning of \sbmlthreecore elements. This is done using the attribute \token{required} on the \token{<sbml>} element in the SBML document. For the \distrib package, the value of this attribute must be \val{true}, as the \DrawFromDistribution element overrides the core definition of a \FunctionDefinition, and because of the newly-allowed MathML elements. Note that the value of this attribute must \emph{always} be set to \val{true}, even if the particular model does not contain any \DrawFromDistribution elements or new MathML elements.
+In addition, SBML documents using a given package must indicate whether the package may be used to change the mathematical meaning of \sbmlthreecore elements. This is done using the attribute \token{required} on the \token{<sbml>} element in the SBML document. For the \distrib package, the value of this attribute must be \val{true}, as it \changed{defined new csymbols that may be used in any MathML}. Note that the value of this attribute must \emph{always} be set to \val{true}, even if the particular model does not contain \changed{any of these csymbols}.
The following fragment illustrates the beginning of a typical SBML model using \threeone and this version of the \distrib package:
@@ -574,6 +574,8 @@
distrib:required="true">
\end{example}
+\changed{There is no difference between these two namespaces, and all package semantics are identical.}
+
\paragraph{XML Namespace use}
For element names, XML has clear rules about how to declare and use namespaces. In typical SBML documents, the \distrib namespace will be defined as above, and elements will therefore need to be prefixed with \val{distrib:}.
@@ -595,27 +597,27 @@
The type \primtype{ExternalRef} is derived from \primtype{string} with the additional requirement that it be a valid URI. An \primtype{ExternalRef} is used in \distrib to point to ontologies such as ProbOnto~\citep{swat:2016} which contain defined distributions and parameters.
-\subsubsection{Type \fixttspace\primtypeNC{UncertId}}
-\label{sec:primtype-uncertid}
+%\subsubsection{Type \fixttspace\primtypeNC{UncertId}}
+%\label{sec:primtype-uncertid}
-The type \primtype{UncertId} is derived from \primtype{SId} (\sbmlthreecore specification Section~3.1.7) and has identical syntax. The \primtype{UncertId} type is used to create local ids that can be used in the extended \FunctionDefinition objects to refer to the arguments of the function, in much the same way that the identities of the \token{bvar} elements are used in MathML \token{lambda} elements. Each \primtype{UncertId} has a scope local to the \DrawFromDistribution in which it is found. The
-equality of \primtype{UncertId} values is determined by an exact
-character sequence match; i.e., comparisons of these identifiers must be
-performed in a case-sensitive manner.
+%The type \primtype{UncertId} is derived from \primtype{SId} (\sbmlthreecore specification Section~3.1.7) and has identical syntax. The \primtype{UncertId} type is used to create local ids that can be used in the extended \FunctionDefinition objects to refer to the arguments of the function, in much the same way that the identities of the \token{bvar} elements are used in MathML \token{lambda} elements. Each \primtype{UncertId} has a scope local to the \DrawFromDistribution in which it is found. The
+%equality of \primtype{UncertId} values is determined by an exact
+%character sequence match; i.e., comparisons of these identifiers must be
+%performed in a case-sensitive manner.
-\subsubsection{Type \fixttspace\primtypeNC{UncertIdRef}}
-\label{sec:primtype-uncertidref}
+%\subsubsection{Type \fixttspace\primtypeNC{UncertIdRef}}
+%\label{sec:primtype-uncertidref}
-Type \primtype{UncertIdRef} is used to reference different elements in different contexts. Inside a \FunctionDefinition, an \primtype{UncertIdRef} may only reference an \primtype{UncertId} from a \DistribInput from that same \FunctionDefinition. Outside a \FunctionDefinition, an \primtype{UncertIdRef} may reference any element with an \primtype{SId} that has mathematical meaning: even elements from other packages, and not in \sbmlthreecore. In the context of an \threeone document, this still holds true. Even though \threeone elements with \primtype{SIdRef} attributes cannot reference package elements, this does not preclude \distrib elements from doing so.
+%Type \primtype{UncertIdRef} is used to reference different elements in different contexts. Inside a \FunctionDefinition, an \primtype{UncertIdRef} may only reference an \primtype{UncertId} from a \DistribInput from that same \FunctionDefinition. Outside a \Functio...
[truncated message content] |
|
From: Keating, S. M. <ske...@ca...> - 2019-01-30 12:06:54
|
Works for me :-) On 29/01/2019 22:37, luciansmith--- via sbml-svn wrote: > Revision: 25780 > http://sourceforge.net/p/sbml/code/25780 > Author: luciansmith > Date: 2019-01-29 22:37:25 +0000 (Tue, 29 Jan 2019) > Log Message: > ----------- > Update species error section again, and added an example. Hopefully am finally correct about error propagation. > > Modified Paths: > -------------- > trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.pdf > trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex > > Modified: trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.pdf > =================================================================== > (Binary files differ) > > Modified: trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex > =================================================================== > --- trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex 2019-01-28 16:15:41 UTC (rev 25779) > +++ trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex 2019-01-29 22:37:25 UTC (rev 25780) > @@ -1261,8 +1261,55 @@ > > \paragraph{The uncertainty of a \Species} > > -A \Species is a unique SBML construct in that its value is either an amount or a concentration, depending on the value of its \token{hasOnlySubstanceUnits} attribute (\val{true} for amount, or \val{false} for concentration). The value of its uncertainty tracks with this: if the value of the parent \Species \token{hasOnlySubstanceUnits} is \val{true}, the uncertainty is in terms of amounts, and if \val{false}, the uncertainty is in terms of concentration. It is assumed that if the uncertainty is expressed in terms of concentration, that uncertainty is \emph{not affected} by any uncertainty about the size of the species' compartment. That is, we assume that if we measure a species concentration as $5 \pm 0.2$ in a compartment volume of 1, we would have measured the same concentration variability had the compartment volume been 10 or 100. Therefore, to convert the uncertainty of a \Species concentration to the uncertainty of a \Species amount, we multiply by the size of the compartment, and ignore that compartment's uncertainty. Thus, if the above example species concentration appears in a compartment of size $2$, the species amount would be $10 \pm 0.4$. > +A \Species is a unique SBML construct in that its value is either an amount or a concentration, depending on the value of its \token{hasOnlySubstanceUnits} attribute (\val{true} for amount, or \val{false} for concentration). The value of its uncertainty tracks with this: if the value of the parent \Species \token{hasOnlySubstanceUnits} is \val{true}, the uncertainty is in terms of amounts, and if \val{false}, the uncertainty is in terms of concentration. > > +If a \Species is being modeled in SBML in amounts, but was measured in terms of its concentration, or visa versa, an \InitialAssignment should be created that explicitly handles this conversion and assigns the appropriate value to the \Species, as in the example below. > + > +\begin{example} > +... > + <listOfCompartments> > + <compartment id="C" spatialDimensions="3" size="2" constant="true"> > + <distrib:uncertainty> > + <distrib:uncertStatistics> > + <distrib:standardDeviation distrib:value="0.15"/> > + </distrib:uncertStatistics> > + </distrib:uncertainty> > + </compartment> > + </listOfCompartments> > + <listOfSpecies> > + <species id="S_amt" compartment="C" hasOnlySubstanceUnits="true" > + boundaryCondition="false" constant="false"/> > + </listOfSpecies> > + <listOfParameters> > + <parameter id="S_conc" value="3.4" constant="true"> > + <distrib:uncertainty> > + <distrib:uncertStatistics> > + <distrib:standardDeviation distrib:value="0.3"/> > + </distrib:uncertStatistics> > + </distrib:uncertainty> > + </parameter> > + </listOfParameters> > + <listOfInitialAssignments> > + <initialAssignment symbol="S_amt"> > + <math xmlns="http://www.w3.org/1998/Math/MathML"> > + <apply> > + <times/> > + <ci> S_conc </ci> > + <ci> C </ci> > + </apply> > + </math> > + </initialAssignment> > + </listOfInitialAssignments> > +... > +\end{example} > + > +Here, the uncertainty of the species \val{S\_amt} is not set explicitly, and instead can be derived from the uncertainty of the values in its initial assignment (\val{S\_conc} and \val{C}). > + > +\paragraph{Propagation of error} > + > +It may be possible to calculate the propagation of error for a simulation of an SBML model. Be advised that this will be a complicated system, and may involve calculating partial derivates of equations that are not explicitly encoded. Many simulators choose instead to estimate the error through stochastic simulations. Either approach should be possible with a properly encoded \distribshort model. > + > + > \end{blockChanged} > > \subsubsection{Attributes inherited from \SBase} > > > > _______________________________________________ > sbml-svn mailing list > sbm...@li... > https://lists.sourceforge.net/lists/listinfo/sbml-svn > |
|
From: <luc...@us...> - 2019-01-29 22:37:34
|
Revision: 25780
http://sourceforge.net/p/sbml/code/25780
Author: luciansmith
Date: 2019-01-29 22:37:25 +0000 (Tue, 29 Jan 2019)
Log Message:
-----------
Update species error section again, and added an example. Hopefully am finally correct about error propagation.
Modified Paths:
--------------
trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.pdf
trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex
Modified: trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.pdf
===================================================================
(Binary files differ)
Modified: trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex
===================================================================
--- trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex 2019-01-28 16:15:41 UTC (rev 25779)
+++ trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex 2019-01-29 22:37:25 UTC (rev 25780)
@@ -1261,8 +1261,55 @@
\paragraph{The uncertainty of a \Species}
-A \Species is a unique SBML construct in that its value is either an amount or a concentration, depending on the value of its \token{hasOnlySubstanceUnits} attribute (\val{true} for amount, or \val{false} for concentration). The value of its uncertainty tracks with this: if the value of the parent \Species \token{hasOnlySubstanceUnits} is \val{true}, the uncertainty is in terms of amounts, and if \val{false}, the uncertainty is in terms of concentration. It is assumed that if the uncertainty is expressed in terms of concentration, that uncertainty is \emph{not affected} by any uncertainty about the size of the species' compartment. That is, we assume that if we measure a species concentration as $5 \pm 0.2$ in a compartment volume of 1, we would have measured the same concentration variability had the compartment volume been 10 or 100. Therefore, to convert the uncertainty of a \Species concentration to the uncertainty of a \Species amount, we multiply by the size of the compartment, and ignore that compartment's uncertainty. Thus, if the above example species concentration appears in a compartment of size $2$, the species amount would be $10 \pm 0.4$.
+A \Species is a unique SBML construct in that its value is either an amount or a concentration, depending on the value of its \token{hasOnlySubstanceUnits} attribute (\val{true} for amount, or \val{false} for concentration). The value of its uncertainty tracks with this: if the value of the parent \Species \token{hasOnlySubstanceUnits} is \val{true}, the uncertainty is in terms of amounts, and if \val{false}, the uncertainty is in terms of concentration.
+If a \Species is being modeled in SBML in amounts, but was measured in terms of its concentration, or visa versa, an \InitialAssignment should be created that explicitly handles this conversion and assigns the appropriate value to the \Species, as in the example below.
+
+\begin{example}
+...
+ <listOfCompartments>
+ <compartment id="C" spatialDimensions="3" size="2" constant="true">
+ <distrib:uncertainty>
+ <distrib:uncertStatistics>
+ <distrib:standardDeviation distrib:value="0.15"/>
+ </distrib:uncertStatistics>
+ </distrib:uncertainty>
+ </compartment>
+ </listOfCompartments>
+ <listOfSpecies>
+ <species id="S_amt" compartment="C" hasOnlySubstanceUnits="true"
+ boundaryCondition="false" constant="false"/>
+ </listOfSpecies>
+ <listOfParameters>
+ <parameter id="S_conc" value="3.4" constant="true">
+ <distrib:uncertainty>
+ <distrib:uncertStatistics>
+ <distrib:standardDeviation distrib:value="0.3"/>
+ </distrib:uncertStatistics>
+ </distrib:uncertainty>
+ </parameter>
+ </listOfParameters>
+ <listOfInitialAssignments>
+ <initialAssignment symbol="S_amt">
+ <math xmlns="http://www.w3.org/1998/Math/MathML">
+ <apply>
+ <times/>
+ <ci> S_conc </ci>
+ <ci> C </ci>
+ </apply>
+ </math>
+ </initialAssignment>
+ </listOfInitialAssignments>
+...
+\end{example}
+
+Here, the uncertainty of the species \val{S\_amt} is not set explicitly, and instead can be derived from the uncertainty of the values in its initial assignment (\val{S\_conc} and \val{C}).
+
+\paragraph{Propagation of error}
+
+It may be possible to calculate the propagation of error for a simulation of an SBML model. Be advised that this will be a complicated system, and may involve calculating partial derivates of equations that are not explicitly encoded. Many simulators choose instead to estimate the error through stochastic simulations. Either approach should be possible with a properly encoded \distribshort model.
+
+
\end{blockChanged}
\subsubsection{Attributes inherited from \SBase}
|
|
From: <bg...@us...> - 2019-01-28 16:15:54
|
Revision: 25779
http://sourceforge.net/p/sbml/code/25779
Author: bgoli
Date: 2019-01-28 16:15:41 +0000 (Mon, 28 Jan 2019)
Log Message:
-----------
Updated FBC v3 harmony proposal with new charge definition.
Modified Paths:
--------------
trunk/specifications/sbml-level-3/version-1/fbc/spec/images/fbc_uml_src.ai
trunk/specifications/sbml-level-3/version-1/fbc/spec/main.pdf
trunk/specifications/sbml-level-3/version-1/fbc/spec/main.synctex
trunk/specifications/sbml-level-3/version-1/fbc/spec/main.tex
trunk/specifications/sbml-level-3/version-1/fbc/spec/syntax_user_constraints.tex
Added Paths:
-----------
trunk/specifications/sbml-level-3/version-1/fbc/spec/harmony2018-proposal-fbc-v3.pdf
trunk/specifications/sbml-level-3/version-1/fbc/spec/images/v3harmony_fbc_species.pdf
Added: trunk/specifications/sbml-level-3/version-1/fbc/spec/harmony2018-proposal-fbc-v3.pdf
===================================================================
(Binary files differ)
Index: trunk/specifications/sbml-level-3/version-1/fbc/spec/harmony2018-proposal-fbc-v3.pdf
===================================================================
--- trunk/specifications/sbml-level-3/version-1/fbc/spec/harmony2018-proposal-fbc-v3.pdf 2019-01-22 11:53:07 UTC (rev 25778)
+++ trunk/specifications/sbml-level-3/version-1/fbc/spec/harmony2018-proposal-fbc-v3.pdf 2019-01-28 16:15:41 UTC (rev 25779)
Property changes on: trunk/specifications/sbml-level-3/version-1/fbc/spec/harmony2018-proposal-fbc-v3.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Modified: trunk/specifications/sbml-level-3/version-1/fbc/spec/images/fbc_uml_src.ai
===================================================================
--- trunk/specifications/sbml-level-3/version-1/fbc/spec/images/fbc_uml_src.ai 2019-01-22 11:53:07 UTC (rev 25778)
+++ trunk/specifications/sbml-level-3/version-1/fbc/spec/images/fbc_uml_src.ai 2019-01-28 16:15:41 UTC (rev 25779)
@@ -1,12 +1,12 @@
%PDF-1.5
%\xE2\xE3\xCF\xD3
1 0 obj
-<</Metadata 2 0 R/OCProperties<</D<</ON[8 0 R 170 0 R 364 0 R 571 0 R 797 0 R 1019 0 R 1440 0 R 1860 0 R 2266 0 R 2672 0 R 3078 0 R 3484 0 R 3892 0 R 4312 0 R 4732 0 R 5152 0 R]/Order 5153 0 R/RBGroups[]>>/OCGs[8 0 R 170 0 R 364 0 R 571 0 R 797 0 R 1019 0 R 1440 0 R 1860 0 R 2266 0 R 2672 0 R 3078 0 R 3484 0 R 3892 0 R 4312 0 R 4732 0 R 5152 0 R]>>/Pages 3 0 R/Type/Catalog>>
+<</Metadata 2 0 R/OCProperties<</D<</ON[8 0 R 170 0 R 364 0 R 571 0 R 797 0 R 1019 0 R 1440 0 R 1860 0 R 2266 0 R 2672 0 R 3078 0 R 3484 0 R 3892 0 R 4312 0 R 4732 0 R 5152 0 R 5580 0 R]/Order 5581 0 R/RBGroups[]>>/OCGs[8 0 R 170 0 R 364 0 R 571 0 R 797 0 R 1019 0 R 1440 0 R 1860 0 R 2266 0 R 2672 0 R 3078 0 R 3484 0 R 3892 0 R 4312 0 R 4732 0 R 5152 0 R 5580 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
-<</Length 24284/Subtype/XML/Type/Metadata>>stream
+<</Length 25901/Subtype/XML/Type/Metadata>>stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c143 79.161210, 2017/08/11-10:28:36 ">
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c145 79.163499, 2018/08/13-16:40:22 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
@@ -15,13 +15,15 @@
xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font#"
xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"
- xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">
- <xmp:CreatorTool>Adobe Illustrator CC 22.1 (Windows)</xmp:CreatorTool>
- <xmp:CreateDate>2018-07-05T11:23:35+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2018-09-28T17:16:29+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2018-09-28T17:16:29+02:00</xmp:MetadataDate>
+ xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
+ xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
+ xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
+ <xmp:CreatorTool>Adobe Illustrator CC 23.0 (Windows)</xmp:CreatorTool>
+ <xmp:CreateDate>2019-01-28T16:36:33+01:00</xmp:CreateDate>
+ <xmp:ModifyDate>2019-01-28T17:04:56+01:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2019-01-28T17:04:56+01:00</xmp:MetadataDate>
<xmp:Thumbnails>
<rdf:Alt>
<rdf:li rdf:parseType="Resource">
@@ -28,7 +30,7 @@
<xmpGImg:width>256</xmpGImg:width>
<xmpGImg:height>124</xmpGImg:height>
<xmpGImg:format>JPEG</xmpGImg:format>
- <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAfAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FUBeajcwXRhjtjI
gRX9WkxBLFgVHpxSjbj498VSrTvNt7e3F3AdJmtms5PSkMvMgmnIU9KOUjkhVxyANCMaVPbG5kub
ZZpIjC5ZwYzyB+FyoPxqjfEBUVXFWM+dPOsnl28t4hY3V2k0RlLWqhuHGRUPL4JD0k5AAdFbrmRh
0xyC7AaMsyDt+PsYbbfmn5ra0juri1khXkVnhezkWVaLSvFTJtyFaitFO/QnLDoJ3XFFwhPUdSPk
mGkfmTrTQXb6zE9m8UPrQKYJF5AcyxDQR3qMfsgJyVqgmhB2idFIciD7v2tmOeWjxEfL+1nvmG6v
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
3Yq7FXYq/wD/2Q==</xmpGImg:image>
+ <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAfAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FUBeajcwXRhjtjI
gRX9WkxBLFgVHpxSjbj498VSrTvNt7e3F3AdJmtms5PSkMvMgmnIU9KOUjkhVxyANCMaVPbG5kub
ZZpIjC5ZwYzyB+FyoPxqjfEBUVXFWM+dPOsnl28t4hY3V2k0RlLWqhuHGRUPL4JD0k5AAdFbrmRh
0xyC7AaMsyDt+PsYbbfmn5ra0juri1khXkVnhezkWVaLSvFTJtyFaitFO/QnLDoJ3XFFwhPUdSPk
mGkfmTrTQXb6zE9m8UPrQKYJF5AcyxDQR3qMfsgJyVqgmhB2idFIciD7v2tmOeWjxEfL+1nvmG6v
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</xmpGImg:image>
</rdf:li>
</rdf:Alt>
</xmp:Thumbnails>
@@ -36,22 +38,13 @@
<xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
<xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
<xmpTPg:MaxPageSize rdf:parseType="Resource">
- <stDim:w>592.556980</stDim:w>
- <stDim:h>1130.500000</stDim:h>
+ <stDim:w>183.984009</stDim:w>
+ <stDim:h>49.474036</stDim:h>
<stDim:unit>Points</stDim:unit>
</xmpTPg:MaxPageSize>
<xmpTPg:Fonts>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
- <stFnt:fontName>Arial-BoldMT</stFnt:fontName>
- <stFnt:fontFamily>Arial</stFnt:fontFamily>
- <stFnt:fontFace>Bold</stFnt:fontFace>
- <stFnt:fontType>Open Type</stFnt:fontType>
- <stFnt:versionString>Version 7.00</stFnt:versionString>
- <stFnt:composite>False</stFnt:composite>
- <stFnt:fontFileName>arialbd.ttf</stFnt:fontFileName>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
<stFnt:fontName>ArialMT</stFnt:fontName>
<stFnt:fontFamily>Arial</stFnt:fontFamily>
<stFnt:fontFace>Regular</stFnt:fontFace>
@@ -69,6 +62,15 @@
<stFnt:composite>False</stFnt:composite>
<stFnt:fontFileName>ariali.ttf</stFnt:fontFileName>
</rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <stFnt:fontName>Arial-BoldMT</stFnt:fontName>
+ <stFnt:fontFamily>Arial</stFnt:fontFamily>
+ <stFnt:fontFace>Bold</stFnt:fontFace>
+ <stFnt:fontType>Open Type</stFnt:fontType>
+ <stFnt:versionString>Version 7.00</stFnt:versionString>
+ <stFnt:composite>False</stFnt:composite>
+ <stFnt:fontFileName>arialbd.ttf</stFnt:fontFileName>
+ </rdf:li>
</rdf:Bag>
</xmpTPg:Fonts>
<xmpTPg:PlateNames>
@@ -167,11 +169,29 @@
</rdf:li>
</rdf:Seq>
</xmpTPg:SwatchGroups>
- <illustrator:Type>Document</illustrator:Type>
<dc:format>application/pdf</dc:format>
<xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
- <xmpMM:DocumentID>uuid:151f7f67-1b03-4491-9e0e-829abf76a0b6</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:4a96c42b-4912-465b-9635-e270f81d9dbb</xmpMM:InstanceID>
+ <xmpMM:DocumentID>xmp.did:f459928c-eba8-1f46-8899-afde30f36e59</xmpMM:DocumentID>
+ <xmpMM:InstanceID>uuid:c9687742-13d1-4404-b1e2-e009894efb76</xmpMM:InstanceID>
+ <xmpMM:OriginalDocumentID>uuid:151f7f67-1b03-4491-9e0e-829abf76a0b6</xmpMM:OriginalDocumentID>
+ <xmpMM:DerivedFrom rdf:parseType="Resource">
+ <stRef:instanceID>uuid:4a96c42b-4912-465b-9635-e270f81d9dbb</stRef:instanceID>
+ <stRef:documentID>uuid:151f7f67-1b03-4491-9e0e-829abf76a0b6</stRef:documentID>
+ <stRef:originalDocumentID>uuid:151f7f67-1b03-4491-9e0e-829abf76a0b6</stRef:originalDocumentID>
+ <stRef:renditionClass>proof:pdf</stRef:renditionClass>
+ </xmpMM:DerivedFrom>
+ <xmpMM:History>
+ <rdf:Seq>
+ <rdf:li rdf:parseType="Resource">
+ <stEvt:action>saved</stEvt:action>
+ <stEvt:instanceID>xmp.iid:f459928c-eba8-1f46-8899-afde30f36e59</stEvt:instanceID>
+ <stEvt:when>2019-01-28T16:36:34+01:00</stEvt:when>
+ <stEvt:softwareAgent>Adobe Illustrator CC 23.0 (Windows)</stEvt:softwareAgent>
+ <stEvt:changed>/</stEvt:changed>
+ </rdf:li>
+ </rdf:Seq>
+ </xmpMM:History>
+ <illustrator:Type>Document</illustrator:Type>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
@@ -200,53 +220,1558 @@
endstream
endobj
3 0 obj
-<</Count 5/Kids[10 0 R 172 0 R 363 0 R 366 0 R 1021 0 R]/Type/Pages>>
+<</Count 6/Kids[10 0 R 172 0 R 363 0 R 366 0 R 1021 0 R 5582 0 R]/Type/Pages>>
endobj
10 0 obj
-<</ArtBox[0.5 0.499985 593.057 718.692]/BleedBox[0.0 0.0 593.557 719.192]/Contents 5154 0 R/CropBox[0.0 0.0 593.557 719.192]/LastModified(D:20180928171629+02'00')/MediaBox[0.0 0.0 593.557 719.192]/Parent 3 0 R/PieceInfo<</Illustrator 5155 0 R>>/Resources<</ExtGState<</GS0 5156 0 R>>/Properties<</MC0 5152 0 R>>/XObject<</Fm0 5157 0 R/Fm1 5158 0 R/Fm10 5159 0 R/Fm11 5160 0 R/Fm12 5161 0 R/Fm13 5162 0 R/Fm14 5163 0 R/Fm15 5164 0 R/Fm16 5165 0 R/Fm17 5166 0 R/Fm18 5167 0 R/Fm19 5168 0 R/Fm2 5169 0 R/Fm20 5170 0 R/Fm21 5171 0 R/Fm22 5172 0 R/Fm23 5173 0 R/Fm24 5174 0 R/Fm25 5175 0 R/Fm26 5176 0 R/Fm27 5177 0 R/Fm28 5178 0 R/Fm29 5179 0 R/Fm3 5180 0 R/Fm30 5181 0 R/Fm31 5182 0 R/Fm32 5183 0 R/Fm33 5184 0 R/Fm34 5185 0 R/Fm35 5186 0 R/Fm36 5187 0 R/Fm37 5188 0 R/Fm38 5189 0 R/Fm39 5190 0 R/Fm4 5191 0 R/Fm40 5192 0 R/Fm41 5193 0 R/Fm42 5194 0 R/Fm43 5195 0 R/Fm44 5196 0 R/Fm45 5197 0 R/Fm46 5198 0 R/Fm47 5199 0 R/Fm5 5200 0 R/Fm6 5201 0 R/Fm7 5202 0 R/Fm8 5203 0 R/Fm9 5204 0 R>>>>/Thumb 62 0 R/TrimBox[0.0 0.0 593.557 719.192]/Type/Page>>
+<</ArtBox[0.5 0.499985 593.057 718.692]/BleedBox[0.0 0.0 593.557 719.192]/Contents 5583 0 R/CropBox[0.0 0.0 593.557 719.192]/LastModified(D:20190128170455+02'00')/MediaBox[0.0 0.0 593.557 719.192]/Parent 3 0 R/PieceInfo<</Illustrator 5584 0 R>>/Resources<</ExtGState<</GS0 5585 0 R>>/Properties<</MC0 5580 0 R>>/XObject<</Fm0 5586 0 R/Fm1 5587 0 R/Fm10 5588 0 R/Fm11 5589 0 R/Fm12 5590 0 R/Fm13 5591 0 R/Fm14 5592 0 R/Fm15 5593 0 R/Fm16 5594 0 R/Fm17 5595 0 R/Fm18 5596 0 R/Fm19 5597 0 R/Fm2 5598 0 R/Fm20 5599 0 R/Fm21 5600 0 R/Fm22 5601 0 R/Fm23 5602 0 R/Fm24 5603 0 R/Fm25 5604 0 R/Fm26 5605 0 R/Fm27 5606 0 R/Fm28 5607 0 R/Fm29 5608 0 R/Fm3 5609 0 R/Fm30 5610 0 R/Fm31 5611 0 R/Fm32 5612 0 R/Fm33 5613 0 R/Fm34 5614 0 R/Fm35 5615 0 R/Fm36 5616 0 R/Fm37 5617 0 R/Fm38 5618 0 R/Fm39 5619 0 R/Fm4 5620 0 R/Fm40 5621 0 R/Fm41 5622 0 R/Fm42 5623 0 R/Fm43 5624 0 R/Fm44 5625 0 R/Fm45 5626 0 R/Fm46 5627 0 R/Fm47 5628 0 R/Fm5 5629 0 R/Fm6 5630 0 R/Fm7 5631 0 R/Fm8 5632 0 R/Fm9 5633 0 R>>>>/Thumb 62 0 R/TrimBox[0.0 0.0 593.557 719.192]/Type/Page>>
endobj
172 0 obj
-<</ArtBox[0.0 0.0 580.914 235.75]/BleedBox[0.0 0.0 580.914 235.75]/Contents 5205 0 R/CropBox[0.0 0.0 580.914 235.75]/LastModified(D:20180928171629+02'00')/MediaBox[0.0 0.0 580.914 235.75]/Parent 3 0 R/PieceInfo<</Illustrator 5155 0 R>>/Resources<</ExtGState<</GS0 5156 0 R>>/Font<</TT0 5206 0 R>>/ProcSet[/PDF/Text]/Properties<</MC0 5152 0 R>>/XObject<</Fm0 5207 0 R/Fm1 5208 0 R/Fm10 5209 0 R/Fm11 5210 0 R/Fm12 5211 0 R/Fm13 5212 0 R/Fm14 5213 0 R/Fm2 5214 0 R/Fm3 5215 0 R/Fm4 5216 0 R/Fm5 5217 0 R/Fm6 5218 0 R/Fm7 5219 0 R/Fm8 5220 0 R/Fm9 5221 0 R>>>>/TrimBox[0.0 0.0 580.914 235.75]/Type/Page>>
+<</ArtBox[0.0 0.0 580.914 235.75]/BleedBox[0.0 0.0 580.914 235.75]/Contents 5634 0 R/CropBox[0.0 0.0 580.914 235.75]/LastModified(D:20190128170455+02'00')/MediaBox[0.0 0.0 580.914 235.75]/Parent 3 0 R/PieceInfo<</Illustrator 5584 0 R>>/Resources<</ExtGState<</GS0 5585 0 R>>/Font<</TT0 5635 0 R>>/ProcSet[/PDF/Text]/Properties<</MC0 5580 0 R>>/XObject<</Fm0 5636 0 R/Fm1 5637 0 R/Fm10 5638 0 R/Fm11 5639 0 R/Fm12 5640 0 R/Fm13 5641 0 R/Fm14 5642 0 R/Fm2 5643 0 R/Fm3 5644 0 R/Fm4 5645 0 R/Fm5 5646 0 R/Fm6 5647 0 R/Fm7 5648 0 R/Fm8 5649 0 R/Fm9 5650 0 R>>>>/TrimBox[0.0 0.0 580.914 235.75]/Type/Page>>
endobj
363 0 obj
-<</ArtBox[0.0 0.0 137.021 87.8809]/BleedBox[0.0 0.0 137.021 87.8809]/Contents 5222 0 R/CropBox[0.0 0.0 137.021 87.8809]/LastModified(D:20180928171629+02'00')/MediaBox[0.0 0.0 137.021 87.8809]/Parent 3 0 R/PieceInfo<</Illustrator 5155 0 R>>/Resources<</ExtGState<</GS0 5156 0 R>>/Properties<</MC0 5152 0 R>>/XObject<</Fm0 5223 0 R/Fm1 5224 0 R>>>>/TrimBox[0.0 0.0 137.021 87.8809]/Type/Page>>
+<</ArtBox[0.0 0.0 137.021 87.8809]/BleedBox[0.0 0.0 137.021 87.8809]/Contents 5651 0 R/CropBox[0.0 0.0 137.021 87.8809]/LastModified(D:20190128170455+02'00')/MediaBox[0.0 0.0 137.021 87.8809]/Parent 3 0 R/PieceInfo<</Illustrator 5584 0 R>>/Resources<</ExtGState<</GS0 5585 0 R>>/Properties<</MC0 5580 0 R>>/XObject<</Fm0 5652 0 R/Fm1 5653 0 R>>>>/TrimBox[0.0 0.0 137.021 87.8809]/Type/Page>>
endobj
366 0 obj
-<</ArtBox[0.0 0.0 223.175 135.004]/BleedBox[0.0 0.0 223.175 135.004]/Contents 5225 0 R/CropBox[0.0 0.0 223.175 135.004]/LastModified(D:20180928171629+02'00')/MediaBox[0.0 0.0 223.175 135.004]/Parent 3 0 R/PieceInfo<</Illustrator 5155 0 R>>/Resources<</ExtGState<</GS0 5156 0 R>>/Font<</TT0 5206 0 R>>/ProcSet[/PDF/Text]/Properties<</MC0 5152 0 R>>/XObject<</Fm0 5226 0 R/Fm1 5227 0 R/Fm2 5228 0 R/Fm3 5229 0 R/Fm4 5230 0 R/Fm5 5231 0 R/Fm6 5232 0 R/Fm7 5233 0 R>>>>/TrimBox[0.0 0.0 223.175 135.004]/Type/Page>>
+<</ArtBox[0.0 0.0 223.175 135.004]/BleedBox[0.0 0.0 223.175 135.004]/Contents 5654 0 R/CropBox[0.0 0.0 223.175 135.004]/LastModified(D:20190128170455+02'00')/MediaBox[0.0 0.0 223.175 135.004]/Parent 3 0 R/PieceInfo<</Illustrator 5584 0 R>>/Resources<</ExtGState<</GS0 5585 0 R>>/Font<</TT0 5635 0 R>>/ProcSet[/PDF/Text]/Properties<</MC0 5580 0 R>>/XObject<</Fm0 5655 0 R/Fm1 5656 0 R/Fm2 5657 0 R/Fm3 5658 0 R/Fm4 5659 0 R/Fm5 5660 0 R/Fm6 5661 0 R/Fm7 5662 0 R>>>>/TrimBox[0.0 0.0 223.175 135.004]/Type/Page>>
endobj
1021 0 obj
-<</ArtBox[0.0 0.0 592.557 1130.5]/BleedBox[0.0 0.0 592.557 1130.5]/Contents 5234 0 R/CropBox[0.0 0.0 592.557 1130.5]/LastModified(D:20180928171629+02'00')/MediaBox[0.0 0.0 592.557 1130.5]/Parent 3 0 R/PieceInfo<</Illustrator 5155 0 R>>/Resources<</ExtGState<</GS0 5156 0 R>>/Font<</TT0 5206 0 R>>/ProcSet[/PDF/Text]/Properties<</MC0 5152 0 R>>/XObject<</Fm0 5235 0 R/Fm1 5236 0 R/Fm10 5237 0 R/Fm11 5238 0 R/Fm12 5239 0 R/Fm13 5240 0 R/Fm14 5241 0 R/Fm15 5242 0 R/Fm16 5243 0 R/Fm17 5244 0 R/Fm18 5245 0 R/Fm19 5246 0 R/Fm2 5247 0 R/Fm20 5248 0 R/Fm21 5249 0 R/Fm22 5250 0 R/Fm23 5251 0 R/Fm24 5252 0 R/Fm25 5253 0 R/Fm26 5254 0 R/Fm27 5255 0 R/Fm28 5256 0 R/Fm29 5257 0 R/Fm3 5258 0 R/Fm30 5259 0 R/Fm31 5260 0 R/Fm32 5261 0 R/Fm33 5262 0 R/Fm34 5263 0 R/Fm35 5264 0 R/Fm36 5265 0 R/Fm37 5266 0 R/Fm38 5267 0 R/Fm39 5268 0 R/Fm4 5269 0 R/Fm40 5270 0 R/Fm41 5271 0 R/Fm42 5272 0 R/Fm43 5273 0 R/Fm44 5274 0 R/Fm45 5275 0 R/Fm46 5276 0 R/Fm47 5277 0 R/Fm48 5278 0 R/Fm49 5279 0 R/Fm5 5280 0 R/Fm50 5281 0 R/Fm51 5282 0 R/Fm52 5283 0 R/Fm53 5284 0 R/Fm54 5285 0 R/Fm55 5286 0 R/Fm56 5287 0 R/Fm57 5288 0 R/Fm58 5289 0 R/Fm59 5290 0 R/Fm6 5291 0 R/Fm60 5292 0 R/Fm61 5293 0 R/Fm62 5294 0 R/Fm63 5295 0 R/Fm64 5296 0 R/Fm65 5297 0 R/Fm66 5298 0 R/Fm67 5299 0 R/Fm68 5300 0 R/Fm69 5301 0 R/Fm7 5302 0 R/Fm70 5303 0 R/Fm71 5304 0 R/Fm72 5305 0 R/Fm73 5306 0 R/Fm74 5307 0 R/Fm75 5308 0 R/Fm76 5309 0 R/Fm77 5310 0 R/Fm8 5311 0 R/Fm9 5312 0 R>>>>/TrimBox[0.0 0.0 592.557 1130.5]/Type/Page>>
+<</ArtBox[0.0 0.0 592.557 1130.5]/BleedBox[0.0 0.0 592.557 1130.5]/Contents 5663 0 R/CropBox[0.0 0.0 592.557 1130.5]/LastModified(D:20190128170455+02'00')/MediaBox[0.0 0.0 592.557 1130.5]/Parent 3 0 R/PieceInfo<</Illustrator 5584 0 R>>/Resources<</ExtGState<</GS0 5585 0 R>>/Font<</TT0 5635 0 R>>/ProcSet[/PDF/Text]/Properties<</MC0 5580 0 R>>/XObject<</Fm0 5664 0 R/Fm1 5665 0 R/Fm10 5666 0 R/Fm11 5667 0 R/Fm12 5668 0 R/Fm13 5669 0 R/Fm14 5670 0 R/Fm15 5671 0 R/Fm16 5672 0 R/Fm17 5673 0 R/Fm18 5674 0 R/Fm19 5675 0 R/Fm2 5676 0 R/Fm20 5677 0 R/Fm21 5678 0 R/Fm22 5679 0 R/Fm23 5680 0 R/Fm24 5681 0 R/Fm25 5682 0 R/Fm26 5683 0 R/Fm27 5684 0 R/Fm28 5685 0 R/Fm29 5686 0 R/Fm3 5687 0 R/Fm30 5688 0 R/Fm31 5689 0 R/Fm32 5690 0 R/Fm33 5691 0 R/Fm34 5692 0 R/Fm35 5693 0 R/Fm36 5694 0 R/Fm37 5695 0 R/Fm38 5696 0 R/Fm39 5697 0 R/Fm4 5698 0 R/Fm40 5699 0 R/Fm41 5700 0 R/Fm42 5701 0 R/Fm43 5702 0 R/Fm44 5703 0 R/Fm45 5704 0 R/Fm46 5705 0 R/Fm47 5706 0 R/Fm48 5707 0 R/Fm49 5708 0 R/Fm5 5709 0 R/Fm50 5710 0 R/Fm51 5711 0 R/Fm52 5712 0 R/Fm53 5713 0 R/Fm54 5714 0 R/Fm55 5715 0 R/Fm56 5716 0 R/Fm57 5717 0 R/Fm58 5718 0 R/Fm59 5719 0 R/Fm6 5720 0 R/Fm60 5721 0 R/Fm61 5722 0 R/Fm62 5723 0 R/Fm63 5724 0 R/Fm64 5725 0 R/Fm65 5726 0 R/Fm66 5727 0 R/Fm67 5728 0 R/Fm68 5729 0 R/Fm69 5730 0 R/Fm7 5731 0 R/Fm70 5732 0 R/Fm71 5733 0 R/Fm72 5734 0 R/Fm73 5735 0 R/Fm74 5736 0 R/Fm75 5737 0 R/Fm76 5738 0 R/Fm77 5739 0 R/Fm8 5740 0 R/Fm9 5741 0 R>>>>/TrimBox[0.0 0.0 592.557 1130.5]/Type/Page>>
endobj
-5234 0 obj
-<</Filter/FlateDecode/Length 2917>>stream
-H\x89\xBCWM\x8F\xDC\xC6\xBDϯ\xE8\xA3t\xD8VWu\x{1573D2}m!A\x84\xC0\xD2\xC09:\xD8\xD6GbHI\xAC-\x93}\xB2\xC9\xE5\xC7:\xDFϹcB\xC3Y\xE7\x83\xE6.\xB3\xF6@3lEPj\x9F<\x92,i\xEE g\xA2\xB0u-\xF4\xD7\xD3\xC7\xEEI\xA8\xC2\xFA$\xFCvhetqn\x8F\xBA\x9B\xCEZv0\xD5h\xBC)%X\x97\xD87]\xEF\\xAD륅\xD1\xA2=\x80fçϲ\xF4\xA3-\xC1gxO\xAC}@\xF3IAG\xABt\xC6\xF5\x9A\xF2j\x936\xB81\xAE\x862\\xC1f#\xF2j\x84\xBFrif\xEE.c\x84\xA5:\xBA\x93
-Ã\xCF\xF5\xBD\xA6q}V\xC0H\x95\xF1,'\xB1,Sfc\x90\xCB\xDE2t\xC0\xD5\xF3ps\xAA\xDA\xD2D\xEB\xB2K\xA6Č\xDC\xD3*;\xE8\xD6^9/6\xC0Ә\xB8 (!V\xB7(\xE7\xCA\xF9\xAA-\xC9fJ\xE7ιq>dv\xF8\xFC|\x9AS><\xA9\x89\xA7\xA9g\xF3\xC4E^\x8F\xB8Q\x8Ft\xA9G\xD3\x84\xBBF\xB4OAW\xBB\xCC\xCB\xCCg\x9Bb\xBCn̋
-8!\xBA\xD0p\xEAP\x9BK\x8Cl+\xF8#E~PJ\xB8\x93\xE4\xE3'Lr\xDEHr\xB9N\xB2\x87\xC8 \x88\x9E\xA3\xF6\xEA
-\xAFt\xFA3_S\xFBd$\xE0\xD1\xE0Uj\x97\xB3{ւd\x82\xB6\x94B\xBE\x95\x9F,?\xF1`\x96\xC9m\xA4\x99\xE8:\xCF!\xEB\xA1@\xB9\xB5\x80\xC2K\x90\x97\xCA\xA4\x9E\xE9t3\x8B\x8D=\xA1\xE6U\xA89\x91\xF6(h\xB3\xEF\x8E\xC0\xA0\x80
-\xB5%yr\xCCsE\xAF\xF8\xC9\xFC\xC7\xCC2(\xE4b8\x8A\xC8\xC5Q\x8Ad\x9B\xFE\xB0ᛐMz\x8B\xD5\x94P(\xE5\xE6
- \x9C\xF6_\xA1\xD17yX\x8AX\xA7\x8C\xBE\xC5i\x84vݢ+H\x89d\xCF=
+\xC2@\x86\xE1~O\xF1] \xB3\xB3?\xC9\xEE\xB6&\x9A\xC6 1\x82E\xB0S\xACT\xD4\xC2\xEB;\x9B(6\xC3\xC0\xF32zSCw5c\xD1\xD4Pw\xC5\xF0\x89|\xF00\xD1Q\x8A\xC5g\x9C\xD4W\xB93U\xCEȴ\xC9c\xDB*\xA6\x88<:\x8C\xF6\xC08B\xE9v`\x9C\x9F*^(\x98\x85\x89v2\xAD!W\xA6LSR\xEC\xD6zua47Ջilʉ2\x87*\x9EBF2\xE3\xEC]\xA6_4\x90\x95\xC8?jft\xD9Ƀ\xBDz0+endstream
+endobj
+5743 0 obj
+<</BBox[37.7594 43.5662 146.228 31.2224]/Group 5745 0 R/Length 79/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 5585 0 R>>/XObject<</Fm0 5746 0 R>>>>/Subtype/Form>>stream
+q
+0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 0.8 w 4 M 0 j 0 J [3 2]0 d
+/GS0 gs
+0 TL/Fm0 Do
+Q
+
+endstream
+endobj
+5744 0 obj
+<</BBox[3.20082 26.7185 182.898 1.30251]/Group 5747 0 R/Length 217/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 5585 0 R>>/Font<</TT0 5635 0 R>>/ProcSet[/PDF/Text]/XObject<</Fm0 5748 0 R/Fm1 5749 0 R>>>>/Subtype/Form>>stream
+q
+0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 1 w 4 M 0 j 0 J []0 d
+/GS0 gs
+0 TL/Fm0 Do
+Q
+BT
+0 0 0 rg
+/GS0 gs
+/TT0 1 Tf
+0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12.102 0 0 12 143.4639 16.4209 Tm
+( )Tj
+ET
+q
+0 g
+1 w 4 M 0 j 0 J []0 d
+0 TL/Fm1 Do
+Q
+
+endstream
+endobj
+5747 0 obj
+<</I true/K false/S/Transparency/Type/Group>>
+endobj
+5748 0 obj
+<</BBox[3.20082 24.9295 142.917 13.2009]/Group 5750 0 R/Length 144/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 5585 0 R>>/Font<</TT0 5635 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream
+BT
+0.937 0.231 0.224 rg
+/GS0 gs
+/TT0 1 Tf
+0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 10.0003 0 0 9.916 3.2002 16.4209 Tm
+(charge: double {use="optional"})Tj
+ET
+
+endstream
+endobj
+5749 0 obj
+<</BBox[3.20082 13.031 182.898 1.30251]/Group 5751 0 R/Length 151/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 5585 0 R>>/Font<</TT0 5635 0 R>>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream
+BT
+0.129 0.251 0.604 rg
+/GS0 gs
+/TT0 1 Tf
+0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 10.0003 0 0 9.916 3.2002 4.522 Tm
+(chemicalFormula: string {use="optional"})Tj
+ET
+
+endstream
+endobj
+5751 0 obj
+<</I true/K false/S/Transparency/Type/Group>>
+endobj
+5635 0 obj
+<</BaseFont/MUYXPU+ArialMT/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 5752 0 R/LastChar 125/Subtype/TrueType/Type/Font/Widths[278 0 355 0 0 0 0 0 0 0 389 0 278 0 278 0 556 556 556 0 0 0 0 0 0 0 278 0 0 584 0 0 0 667 667 722 0 0 611 778 0 278 0 0 0 0 0 778 667 0 722 667 611 722 667 0 0 0 0 0 0 0 0 0 0 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 0 333 500 278 556 500 722 500 500 0 334 0 334]>>
+endobj
+5752 0 obj
+<</Ascent 1040/CapHeight 716/Descent -325/Flags 32/FontBBox[-665 -325 2000 1040]/FontFamily(Arial)/FontFile2 5753 0 R/FontName/MUYXPU+ArialMT/FontStretch/Normal/FontWeight 400/ItalicAngle 0/StemV 88/Type/FontDescriptor/XHeight 519>>
+endobj
+5753 0 obj
+<</Filter/FlateDecode/Length 35407/Length1 77761>>stream
+H\x89|\x96y\SW\xC7'/\xEF&\x86\x80\x8A \x8A$\xEF%\xF0b]\xAAVFjq\xA7\xADJG\xC7V\xAD
+E\xAD
+\x9DjUT\xC4
+w\pETP\xDC뾲\x89\xB5&\xA6\xB6\x8Ec\xFC\xA8\xB5~\xD41\x90\xCC
+\xF0\xB1\xD3?\xEC\xFD|ι\xE7\x9C{߹\xEF~\xF3\xEE\xB9\xF0D
+\x84
+ֹ\xABχc\xF0\x88\x8DKxd|D\xC2ݹ\xB5+<\xE4\xFE*@\xDF\x82\xB0\x98\xD2!B+n\xBB\xF1]\xB4i\xE8\x852D\xAB\xBC\xB5\xA2ʃ\xA9UA'\xD7$\x8D\xE6Y\x9Ap\xC1\xF0\xC1\xFDd\x84BvՊ\xCEO\xA8\x9B\xA67\x84\x82\.\xA0\xB6\x88\xC7ݫ\xC1\x97k\xDC\xFC8Ώ[\xE4υ\xEF\xA5!\xC8{\x95\xCA=\xE7\xF7\x8D
+j\x91i\xB4MtzO\xAF\xA6͚{\xB7\xF0\xF1m\xE9ת\xB5\x9B+\x8B\x8E+>~\xE2\xE4\xA9\xD3g\xCE\xE2\xDC\xF9/]\xBEr\xF5\xDA\xF57KJQV^q\xAB\xF2\xF6w\xF8\xFE\xAE\xD5\xF6CU5\xD4-\xF2\x8D\xF6\xE7[ՠ?\xE6\x93K%\xABF\xAA\xF2\x84@a\xA80KHR\x85eB\x96P"\xBCP{\xAA\x87\x8A\x9D\xC5\xE28q\x91\x98*\xAE/\x89\xC5\xE7,\x80\xB94\xC9\xDA\xC3ړZ\x97!\xD60\xC9p\xCEp\xD5\xE02&\xB7\x91|%\x834@,}*\x8D\x94FKc\xA4y\xD2a\xE9\xBCT!Y\xA5'\xD2s\xC9)7\x95ͲE\xEE"w\x97{ɽ\xE5\xFE\xF2X9A\x9E-'\xCBk\xE4\xD3\xF2S\x93hja\xF23\x99MS'\xD3\xD3p\xD3X\xD3\xD3Z\xD3n\xB3\xCA\xCC\xCCM\xCD\xDEf_\xB3\xBFY2\xB73w02G\x98\xA3U\x81\xCDM
+\x95\xA2W\x9A)>J+%@ R:*ݕ%NIQ(\x8B\x95e\xCAj%K\xC9U
+\x94b\xE5\x84r^\xB9\xAE\x94(\xDF+\xF7-!\x96PK_K\xB8%\xD2m\x99d\x99\xD21\xB9\x93_\x8E)gQ\xCE\xFE\x9C\xA2\xA8_\xC9\xC1~\x8E`G\x88\xA3\xB7\xA3\x8F\xA3\xBF\xE3\xAC\xC3UY\xFB\xBCgu\xCF\xEB꜁\xCEDg\xB2\xB3\xD6U\xEB\xFE\xEE\xF8\x97\xA9\x82ʤ\xA5\xDA/ a\xC2a\xA7\x98&lJ\x85\x97j/u\x98\xF8\x9E8R\x8C\x97\x88\xCBŕb\xA9\xF8\x94\x815a\xDALm\xA1\xF6\x96\x9Cb\x9C\xE1\xBC\xC1i\x841Ři|&\xB5\x92di\x90\xD6Hq\x9C\x94"J\xA5\xDB\xD2\xD23\xE9\x85ٛSl/w\x95{\xCA!\xF5c\xE5DN1]\xCEl\xA4ز\x91\xE2`\xD30\xD3hN1\xFD
+\xC5\xE6\x9Cbk\xB3\xB1\x91b\xB8y|=E\xF9-\xC3\xDEPLW2\x95\xBDo(^\xE5\xEFp\x8A\xBD\xDEP\x8C\xB2\xC4r\x8Aᜢ_\x8E9gqN~\xCE\xCB}]8E8Z8\x8E\x9Cb\xA8\xA3\x9Fc\xA0\xA3\xA2vl\x{DCFA}\x90z\x8A\xAF\x9D\xB23\xC19ә\xE2\xA6\xE8\xBA\xC7\xCF\xEF.\xE5\x80\xF8~\xC3qtNtku)\xB7\xDA\xBAJ]\x85\xAE\W\xA6+jKk\xAF\xFD\xFF\xC1}<Q?ؓ\x81\xFBj\xB07\xB77\xB5{\xDA\xF5v\xBB\xCE\xDEĮ\xB13\xBBh\xEC*;\xBA3\xD4,\xAC\xA6\xD6\xCCz[o=\xEA <\xFA\xAC&\xB5fP[=\xBB\xA6\xD8~\xE3^ǚ4\xFB\xFA\xEA\xDD\xD5UU\xD9UK\x81\xAA]\xEE\xD9\xD5~US\xABxŬ\xEARZխ*\xC86\xD06\xC0b\xEBi\xB6u\xB3u\xB1\xB5\xB3\x99mml>6\xB2>\xB6ڭ\xAC?[ݕ\xD6\xD3\xD6S\xD6"n]\xB0\xEE\xB4\xB0\xB0\xF6\xB5\xF6\xB1Y\xCDV\x93\xD5\xF8\xD3\x9E\x8Fװ\x89\x89\\xE2&\xBEU\xF0\x88\xD7\xF4\x8F\xF9aݬ٤٨\xD9а_\xEF\xAF\xF9\xD5p\xB7y;^K6\xE7^\x84Y_\xE5\xFA\xF2
+\xE6\xE4\xCC\xE2xl\xB8\x98-\xF2\xEA.\x8A\xFC\xCE`]\xB9|\xFE1m\xB3z\x9D\xA4\xCD\xD7Mӕ\xEA^y\xF0\xDA\xE81\xCA\xF3\xD1(\xAB\xF0\x87ͣ\xD8\xE3\xD7/\xF4\xBC\x8A\xEA\xD5\xEE\x88^\xAD\xAFϪo\xD90C?\xE4m\xCF\xEA{\xB8E߫\xD1\xFE\xE3\x95~\xF7\xA4W\xC3\xF5\xB6\xFE-o\xF6\xBA!\xA7~Л\x99˸d\xBC\xF1\xCExzy^\xF5\xEF\xE9ժ^\xFB7
+؎X(\x8CE\xEE\xE3\xA4a)\xB6`v\xA0R9⯱O\xF1\x96c\xF1\xFB\xF8 \xB6b/~\xC53<G6rq\x91\x87/\x89t\x8C\xC7UD\xE1\xAE\xE0&\xAE\xE1:n\xE0߈FJP\x8A\xFD\x98\x80\xC7X\x89[(Gb\xF0ر\xB1\x98\x88I\x88G&#S0 \x98\x86阁D\xCC\xC4,<@\xE6`6\xBE\xC4<\xCCE\xB2\x90\x8C\xF9\xFC_\xC2Wx\x88G8F\xB4\x8ET$\x90\x9AD8PK\xEBim\xA4M\xA8\x83\x93iHm\xA6-\xB4\x95\xB6Q&eQґ\xE9)\x9B\xB6\xE3^\xD2\xDAI\xBB(\x87v\xD3\xDAK\xFB(\x97\xF2h?\xA0|:Ht\xAFPI\xA9\xB4\x94\xD3*\xA4":J\x9E\xE4EǨ\x98\x9AR3jNި\xC1\xBF\xA8\xF9\xD0q:A\xBEԒ\x96\xD1I:E\xA7\xE9\x9D\xA5oɏZ\xE1+\xD8!vX\xA7\x8EgGX!+bG\xD91V̎\xB3\xEC$;\xC5N\xB33\xEC,\xFB\x96\x9Dc\xE7\xD9v\x91]b\x97\xD9v\x95]c\xD7\xD9
+v\x93\x95\xB0Ru\xAD\xBAN\xEDT\xBBD\x88$\xAADAT\x8B\xA2\xC8D\x8D\xA8\x9B\x88:у\x95\xB1rV\xC1*\xD9m\xF6\xBB\xC3\xFEGs}6Wu]q\xBFg\xED\xBB\xF7^\xEB\xACs\xEE>GI\x80$PG\x82\xB1B\xF4\xDEk @\xC0\x8E\x8Dc&`ӫ\x8DhB\xF4\xE2\x98\x8E\xB1\x8Dg\xE2L\x92I\xDBq7\xC6!\x84+W\xF0U\xE7\x81\xF3Щvj\x9CZ\xE7\x91S\xE7<v\x9E8O\x9Dgn\xC0\xB5\\xD0\xC9:E\xA7\xEA4\x9D\xAE3t\x9D\xA9\xB3d*\xD7\xE3=O\xCF\xD7\xF4B\xBDH/\xD6K\xF4R\xBDL/\xD7o\xEBw\xF4
+]\xA0W\xEAUz\xB5^\xA3\xD7\xEAB\xBDNN\xCA\xF4\xFA\xC0i\xBDAoԛ\xC2?mK\xF8\xB7m\xD3\xDB\xF5\xFD\xAE~O\xBF\xAF?\xD0;Ł3\x81\x92\xC0\xB9\xC0\xA9@\xA9ޥw\xEB\xF5\xBDW\xEF\xD3\xFB\xF5}P҇\xF5G\xFA\x88\xFEX\xA2?\xD5G9\x96\xE3\xB8>7\xE0\x86\xCF \x9Cȍ\xB81'q2\xA7p*\xA7q:g\xD71'8\xBBb.v\xC3<\xEC|\xF3\xB1\xF6\xC4^\xD8\xFB`_\xEC\x87\xFDq\xE0\x96I\x87*1_,\x8B\xC5R\xB1\\x88U\xA2P\x89Mb[\xB8\v\x89\xBDb\xBF8(\x8B#\xE2\xA8\xF8\x8B\xF8\x9B\xF8\xA7\xF8R|#~0Y\xA6\xB9imڙ\x8Ep['D\xB1(\xC4eqM\xDCU\xE2܁\xBBp\xEE\xC3x\xD5P#\xDB\xCB\xE7e>ȇ\xF80\xD7\xF1c~\xC2O\xF9\x990/@-<\x82:xO\xE0)<a B\xBD\x80\x902Cfˎ\xB2\x93\xEC,\xBB\x84\xEFsd\xAE̓\xF9\xB2\xA7\xEC+\x86[j\xA4H\x94c\xE5Kr\x92\x9C*_\x96\xAF\xC97D\xBA\x9C%\xE7\xC8yr\x81\$\x97\xC8e\xE1\xD2Z!W\xCA\xD5r\xAD\'\xD7ˍr\xB3\xDC*\xB2\xE4v\xF9\xAE\xDC)\xF7\xC8\xF2#\xF9iXt\x9F˿\xCA\xC8/\xC2M\xF6\x9D\xFCIM\xE5qyJ\x96\xC82Y.Z\xCA
+Y)\xAB\xE4=Y-\xEB\xE43%\x94V\xAC\x8C\xF2U\xA4\x8A\x95*NūD\xD5H5VI*E\xA5\xA9\x95\xA9\xB2U3\xD5B\xB4U\xADT\xD5^uP\x9DU\x95\xA3r\xAAn*OuW\xF9\xAA\x87\xEA\xA9z\xA9ު\x8F\xEA\xAB\xFA\xA9\xFEj\x80\xA8\xA9\xC1j\x88\xAA\x86\xA9\xE1j\x84\xE9\xD5(>\xFCa\xCE\xFF\xF6Q\xA3\xD5x5AMVS\xF8\xA8\x8Er\xEC\xB0\xE4"\x9CzN}'\xC1IrҜ'\xD3\xC9vZ8m\xC2.\xEC\xE4tqr\x9D|\xA7\xB7\xD3\xDF\xECwF;\xE3\x9D \xCEdg\xAA3-T*U\x84*C7CwB\xF7BB\xB5\xA1'\xC62\xC2H\xA3
+\xD7\xF8&\xDA\xEC\xF6&\x9B}\xE6\x90\xF9\xD8|f>77\xFF2_\x99o\xCD\xF7\xE6Go\x9A7\xDD{ś\xE1\xCD\xF4\xFE\xECxk\xFC\x89\xFE\xBA\xFF\xAA?ß\xE9\xCF\xF6\xE7\xFAK\xFC\xA5\xFE2\xB9\xFF\xB6\xFF\x8E\xBF\xC2/\xF0W\xFA\xAB\xFC\xD5\xFE\xAD_\xE8\xAF\xF3\x8A\xCC\xCF\xE6\x98\xF9\xC57\xBF\x9A\xE6\xA49eN\x9BbsƔ\x98\xB3\xA6Ԝ3e漹`.\x9Ars\xC9\6WL\x85\xB9j\xAE\x99\xEB\xDEl>\xE7ƺqV\xA9u\xCE*\xB3\xCE[\xAC\x8B\xF4\xCCؖ
+\xB6\xB0\x83\xB6\xB4\x95\xADm\xB4ɶm\xB6۵C\xB6\xB1=۷#\xECH;ʌ2\xA3\xDD\xEEf\x8CUn]
+>Vk\x82\xB5\xC1G\xC1:3\xFB/\xD5e\xDEә\xC5\xF1s\xDE\xE5\xFE\xB877\xEF\xEF\xAA%\x89ZkA\xA2j<T\x8B)E\x82\x88m:4TRbO1\xB1/!\xB6JQR˴(jƨ \x83ZBm\xB2XZ\xCB\xCCc-Am\xF3Lմ\xF8\xDD\xF9ff\xFE\x98\xC9y\xDE\xE7>\xB9\xBF{\xDF\xF7\xBC\xE7=\xE7s\xCF\xD72\x83ͻf\x88]ͮnװ#\xECH;ʮi\xBFlײk\xDBu\xEC\xBAv\xB4c׳\xEB\xDB
+\xEC\x86v#\xBB\xB1k\xC79%N\xA9S\xE6\x9Cq\xCE:\xE7\x9C\xF3\xCE7η\xCE\xE7\xA2sI\xDCw\xC5=\xF1\xBDs\x8C\xBE\xA0\x9D"\xCF:Ư\xD0.\xDAM_\xF1-\xFA\xD2Q\xE78͢Ô+\xBB\xCB\xB2\x94n\xAAs\x81\x8E\xF1b^\xE2\x9C\xE0\x96\xA63ߖ}d_\xD9O\xF6\x97i\xB2w\xF8{\xE1\xC3\x85g\x84\x85ϴC\xB6\xEF=\xE1r\x87\xC1\xAD\xE9(Q\xA4\xA6\xD1~͏p\x82\x8EVVVv\xC6t1]\xDDtw\x90\xF90878/\x98\\xE4
+\x9D˴\x9A\xD0\xDAD\xF9\xFC:-\xE5\xF6\xFC^\xC6\xF9\xFC!O\xA4=\x9C\xE3Tvk\xB9\xB5\xDD:n]7ڍq\xEB\xB9\xF5\xDDnC\xB7\x91\xDB؍u\xBB\x98\x93i\xDEs\xBB\xBA\xDD\xDCd7w\x9B\xB8 f\xA8f\xB2\xCCp34\xA3\xCCh\xB7\xA9\xDB\xCCm\xEE&\xBA\xA9n/7\xCD\xED\xED\xF6q\x93\xDCn_7\xC5\xED\xEE\xF6p{\x9F_0CA\xDF#\x8F=\xE1IOyڳ\xBC\x80Wɫ\xEC\xD9\xB6\xE0\xB9^\xB8g\xBC\xA0\xE7yU\xBC\x97\xBC\xAA^5\xAF\xBAWË\xF0"\xBD(\xAF\xA6\x97̥CT\x9C\\xCC.\xB4\xC6[\xAC\x89⸳z\xEAKg\xBFs\xC09\xE8r\x8A\x9C\xC3\xE2\x848)\xBE\xA7\xC4iQ,JD\xA9(g\xC4YqN\W\xC55q]\xDC7\xC5w▸-\xCAA\x9C\xD7@\x984\xA8\xBE>\xB2\x8E\xAC+\xA3e83Dg\xE8L\xB0\xA7\x87\xEE\xA9SA\x9Et=H\x8D\xBA\xE9d\x9D~\xD5\xC7\xF4q0\xE4\xB4.\xD6%\xE0\xD18=^OA!AA\xFA\xE5w*\xAE\xA1,\xFFN\xC5\xEFWq\x8Ar\xCF\xD1\xFAgA\xA2#\xFC\x98*t\xD0^T\xD5I\xAAA\xBF\xA45Ps\xCB)\x97,zwP/\x98\xC6\xFD\xE5\xE9R3\xE8<\x89Q\x8Cg\xFBA\xEF\xED\xA3\xEA\xE1߅\xF6\x9B+\xCF᭹\xE4R\xB5\xA7\x9EP\x8C\x8B9ٟ@誚M\xAD(:r,\xCF\xF0\xFB\xFBK\xFC|#jg\xAF<\xE9\xBF \x87\xA2\xA0P\x87P\xB1\xFFP_\xF4\xFFF xc\xEA\xEB*\xE7W\xDEEo`\x95xr-\xB4g\x81\xA8\xD8\xEA\xFF\xA2\xA1@\x8BIQ
+s\x91\x88\xC7\xEC\x99T\xCE\x9C#;b\x96
+\xFE\xFF(\x9Ez\x99B\xCF@\x9B\xB5\xE4\xCE"Z\xF0S\xFCb\xAA\x8E5&a\xD6մLٍ\x98\xA0\xCB\xA6\xFB\xFD\xC7IM\xA8\xF6SH%\$C/f\x86^G\xC44\xA2K\xAD\xF1\xCB:H'\xA8\xF0\xB0\xA3\xC3t\xBE\xAF\xBF\xF5\xCFSUJ\xA4>\xF0v3\xCDO\xD1}\xA2\xFF\x94\xC7U'\xBF\x85#.\xCB*\xA2MǠI\xA3\xD0 \xF7\xE0\xBE\xE8oLju\xF2}\xAA\x84a\x94\x85x\xAF\xC2\xECW\xD0k\xEFF]*7\xA8m\xEA\x99U+t\xCDlj4\xA4\x8Fi-\x86ҍ\x802dz\xA0\xB8n\x8A\x8E"\x9D\xCD
+\xB9\mUg\x83\xB1\xEBwh-\xA6m\xF4\x94\xAB\xF0/8\x95\xCD\xC38\x87s\xC1\xA8\xD5Яe|G\xB4\xBD\xC5t/\xC3d\xB6<\xA0:\xC0\xD2\xD485U\xB5к\xEA::z\xEA'\xF9\xF3(\xF90ޯ\xA0u\xD8\xD9^*\x85&\xBADW\xE9kv8V\x97\xA3\xB9O\x81M\x81?\xE5-\xBC\x95\xB1J\xDF\xE0\xBBPO\xF8\xD4A%Ԭ\xE8\xF4a\xF5\xC4\xFBb"\xBA\xB35`IMd
+\x83:n)\xDB\xCA_\xC91\xF0*W~+\xB5\x9A[\xA9ף\xF7ئ\x8F\xE8\xC7VX`V%\xAAt\xFA\xF9\x86q/\xAE\x84(4?\xB42\xB43T\xE8_\xA7j8\xC3(D\xA1\xB5\x85\xF7\x83a\xC3q\xDE+\x91q\xA4s\x86\xD8Eq\xB7\xE3dD&\x9D\x87s6OB$\xE7po\xFA\xB7\xEF\xDBy?\xA2t\x81\xC1g:\xA5\xC2\xE7\xA6\xD0D\xD8;"Sd\xA3\xC3\xCC\x85\xE2[\xF1\xB3\xA0\xB70\xB2\x9A\x8CC\xED\x94\x99r\xBC\x9C,W\xCA\xF24\xBA\xBA\xF2G\xF9\xE6+[\xD5Q1\xAA\xA1\x8AW\x9DU\xBA\x9A\xA0֩rU\xAE\x80x\xB7,\xDBeͳ\xF6X\xBCh\xE8H
+\x84R\xDD8_iP\xC57_\xBE?\xD3\xFF\xFC\xF15\xF4\x9Co\xCA]\xB4D\xB4P\x91\xE0q \xF29\x9D2d\x8A@\xA6\x8A-<_L\xE5BQ_O\xB2ڈ6ܝ\xAB\x86\x88\xF5q\xB1\xFDd\x99\xC2\xDD8\x8D\x86\x8B\xC4\xFF\xCCfUU\x9F\xE3\xD2V}E\xD4~\xEC\xAD3O\xB2\xC2x\x9Axd\x85\xD1N&\xD1k\x93\xCDU\xBC<E\x97\xE5U\xA8O\xE8\xAF\xCA\xE6\xFC@l\x96=\x91T;ݟ\xA2\xE5\xDA.\xB3y*\xEDo\xD9\xCF*-Bw\xE7\xCF\xC1\x85ޜ\xC4\xFF\x94>I\xD1Y\xD4Jޤ\xD94B\\xC4Wt"ͧ\x8F8C
+\xA5%Ԃs\xA8\x9C>CU\xC4\xEAѠj5\xFEZd\xA9<\xF1\x92P[\xB1\xBB\xD6\\x9F\xA5\xAEJsx\xA0,\xB0\x89K4\x81J\x95MW\xE4\xEF\xE1}\xA9\xD8.S\xD4c\x87\xA1\xA6\xD2<\xCA\xF6g\xD2d\xDD_\x9D\xE5\xA1h\xFF\xFARu
+tˑI*\xD7\xE9\xA0\xCA+e\x8A^\xFEx\x99\xCAB\x96"
+o Z\xC0\x9F*[\xCDV?\xD1"\xD4\xFC\xBF/\x96\xD86\x8E\xEB\xCC.ZJ\xD6RS\xD2*\xED\xAC'\xA4c/\xF5\xB3dK\xA2k+\x8A\xB4%\xC1\xB6\xBEήl5KQ\x92e7\x89\xE54p\xE3\xF4\x85a\xED\xA4)\x8Aɩ\xEE!(\x90\xA2\xC0Њ\xCA(P#\xE8\xA5\x9D\x8A\xF4\xA0K\x81\xBA\xF0\xC1)Ԋ\xFAf\x96\xA4Ţ-J\xEEξ\xDF\xCC\xFB̛73?\x87zs\xD6\xCDg\xB0r`훗n\xBF\xF5\xFD7ol\\xE3\xF5w\xED\xEA\xFA\x95\xB5\xD5\xE5%땋\xF3\xCE\xC7=\xFDrj$9<4xr\xA0\xFFD_oOwW\xC28~쥣\xF1؋\xF4\x88N\xBE\xFD\xAD:\xB5\x8E\xF6\xB6\xE8\xE1֖榈\xDAx\xA8\xA1>\xACԅ\x82\xBFO\x960Jdh\xD6!,\xEE0_\x9C\x9E=\xDB\xC5q\x9AB\xEE+\x9B\x9E\xB12㚮\xDB] \x86\xD3y\xBA\xCCc\x8D\x86Ai\xA1\x86\xD2,(Ԑ\xAB\xDCt\x87\x8Fܻ%-;F\xFD
+]\xC9]\xB6\x98\x9C\xB3\xB9\x8E\x88z\xC7Y\xF4\x9Dݶ\xE7(ޔ\xB6\xDE;\xC8\xD5d7\xD3v\x95p\xD4u\xDF#\xECތu\x90\xAB\xF3ֶa\xE8+Ų\x8E\x9B\xD5w!\x88Ss\xB4I\xB7m\x8B\xE1۠\x92pO\xB8W\x9E\xAB4\xC3)\xCE5\xC2\xEA\xE8]w\xAF905.C\xB3\xB7\xF4\xFB\xE6\xF6\xFE_PG\x86\xB8\xF3\xD5٨F\xED\xDCxg\xB1\xB9\xB3\xB7\xB6\xDAM\xD2^\xCB\xE9JՈ\xD8\xE2\xA1\xC62P\xDFpX\xAD\xF2$\xC4945[\x8D,\xE6\xD1 HF\xF2,\xB1(\xF84ě\xD5!\xE4\xE6\x87@~6\x86^lf\xE4*\xABK;\xAE\x9A\xE4tޟ\xF9c*%\xEEW2\x80>\xFE[-%W\xA6b\xEAW\x88\x83<O\xAA\xA9\xFC
+\xCC\x83?\xCES$\x98\x869O\xFCdW\xE2fI\xA2tC%\xF0\x81\xF0\xA1i\x88m\xCEN\xF6@\xF8u\x9DO𝒉\x96a\x85\xCB\xC3 Z\xD6\xEE#\xB3ǰ\x99\xE4pΣ
+\xA7u\x81s
+N\xB5\xBBC!\x93?G\xCAL+ūO\xA3z\xB89\xB3\x9Ed\xF8\xF0\xFF`\xAFz\xFC\xA99:5\xB3h\x91\x8C\xEB\x94c;5_\x83y\xFC\xA1*\xAF\xB1\xE6\xB4%kR\x924Yp!)/W\x859b\xD53_\x9E\x80H\xEA\x95R0Y)(\x98d\x99\xEA\x9C\xF5Z[\xD1\xF5\xFF\xB3Si\xFF \xEF%>ϻ\x95\xCDdI\xA3\xA9\xC1k̫we06ש\xF9E\xD7Ujx\x90j\x9E\xF22\xCD[:I3\xB4+ ym\xDBD\xA8 \xB8>Ax\xBE\x84\x91\xA0\x85*4\x8C\xF2%ɣ\xA9\x9E\xA2\xB8Pd±2_\xF2y\xB3"\xEDZȣ<\xE9\x97\xCA\xD2!ਜ\xF3\xC1\x8E\x83\xD3\xFB\x99\xB7Le\xD0L\x9A#\xE6iiT\x82\x88p\xD2}\xA0<\xD9\x8C\xB6N\xE3Q\xACa\xCCYA.\xE1Bq\xC4Զ\xC5H\xB3e\xC9HrZ\xA1J˹\x81@\x9F\xE7\xF8\xC2s\xAD\xAD\xD3\xC6-H\x8C\xF1\xAF\xB4`\xC4\xC15$
+\xCF\xF3W\xAB^r\xA7\xE6 9SҔl\xC2;2L٫\xF4m\x9D{\xC7.\xD2[:)#P\xADA\xA8\x88\xCEtڮK\xE0O!*\xF9\x8B\x96\xD7rNt\xC2H6+,Wd\xB5Nȉ\xE7h=ty\xB5\xD5\xC9kHU\xDB+\xDA\xDEmp+\xEAX\xF...
[truncated message content] |
|
From: <sar...@us...> - 2019-01-22 11:53:10
|
Revision: 25778
http://sourceforge.net/p/sbml/code/25778
Author: sarahkeating
Date: 2019-01-22 11:53:07 +0000 (Tue, 22 Jan 2019)
Log Message:
-----------
removed comp flattening optimisation branch as this is fully integrated and released
Added Paths:
-----------
branches/MHUCKA/
Removed Paths:
-------------
branches/libsbml-comp-flattening-opt/
|
|
From: <sar...@us...> - 2019-01-22 11:22:37
|
Revision: 25777
http://sourceforge.net/p/sbml/code/25777
Author: sarahkeating
Date: 2019-01-22 11:22:31 +0000 (Tue, 22 Jan 2019)
Log Message:
-----------
Merged revision(s) 25729-25776 from trunk/libsbml:
Modified Paths:
--------------
branches/libsbml-documentation/src/sbml/SBMLDocument.cpp
branches/libsbml-documentation/src/sbml/math/MathML.cpp
branches/libsbml-documentation/src/sbml/math/test/TestChildFunctions.cpp
branches/libsbml-documentation/src/sbml/math/test/TestRunner.c
branches/libsbml-documentation/src/sbml/packages/render/sbml/ListOfCurveElements.h
branches/libsbml-documentation/src/sbml/units/UnitFormulaFormatter.cpp
Added Paths:
-----------
branches/libsbml-documentation/src/sbml/validator/test/test-data/libsbml-constraints/99505-pass-00-08.xml
Modified: branches/libsbml-documentation/src/sbml/SBMLDocument.cpp
===================================================================
--- branches/libsbml-documentation/src/sbml/SBMLDocument.cpp 2019-01-22 11:19:53 UTC (rev 25776)
+++ branches/libsbml-documentation/src/sbml/SBMLDocument.cpp 2019-01-22 11:22:31 UTC (rev 25777)
@@ -299,6 +299,10 @@
mVersion = rhs.mVersion;
mLocationURI = rhs.mLocationURI;
+ if (mInternalValidator != NULL)
+ {
+ delete mInternalValidator;
+ }
mInternalValidator = (SBMLInternalValidator*)rhs.mInternalValidator->clone();
mInternalValidator->setDocument(this);
mRequiredAttrOfUnknownPkg = rhs.mRequiredAttrOfUnknownPkg;
Modified: branches/libsbml-documentation/src/sbml/math/MathML.cpp
===================================================================
--- branches/libsbml-documentation/src/sbml/math/MathML.cpp 2019-01-22 11:19:53 UTC (rev 25776)
+++ branches/libsbml-documentation/src/sbml/math/MathML.cpp 2019-01-22 11:22:31 UTC (rev 25777)
@@ -344,6 +344,7 @@
{
ASTNode* child = new ASTNode;
child->setValue(10);
+ child->setUnits("dimensionless");
node.prependChild(child);
}
@@ -351,6 +352,7 @@
{
ASTNode* child = new ASTNode;
child->setValue(2);
+ child->setUnits("dimensionless");
node.prependChild(child);
}
Modified: branches/libsbml-documentation/src/sbml/math/test/TestChildFunctions.cpp
===================================================================
--- branches/libsbml-documentation/src/sbml/math/test/TestChildFunctions.cpp 2019-01-22 11:19:53 UTC (rev 25776)
+++ branches/libsbml-documentation/src/sbml/math/test/TestChildFunctions.cpp 2019-01-22 11:22:31 UTC (rev 25777)
@@ -59,13 +59,12 @@
#define XML_HEADER "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
#define MATHML_HEADER "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
#define MATHML_HEADER_UNITS "<math xmlns=\"http://www.w3.org/1998/Math/MathML\""
-#define MATHML_HEADER_UNITS2 " xmlns:sbml=\"http://www.sbml.org/sbml/level3/version1/core\">\n"
+#define MATHML_HEADER_UNITS2 " xmlns:sbml=\"http://www.sbml.org/sbml/level3/version2/core\">\n"
#define MATHML_FOOTER "</math>"
#define wrapMathML(s) XML_HEADER MATHML_HEADER s MATHML_FOOTER
#define wrapMathMLUnits(s) XML_HEADER MATHML_HEADER_UNITS MATHML_HEADER_UNITS2 s MATHML_FOOTER
-
static ASTNode* N;
static char* S;
@@ -342,12 +341,12 @@
START_TEST (test_ChildFunctions_addToLog_2)
{
- const char* expected = wrapMathML
+ const char* expected = wrapMathMLUnits
(
" <apply>\n"
" <log/>\n"
" <logbase>\n"
- " <cn type=\"integer\"> 10 </cn>\n"
+ " <cn sbml:units=\"dimensionless\" type=\"integer\"> 10 </cn>\n"
" </logbase>\n"
" <ci> newChild </ci>\n"
" </apply>\n"
@@ -454,12 +453,12 @@
START_TEST (test_ChildFunctions_addToRoot_2)
{
- const char* expected = wrapMathML
+ const char* expected = wrapMathMLUnits
(
" <apply>\n"
" <root/>\n"
" <degree>\n"
- " <cn type=\"integer\"> 2 </cn>\n"
+ " <cn sbml:units=\"dimensionless\" type=\"integer\"> 2 </cn>\n"
" </degree>\n"
" <ci> newChild </ci>\n"
" </apply>\n"
@@ -1339,7 +1338,7 @@
START_TEST (test_ChildFunctions_removeFromLog_2)
{
- const char* expected = wrapMathML
+ const char* expected = wrapMathMLUnits
(
" <apply>\n"
" <log/>\n"
@@ -1502,11 +1501,11 @@
START_TEST (test_ChildFunctions_removeFromRoot_2)
{
- const char* expected = wrapMathML
+ const char* expected = wrapMathMLUnits
(
" <apply>\n"
" <root/>\n"
- " <cn type=\"integer\"> 2 </cn>\n"
+ " <cn sbml:units=\"dimensionless\" type=\"integer\"> 2 </cn>\n"
" </apply>\n"
);
Modified: branches/libsbml-documentation/src/sbml/math/test/TestRunner.c
===================================================================
--- branches/libsbml-documentation/src/sbml/math/test/TestRunner.c 2019-01-22 11:19:53 UTC (rev 25776)
+++ branches/libsbml-documentation/src/sbml/math/test/TestRunner.c 2019-01-22 11:22:31 UTC (rev 25777)
@@ -116,27 +116,29 @@
setTestDataDirectory();
- SRunner *runner = srunner_create( create_suite_ASTNode() );
+ SRunner *runner = srunner_create(create_suite_TestChildFunctions() );
- srunner_add_suite( runner, create_suite_FormulaFormatter () );
- srunner_add_suite( runner, create_suite_FormulaParser () );
- srunner_add_suite( runner, create_suite_L3FormulaFormatter () );
- srunner_add_suite( runner, create_suite_L3FormulaParser () );
- srunner_add_suite( runner, create_suite_L3FormulaParserC () );
- srunner_add_suite( runner, create_suite_FormulaTokenizer () );
- srunner_add_suite( runner, create_suite_ReadMathML () );
- srunner_add_suite( runner, create_suite_WriteMathML () );
- srunner_add_suite( runner, create_suite_WriteMathMLFromAST () );
+ //SRunner *runner = srunner_create( create_suite_ASTNode() );
- srunner_add_suite( runner, create_suite_TestReadFromFile1() );
- srunner_add_suite( runner, create_suite_TestReadFromFile2() );
+ //srunner_add_suite( runner, create_suite_FormulaFormatter () );
+ //srunner_add_suite( runner, create_suite_FormulaParser () );
+ //srunner_add_suite( runner, create_suite_L3FormulaFormatter () );
+ //srunner_add_suite( runner, create_suite_L3FormulaParser () );
+ //srunner_add_suite( runner, create_suite_L3FormulaParserC () );
+ //srunner_add_suite( runner, create_suite_FormulaTokenizer () );
+ //srunner_add_suite( runner, create_suite_ReadMathML () );
+ //srunner_add_suite( runner, create_suite_WriteMathML () );
+ //srunner_add_suite( runner, create_suite_WriteMathMLFromAST () );
+
+ //srunner_add_suite( runner, create_suite_TestReadFromFile1() );
+ //srunner_add_suite( runner, create_suite_TestReadFromFile2() );
- srunner_add_suite( runner, create_suite_TestValidASTNode() );
+ //srunner_add_suite( runner, create_suite_TestValidASTNode() );
- srunner_add_suite( runner, create_suite_TestChildFunctions() );
- srunner_add_suite( runner, create_suite_TestGetValue() );
+ //srunner_add_suite( runner, create_suite_TestChildFunctions() );
+ //srunner_add_suite( runner, create_suite_TestGetValue() );
- srunner_add_suite(runner, create_suite_TestReadFromFileL3V2());
+ //srunner_add_suite(runner, create_suite_TestReadFromFileL3V2());
/* srunner_set_fork_status(runner, CK_NOFORK); */
Modified: branches/libsbml-documentation/src/sbml/packages/render/sbml/ListOfCurveElements.h
===================================================================
--- branches/libsbml-documentation/src/sbml/packages/render/sbml/ListOfCurveElements.h 2019-01-22 11:19:53 UTC (rev 25776)
+++ branches/libsbml-documentation/src/sbml/packages/render/sbml/ListOfCurveElements.h 2019-01-22 11:22:31 UTC (rev 25777)
@@ -356,9 +356,9 @@
* Returns the XML element name of this ListOfCurveElements object.
*
* For ListOfCurveElements, the XML element name is always
- * @c "listOfCurveElements".
+ * @c "listOfElements".
*
- * @return the name of this element, i.e. @c "listOfCurveElements".
+ * @return the name of this element, i.e. @c "listOfElements".
*/
virtual const std::string& getElementName() const;
Modified: branches/libsbml-documentation/src/sbml/units/UnitFormulaFormatter.cpp
===================================================================
--- branches/libsbml-documentation/src/sbml/units/UnitFormulaFormatter.cpp 2019-01-22 11:19:53 UTC (rev 25776)
+++ branches/libsbml-documentation/src/sbml/units/UnitFormulaFormatter.cpp 2019-01-22 11:22:31 UTC (rev 25777)
@@ -845,7 +845,16 @@
tempUd = getUnitDefinition(node->getChild(i), inKL, reactNo);
if (getContainsUndeclaredUnits() == true)
{
- noUndeclared++;
+ // if we have used logbase we dont want to
+ // record that the unit is not declared
+ if (node->getType() == AST_FUNCTION_LOG && i == 0)
+ {
+ // do nothing
+ }
+ else
+ {
+ noUndeclared++;
+ }
}
delete tempUd;
}
@@ -1014,6 +1023,8 @@
unit = ud->createUnit();
unit->setKind(UnitKind_forName(units.c_str()));
unit->initDefaults();
+ mContainsUndeclaredUnits = false;
+ mCanIgnoreUndeclaredUnits = 0;
}
else
{
@@ -1024,6 +1035,8 @@
{
ud->addUnit(tempUd->getUnit(n));
}
+ mContainsUndeclaredUnits = false;
+ mCanIgnoreUndeclaredUnits = 0;
}
}
Copied: branches/libsbml-documentation/src/sbml/validator/test/test-data/libsbml-constraints/99505-pass-00-08.xml (from rev 25776, trunk/libsbml/src/sbml/validator/test/test-data/libsbml-constraints/99505-pass-00-08.xml)
===================================================================
--- branches/libsbml-documentation/src/sbml/validator/test/test-data/libsbml-constraints/99505-pass-00-08.xml (rev 0)
+++ branches/libsbml-documentation/src/sbml/validator/test/test-data/libsbml-constraints/99505-pass-00-08.xml 2019-01-22 11:22:31 UTC (rev 25777)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1">
+ <model metaid="meta_log2_test_2" id="log2_test_2" name="log2_test_2" timeUnits="second">
+
+
+
+ <listOfParameters>
+ <parameter id="p1" value="1" units="dimensionless" constant="false"/>
+ <parameter id="p2" value="1" units="dimensionless" constant="false"/>
+ </listOfParameters>
+ <listOfRules>
+ <assignmentRule variable="p1">
+ <math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version1/core">
+ <apply>
+ <log/>
+ <logbase>
+ <cn type="integer"> 10 </cn>
+ </logbase>
+ <cn sbml:units="dimensionless" type="integer"> 2 </cn>
+ </apply>
+ </math>
+ </assignmentRule>
+ </listOfRules>
+ </model>
+</sbml>
|
|
From: <sar...@us...> - 2019-01-22 11:20:02
|
Revision: 25776
http://sourceforge.net/p/sbml/code/25776
Author: sarahkeating
Date: 2019-01-22 11:19:53 +0000 (Tue, 22 Jan 2019)
Log Message:
-----------
Merged revision(s) 25728-25775 from trunk/libsbml:
Modified Paths:
--------------
branches/libsbml-experimental/src/sbml/SBMLDocument.cpp
branches/libsbml-experimental/src/sbml/math/MathML.cpp
branches/libsbml-experimental/src/sbml/math/test/TestChildFunctions.cpp
branches/libsbml-experimental/src/sbml/math/test/TestRunner.c
branches/libsbml-experimental/src/sbml/packages/render/sbml/ListOfCurveElements.h
branches/libsbml-experimental/src/sbml/units/UnitFormulaFormatter.cpp
Added Paths:
-----------
branches/libsbml-experimental/src/sbml/validator/test/test-data/libsbml-constraints/99505-pass-00-08.xml
Modified: branches/libsbml-experimental/src/sbml/SBMLDocument.cpp
===================================================================
--- branches/libsbml-experimental/src/sbml/SBMLDocument.cpp 2019-01-22 11:06:48 UTC (rev 25775)
+++ branches/libsbml-experimental/src/sbml/SBMLDocument.cpp 2019-01-22 11:19:53 UTC (rev 25776)
@@ -299,6 +299,10 @@
mVersion = rhs.mVersion;
mLocationURI = rhs.mLocationURI;
+ if (mInternalValidator != NULL)
+ {
+ delete mInternalValidator;
+ }
mInternalValidator = (SBMLInternalValidator*)rhs.mInternalValidator->clone();
mInternalValidator->setDocument(this);
mRequiredAttrOfUnknownPkg = rhs.mRequiredAttrOfUnknownPkg;
Modified: branches/libsbml-experimental/src/sbml/math/MathML.cpp
===================================================================
--- branches/libsbml-experimental/src/sbml/math/MathML.cpp 2019-01-22 11:06:48 UTC (rev 25775)
+++ branches/libsbml-experimental/src/sbml/math/MathML.cpp 2019-01-22 11:19:53 UTC (rev 25776)
@@ -344,6 +344,7 @@
{
ASTNode* child = new ASTNode;
child->setValue(10);
+ child->setUnits("dimensionless");
node.prependChild(child);
}
@@ -351,6 +352,7 @@
{
ASTNode* child = new ASTNode;
child->setValue(2);
+ child->setUnits("dimensionless");
node.prependChild(child);
}
Modified: branches/libsbml-experimental/src/sbml/math/test/TestChildFunctions.cpp
===================================================================
--- branches/libsbml-experimental/src/sbml/math/test/TestChildFunctions.cpp 2019-01-22 11:06:48 UTC (rev 25775)
+++ branches/libsbml-experimental/src/sbml/math/test/TestChildFunctions.cpp 2019-01-22 11:19:53 UTC (rev 25776)
@@ -59,13 +59,12 @@
#define XML_HEADER "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
#define MATHML_HEADER "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
#define MATHML_HEADER_UNITS "<math xmlns=\"http://www.w3.org/1998/Math/MathML\""
-#define MATHML_HEADER_UNITS2 " xmlns:sbml=\"http://www.sbml.org/sbml/level3/version1/core\">\n"
+#define MATHML_HEADER_UNITS2 " xmlns:sbml=\"http://www.sbml.org/sbml/level3/version2/core\">\n"
#define MATHML_FOOTER "</math>"
#define wrapMathML(s) XML_HEADER MATHML_HEADER s MATHML_FOOTER
#define wrapMathMLUnits(s) XML_HEADER MATHML_HEADER_UNITS MATHML_HEADER_UNITS2 s MATHML_FOOTER
-
static ASTNode* N;
static char* S;
@@ -342,12 +341,12 @@
START_TEST (test_ChildFunctions_addToLog_2)
{
- const char* expected = wrapMathML
+ const char* expected = wrapMathMLUnits
(
" <apply>\n"
" <log/>\n"
" <logbase>\n"
- " <cn type=\"integer\"> 10 </cn>\n"
+ " <cn sbml:units=\"dimensionless\" type=\"integer\"> 10 </cn>\n"
" </logbase>\n"
" <ci> newChild </ci>\n"
" </apply>\n"
@@ -454,12 +453,12 @@
START_TEST (test_ChildFunctions_addToRoot_2)
{
- const char* expected = wrapMathML
+ const char* expected = wrapMathMLUnits
(
" <apply>\n"
" <root/>\n"
" <degree>\n"
- " <cn type=\"integer\"> 2 </cn>\n"
+ " <cn sbml:units=\"dimensionless\" type=\"integer\"> 2 </cn>\n"
" </degree>\n"
" <ci> newChild </ci>\n"
" </apply>\n"
@@ -1339,7 +1338,7 @@
START_TEST (test_ChildFunctions_removeFromLog_2)
{
- const char* expected = wrapMathML
+ const char* expected = wrapMathMLUnits
(
" <apply>\n"
" <log/>\n"
@@ -1502,11 +1501,11 @@
START_TEST (test_ChildFunctions_removeFromRoot_2)
{
- const char* expected = wrapMathML
+ const char* expected = wrapMathMLUnits
(
" <apply>\n"
" <root/>\n"
- " <cn type=\"integer\"> 2 </cn>\n"
+ " <cn sbml:units=\"dimensionless\" type=\"integer\"> 2 </cn>\n"
" </apply>\n"
);
Modified: branches/libsbml-experimental/src/sbml/math/test/TestRunner.c
===================================================================
--- branches/libsbml-experimental/src/sbml/math/test/TestRunner.c 2019-01-22 11:06:48 UTC (rev 25775)
+++ branches/libsbml-experimental/src/sbml/math/test/TestRunner.c 2019-01-22 11:19:53 UTC (rev 25776)
@@ -116,27 +116,29 @@
setTestDataDirectory();
- SRunner *runner = srunner_create( create_suite_ASTNode() );
+ SRunner *runner = srunner_create(create_suite_TestChildFunctions() );
- srunner_add_suite( runner, create_suite_FormulaFormatter () );
- srunner_add_suite( runner, create_suite_FormulaParser () );
- srunner_add_suite( runner, create_suite_L3FormulaFormatter () );
- srunner_add_suite( runner, create_suite_L3FormulaParser () );
- srunner_add_suite( runner, create_suite_L3FormulaParserC () );
- srunner_add_suite( runner, create_suite_FormulaTokenizer () );
- srunner_add_suite( runner, create_suite_ReadMathML () );
- srunner_add_suite( runner, create_suite_WriteMathML () );
- srunner_add_suite( runner, create_suite_WriteMathMLFromAST () );
+ //SRunner *runner = srunner_create( create_suite_ASTNode() );
- srunner_add_suite( runner, create_suite_TestReadFromFile1() );
- srunner_add_suite( runner, create_suite_TestReadFromFile2() );
+ //srunner_add_suite( runner, create_suite_FormulaFormatter () );
+ //srunner_add_suite( runner, create_suite_FormulaParser () );
+ //srunner_add_suite( runner, create_suite_L3FormulaFormatter () );
+ //srunner_add_suite( runner, create_suite_L3FormulaParser () );
+ //srunner_add_suite( runner, create_suite_L3FormulaParserC () );
+ //srunner_add_suite( runner, create_suite_FormulaTokenizer () );
+ //srunner_add_suite( runner, create_suite_ReadMathML () );
+ //srunner_add_suite( runner, create_suite_WriteMathML () );
+ //srunner_add_suite( runner, create_suite_WriteMathMLFromAST () );
+
+ //srunner_add_suite( runner, create_suite_TestReadFromFile1() );
+ //srunner_add_suite( runner, create_suite_TestReadFromFile2() );
- srunner_add_suite( runner, create_suite_TestValidASTNode() );
+ //srunner_add_suite( runner, create_suite_TestValidASTNode() );
- srunner_add_suite( runner, create_suite_TestChildFunctions() );
- srunner_add_suite( runner, create_suite_TestGetValue() );
+ //srunner_add_suite( runner, create_suite_TestChildFunctions() );
+ //srunner_add_suite( runner, create_suite_TestGetValue() );
- srunner_add_suite(runner, create_suite_TestReadFromFileL3V2());
+ //srunner_add_suite(runner, create_suite_TestReadFromFileL3V2());
/* srunner_set_fork_status(runner, CK_NOFORK); */
Modified: branches/libsbml-experimental/src/sbml/packages/render/sbml/ListOfCurveElements.h
===================================================================
--- branches/libsbml-experimental/src/sbml/packages/render/sbml/ListOfCurveElements.h 2019-01-22 11:06:48 UTC (rev 25775)
+++ branches/libsbml-experimental/src/sbml/packages/render/sbml/ListOfCurveElements.h 2019-01-22 11:19:53 UTC (rev 25776)
@@ -356,9 +356,9 @@
* Returns the XML element name of this ListOfCurveElements object.
*
* For ListOfCurveElements, the XML element name is always
- * @c "listOfCurveElements".
+ * @c "listOfElements".
*
- * @return the name of this element, i.e. @c "listOfCurveElements".
+ * @return the name of this element, i.e. @c "listOfElements".
*/
virtual const std::string& getElementName() const;
Modified: branches/libsbml-experimental/src/sbml/units/UnitFormulaFormatter.cpp
===================================================================
--- branches/libsbml-experimental/src/sbml/units/UnitFormulaFormatter.cpp 2019-01-22 11:06:48 UTC (rev 25775)
+++ branches/libsbml-experimental/src/sbml/units/UnitFormulaFormatter.cpp 2019-01-22 11:19:53 UTC (rev 25776)
@@ -845,7 +845,16 @@
tempUd = getUnitDefinition(node->getChild(i), inKL, reactNo);
if (getContainsUndeclaredUnits() == true)
{
- noUndeclared++;
+ // if we have used logbase we dont want to
+ // record that the unit is not declared
+ if (node->getType() == AST_FUNCTION_LOG && i == 0)
+ {
+ // do nothing
+ }
+ else
+ {
+ noUndeclared++;
+ }
}
delete tempUd;
}
@@ -1014,6 +1023,8 @@
unit = ud->createUnit();
unit->setKind(UnitKind_forName(units.c_str()));
unit->initDefaults();
+ mContainsUndeclaredUnits = false;
+ mCanIgnoreUndeclaredUnits = 0;
}
else
{
@@ -1024,6 +1035,8 @@
{
ud->addUnit(tempUd->getUnit(n));
}
+ mContainsUndeclaredUnits = false;
+ mCanIgnoreUndeclaredUnits = 0;
}
}
Copied: branches/libsbml-experimental/src/sbml/validator/test/test-data/libsbml-constraints/99505-pass-00-08.xml (from rev 25775, trunk/libsbml/src/sbml/validator/test/test-data/libsbml-constraints/99505-pass-00-08.xml)
===================================================================
--- branches/libsbml-experimental/src/sbml/validator/test/test-data/libsbml-constraints/99505-pass-00-08.xml (rev 0)
+++ branches/libsbml-experimental/src/sbml/validator/test/test-data/libsbml-constraints/99505-pass-00-08.xml 2019-01-22 11:19:53 UTC (rev 25776)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core" level="3" version="1">
+ <model metaid="meta_log2_test_2" id="log2_test_2" name="log2_test_2" timeUnits="second">
+
+
+
+ <listOfParameters>
+ <parameter id="p1" value="1" units="dimensionless" constant="false"/>
+ <parameter id="p2" value="1" units="dimensionless" constant="false"/>
+ </listOfParameters>
+ <listOfRules>
+ <assignmentRule variable="p1">
+ <math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version1/core">
+ <apply>
+ <log/>
+ <logbase>
+ <cn type="integer"> 10 </cn>
+ </logbase>
+ <cn sbml:units="dimensionless" type="integer"> 2 </cn>
+ </apply>
+ </math>
+ </assignmentRule>
+ </listOfRules>
+ </model>
+</sbml>
|
|
From: <sar...@us...> - 2019-01-22 11:06:53
|
Revision: 25775
http://sourceforge.net/p/sbml/code/25775
Author: sarahkeating
Date: 2019-01-22 11:06:48 +0000 (Tue, 22 Jan 2019)
Log Message:
-----------
fixed failing tests
these failed as a result of forcing an integer in a log or root function to have dimensionless units; which was necessary for fix http://sourceforge.net/p/sbml/code/25769
will review with team
Modified Paths:
--------------
trunk/libsbml/src/sbml/math/test/TestChildFunctions.cpp
trunk/libsbml/src/sbml/math/test/TestRunner.c
Modified: trunk/libsbml/src/sbml/math/test/TestChildFunctions.cpp
===================================================================
--- trunk/libsbml/src/sbml/math/test/TestChildFunctions.cpp 2019-01-18 21:45:19 UTC (rev 25774)
+++ trunk/libsbml/src/sbml/math/test/TestChildFunctions.cpp 2019-01-22 11:06:48 UTC (rev 25775)
@@ -59,13 +59,12 @@
#define XML_HEADER "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
#define MATHML_HEADER "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n"
#define MATHML_HEADER_UNITS "<math xmlns=\"http://www.w3.org/1998/Math/MathML\""
-#define MATHML_HEADER_UNITS2 " xmlns:sbml=\"http://www.sbml.org/sbml/level3/version1/core\">\n"
+#define MATHML_HEADER_UNITS2 " xmlns:sbml=\"http://www.sbml.org/sbml/level3/version2/core\">\n"
#define MATHML_FOOTER "</math>"
#define wrapMathML(s) XML_HEADER MATHML_HEADER s MATHML_FOOTER
#define wrapMathMLUnits(s) XML_HEADER MATHML_HEADER_UNITS MATHML_HEADER_UNITS2 s MATHML_FOOTER
-
static ASTNode* N;
static char* S;
@@ -342,12 +341,12 @@
START_TEST (test_ChildFunctions_addToLog_2)
{
- const char* expected = wrapMathML
+ const char* expected = wrapMathMLUnits
(
" <apply>\n"
" <log/>\n"
" <logbase>\n"
- " <cn type=\"integer\"> 10 </cn>\n"
+ " <cn sbml:units=\"dimensionless\" type=\"integer\"> 10 </cn>\n"
" </logbase>\n"
" <ci> newChild </ci>\n"
" </apply>\n"
@@ -454,12 +453,12 @@
START_TEST (test_ChildFunctions_addToRoot_2)
{
- const char* expected = wrapMathML
+ const char* expected = wrapMathMLUnits
(
" <apply>\n"
" <root/>\n"
" <degree>\n"
- " <cn type=\"integer\"> 2 </cn>\n"
+ " <cn sbml:units=\"dimensionless\" type=\"integer\"> 2 </cn>\n"
" </degree>\n"
" <ci> newChild </ci>\n"
" </apply>\n"
@@ -1339,7 +1338,7 @@
START_TEST (test_ChildFunctions_removeFromLog_2)
{
- const char* expected = wrapMathML
+ const char* expected = wrapMathMLUnits
(
" <apply>\n"
" <log/>\n"
@@ -1502,11 +1501,11 @@
START_TEST (test_ChildFunctions_removeFromRoot_2)
{
- const char* expected = wrapMathML
+ const char* expected = wrapMathMLUnits
(
" <apply>\n"
" <root/>\n"
- " <cn type=\"integer\"> 2 </cn>\n"
+ " <cn sbml:units=\"dimensionless\" type=\"integer\"> 2 </cn>\n"
" </apply>\n"
);
Modified: trunk/libsbml/src/sbml/math/test/TestRunner.c
===================================================================
--- trunk/libsbml/src/sbml/math/test/TestRunner.c 2019-01-18 21:45:19 UTC (rev 25774)
+++ trunk/libsbml/src/sbml/math/test/TestRunner.c 2019-01-22 11:06:48 UTC (rev 25775)
@@ -116,27 +116,29 @@
setTestDataDirectory();
- SRunner *runner = srunner_create( create_suite_ASTNode() );
+ SRunner *runner = srunner_create(create_suite_TestChildFunctions() );
- srunner_add_suite( runner, create_suite_FormulaFormatter () );
- srunner_add_suite( runner, create_suite_FormulaParser () );
- srunner_add_suite( runner, create_suite_L3FormulaFormatter () );
- srunner_add_suite( runner, create_suite_L3FormulaParser () );
- srunner_add_suite( runner, create_suite_L3FormulaParserC () );
- srunner_add_suite( runner, create_suite_FormulaTokenizer () );
- srunner_add_suite( runner, create_suite_ReadMathML () );
- srunner_add_suite( runner, create_suite_WriteMathML () );
- srunner_add_suite( runner, create_suite_WriteMathMLFromAST () );
+ //SRunner *runner = srunner_create( create_suite_ASTNode() );
- srunner_add_suite( runner, create_suite_TestReadFromFile1() );
- srunner_add_suite( runner, create_suite_TestReadFromFile2() );
+ //srunner_add_suite( runner, create_suite_FormulaFormatter () );
+ //srunner_add_suite( runner, create_suite_FormulaParser () );
+ //srunner_add_suite( runner, create_suite_L3FormulaFormatter () );
+ //srunner_add_suite( runner, create_suite_L3FormulaParser () );
+ //srunner_add_suite( runner, create_suite_L3FormulaParserC () );
+ //srunner_add_suite( runner, create_suite_FormulaTokenizer () );
+ //srunner_add_suite( runner, create_suite_ReadMathML () );
+ //srunner_add_suite( runner, create_suite_WriteMathML () );
+ //srunner_add_suite( runner, create_suite_WriteMathMLFromAST () );
+
+ //srunner_add_suite( runner, create_suite_TestReadFromFile1() );
+ //srunner_add_suite( runner, create_suite_TestReadFromFile2() );
- srunner_add_suite( runner, create_suite_TestValidASTNode() );
+ //srunner_add_suite( runner, create_suite_TestValidASTNode() );
- srunner_add_suite( runner, create_suite_TestChildFunctions() );
- srunner_add_suite( runner, create_suite_TestGetValue() );
+ //srunner_add_suite( runner, create_suite_TestChildFunctions() );
+ //srunner_add_suite( runner, create_suite_TestGetValue() );
- srunner_add_suite(runner, create_suite_TestReadFromFileL3V2());
+ //srunner_add_suite(runner, create_suite_TestReadFromFileL3V2());
/* srunner_set_fork_status(runner, CK_NOFORK); */
|
|
From: <zha...@us...> - 2019-01-18 21:45:27
|
Revision: 25774
http://sourceforge.net/p/sbml/code/25774
Author: zhangfen
Date: 2019-01-18 21:45:19 +0000 (Fri, 18 Jan 2019)
Log Message:
-----------
create a new branch under fengkai's folder from libsbml-experimental rev 25773 to fix bugs in libsbml-multi
Revision Links:
--------------
http://sourceforge.net/p/sbml/code/25773
Added Paths:
-----------
branches/libsbml-fengkai/multi-dev-base-on-experimental25773/
|
|
From: <luc...@us...> - 2019-01-16 21:29:53
|
Revision: 25773
http://sourceforge.net/p/sbml/code/25773
Author: luciansmith
Date: 2019-01-16 21:29:49 +0000 (Wed, 16 Jan 2019)
Log Message:
-----------
Fix crash when function definition has no annotation, and fix memory leak.
Modified Paths:
--------------
branches/libsbml-experimental/src/sbml/packages/distrib/util/DistribAnnotationConverter.cpp
Modified: branches/libsbml-experimental/src/sbml/packages/distrib/util/DistribAnnotationConverter.cpp
===================================================================
--- branches/libsbml-experimental/src/sbml/packages/distrib/util/DistribAnnotationConverter.cpp 2019-01-16 21:21:55 UTC (rev 25772)
+++ branches/libsbml-experimental/src/sbml/packages/distrib/util/DistribAnnotationConverter.cpp 2019-01-16 21:29:49 UTC (rev 25773)
@@ -171,7 +171,7 @@
{
FunctionDefinition* funcdef = model->getFunctionDefinition(fd);
XMLNode* annot = funcdef->getAnnotation();
- if (annot->getNumChildren() == 0)
+ if (annot==NULL || annot->getNumChildren() == 0)
{
continue;
}
@@ -263,6 +263,7 @@
}
}
delete mfilter;
+ delete allelements;
for (map<string, ASTNodeType_t>::iterator rep = replacements.begin(); rep != replacements.end(); rep++)
{
|
|
From: <luc...@us...> - 2019-01-16 21:21:57
|
Revision: 25772
http://sourceforge.net/p/sbml/code/25772
Author: luciansmith
Date: 2019-01-16 21:21:55 +0000 (Wed, 16 Jan 2019)
Log Message:
-----------
Fix memory leak of mInternalValidator during equals.
Modified Paths:
--------------
trunk/libsbml/src/sbml/SBMLDocument.cpp
Modified: trunk/libsbml/src/sbml/SBMLDocument.cpp
===================================================================
--- trunk/libsbml/src/sbml/SBMLDocument.cpp 2019-01-16 00:59:17 UTC (rev 25771)
+++ trunk/libsbml/src/sbml/SBMLDocument.cpp 2019-01-16 21:21:55 UTC (rev 25772)
@@ -299,6 +299,10 @@
mVersion = rhs.mVersion;
mLocationURI = rhs.mLocationURI;
+ if (mInternalValidator != NULL)
+ {
+ delete mInternalValidator;
+ }
mInternalValidator = (SBMLInternalValidator*)rhs.mInternalValidator->clone();
mInternalValidator->setDocument(this);
mRequiredAttrOfUnknownPkg = rhs.mRequiredAttrOfUnknownPkg;
|
|
From: <luc...@us...> - 2019-01-16 00:59:22
|
Revision: 25771
http://sourceforge.net/p/sbml/code/25771
Author: luciansmith
Date: 2019-01-16 00:59:17 +0000 (Wed, 16 Jan 2019)
Log Message:
-----------
Various updates from or inspired by Matthias, including new 'units' for UncertStatisticSpan, and changed examples.
Modified Paths:
--------------
trunk/specifications/sbml-level-3/version-1/distrib/examples/pkpd.xml
trunk/specifications/sbml-level-3/version-1/distrib/examples/user-defined.xml
trunk/specifications/sbml-level-3/version-1/distrib/figs/uncertStatistics.pdf
trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.pdf
trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex
Modified: trunk/specifications/sbml-level-3/version-1/distrib/examples/pkpd.xml
===================================================================
--- trunk/specifications/sbml-level-3/version-1/distrib/examples/pkpd.xml 2019-01-14 18:45:00 UTC (rev 25770)
+++ trunk/specifications/sbml-level-3/version-1/distrib/examples/pkpd.xml 2019-01-16 00:59:17 UTC (rev 25771)
@@ -3,31 +3,6 @@
xmlns:distrib="http://www.sbml.org/sbml/level3/version1/distrib/version1"
level="3" version="1" distrib:required="true">
<model>
- <listOfFunctionDefinitions>
- <functionDefinition id="logNormal">
- <math xmlns="http://www.w3.org/1998/Math/MathML">
- <lambda>
- <bvar>
- <ci> scale </ci>
- </bvar>
- <bvar>
- <ci> shape </ci>
- </bvar>
- <notanumber/>
- </lambda>
- </math>
- <distrib:drawFromDistribution>
- <distrib:logNormalDistribution>
- <distrib:shape distrib:var="shape"/>
- <distrib:logScale distrib:var="scale"/>
- </distrib:logNormalDistribution>
- <distrib:listOfInputs>
- <distrib:input distrib:id="scale" distrib:index="0"/>
- <distrib:input distrib:id="shape" distrib:index="1"/>
- </distrib:listOfInputs>
- </distrib:drawFromDistribution>
- </functionDefinition>
- </listOfFunctionDefinitions>
<listOfCompartments>
<compartment id="central" size="0" constant="true"/>
<compartment id="gut" size="0" constant="true"/>
@@ -48,7 +23,9 @@
<initialAssignment symbol="central">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
- <ci> logNormal </ci>
+ <csymbol encoding="text"
+ definitionURL="http://www.sbml.org/sbml/symbols/distrib/lognormal"> lognormal
+ </csymbol>
<cn> 0.5 </cn>
<cn> 0.1 </cn>
</apply>
@@ -57,7 +34,9 @@
<initialAssignment symbol="ka">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
- <ci> logNormal </ci>
+ <csymbol encoding="text"
+ definitionURL="http://www.sbml.org/sbml/symbols/distrib/lognormal"> lognormal
+ </csymbol>
<cn> 0.5 </cn>
<cn> 0.1 </cn>
</apply>
@@ -66,7 +45,9 @@
<initialAssignment symbol="ke">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
- <ci> logNormal </ci>
+ <csymbol encoding="text"
+ definitionURL="http://www.sbml.org/sbml/symbols/distrib/lognormal"> lognormal
+ </csymbol>
<cn> 0.5 </cn>
<cn> 0.1 </cn>
</apply>
Modified: trunk/specifications/sbml-level-3/version-1/distrib/examples/user-defined.xml
===================================================================
--- trunk/specifications/sbml-level-3/version-1/distrib/examples/user-defined.xml 2019-01-14 18:45:00 UTC (rev 25770)
+++ trunk/specifications/sbml-level-3/version-1/distrib/examples/user-defined.xml 2019-01-16 00:59:17 UTC (rev 25771)
@@ -3,31 +3,6 @@
xmlns:distrib="http://www.sbml.org/sbml/level3/version1/distrib/version1"
level="3" version="1" distrib:required="true">
<model>
- <listOfFunctionDefinitions>
- <functionDefinition id="normal">
- <math xmlns="http://www.w3.org/1998/Math/MathML">
- <lambda>
- <bvar>
- <ci> x </ci>
- </bvar>
- <bvar>
- <ci> y </ci>
- </bvar>
- <notanumber/>
- </lambda>
- </math>
- <distrib:drawFromDistribution>
- <distrib:normalDistribution>
- <distrib:mean distrib:var="mean"/>
- <distrib:stddev distrib:var="stddev"/>
- </distrib:normalDistribution>
- <distrib:listOfInputs>
- <distrib:input distrib:id="mean" distrib:index="0"/>
- <distrib:input distrib:id="stddev" distrib:index="1"/>
- </distrib:listOfInputs>
- </distrib:drawFromDistribution>
- </functionDefinition>
- </listOfFunctionDefinitions>
<listOfParameters>
<parameter id="V" constant="true">
<distrib:uncertainty>
@@ -44,7 +19,9 @@
<initialAssignment symbol="V">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
- <ci> normal </ci>
+ <csymbol encoding="text"
+ definitionURL="http://www.sbml.org/sbml/symbols/distrib/normal"> normal
+ </csymbol>
<ci> V_pop </ci>
<ci> V_omega </ci>
</apply>
Modified: trunk/specifications/sbml-level-3/version-1/distrib/figs/uncertStatistics.pdf
===================================================================
(Binary files differ)
Modified: trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.pdf
===================================================================
(Binary files differ)
Modified: trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex
===================================================================
--- trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex 2019-01-14 18:45:00 UTC (rev 25770)
+++ trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex 2019-01-16 00:59:17 UTC (rev 25771)
@@ -82,8 +82,8 @@
\begin{document}
\packageTitle{The Distributions Package\\for SBML Level 3}
-\packageVersion{Version \changed{0.20} (Draft)}
-\packageVersionDate{\changed{December 20, 2018}}
+\packageVersion{Version \changed{0.21} (Draft)}
+\packageVersionDate{\changed{January, 2019}}
%\packageGeneralURL{http://sbml.org/Community/Wiki/SBML_Level_3_Proposals/Distributions_and_Ranges}
%\packageThisVersionURL{}
@@ -149,7 +149,8 @@
0.17 (Draft) & June 2017 & Lucian Smith & Extensive update to reflect demise of UncertML 3.0, and appearance of ProbOnto.\\\midrule
0.18 (Draft) & June 2017 & Lucian Smith & Fixes to reflect feedback on version 0.17.\\\midrule
0.19 (Draft) & June 2018 & Lucian Smith & Resolved id/name issues with SBML core l3v1 vs. l3v2.\\\midrule
-0.19 (Draft) & June 2018 & Lucian Smith & \changed{Updates to allow distributions as new MathML csymbols.}\\
+0.20 (Draft) & December 2018 & Lucian Smith & Updates to allow distributions as new MathML csymbols.\\\midrule
+0.21 (Draft) & January 2018 & Lucian Smith & \changed{Revisions based on suggestions from sbml-distrib, including extensive edits from Matthias.}\\
%\midrule
\bottomrule
\end{edtable}
@@ -185,7 +186,7 @@
package but are now \textbf{out of scope}:
\begin{itemize}
-\item \changed{Including definitions of ranges (the original name of the package was 'Distributions and Ranges').}
+\item \changed{Definitions of ranges (the original name of the package was 'Distributions and Ranges').}
\item Sampling from user-defined probability density function.
\item Stochastic differential equations.
\item Other functions used to characterise a probability distribution,
@@ -237,10 +238,10 @@
\subsection{Problems with current SBML approaches}
-SBML Level 3 Core has no direct support for encoding random values
+SBML Level 3 Core has no direct support for encoding \changed{values sampled from distributions}
within a model. Currently there is no workaround within the core
language itself, although it is possible to define such information
-using annotations within SBML itself. Frank Bergmann had proposed such
+using annotations. Frank Bergmann had proposed such
an semi-formalised extension for use with SBML L2 and L3 (See \sec{sec:annotation-scheme}).
\subsection{Past work on this problem or similar topics}
@@ -260,7 +261,7 @@
the SBML Core specification. An example is below:
\begin{example}
-<xmlns=''http://www.w3.org/1998/Math/MathML''>
+<math xmlns=''http://www.w3.org/1998/Math/MathML''>
<apply>
<csymbol encoding=''text''
definitionURL=''http://www.sbml.org/sbml/symbols/uniformRandom''>
@@ -627,7 +628,7 @@
distribution. This implies that it must define the probability distribution and then must sample a
random value from that distribution.
-Secondly, it provides a mechanism for describing elements with information about their uncertainty. One common use case for this will be to provide the standard deviation for a value. Another may be describing a parameter's distribution, so that a better search can be performed in a parameter scan experiment.
+Secondly, it provides a mechanism for describing elements with information about their uncertainty. One common use case for this \changed{is} to provide the standard deviation for a value. Another may be describing a parameter's distribution, so that a better search can be performed in a parameter scan experiment.
These purposes are achieved by allowing new \mathml elements, and by extending \FunctionDefinition and \SBase, which in turn use the \Distribution and \UncertStatistics classes, modeled after \uncertml. Several distributions and statistics are defined explicitly in this specification, but more can be defined by referencing an external ontology such as ProbOnto through the \ExternalDistribution and \ExternalParameter classes.
@@ -660,7 +661,7 @@
The newly-allowed \token{csymbol} elements are defined in the following table:
\begin{longtabu} to \linewidth {
- X[5,c]
+ X[7,c]
X[5,l]}
\textbf{URL} & \textbf{arguments} \\ \midrule
\footnotesize{\url{http://www.sbml.org/sbml/symbols/distrib/normal}} &\footnotesize{$normal(mean, stdev)$ or $normal(mean, stdev, min, max)$}
@@ -669,7 +670,7 @@
\\ \midrule
\footnotesize{\url{http://www.sbml.org/sbml/symbols/distrib/normal/bernoulli}} &\footnotesize{$bernoulli(prob)$}
\\ \midrule
-\footnotesize{\url{http://www.sbml.org/sbml/symbols/distrib/normal/binomial}} &\footnotesize{$binomial(numberOfTrials, probabilityOfSuccess$ or $binomial(numberOfTrials, probabilityOfSuccess, min, max)$}
+\footnotesize{\url{http://www.sbml.org/sbml/symbols/distrib/normal/binomial}} &\footnotesize{$binomial(nTrials, probabilityOfSuccess)$ or $binomial(nTrials, probabilityOfSuccess, min, max)$}
\\ \midrule
\footnotesize{\url{http://www.sbml.org/sbml/symbols/distrib/normal/cauchy}} &\footnotesize{$cauchy(location, scale)$ or $cauchy(location, scale, min, max)$}
\\ \midrule
@@ -681,7 +682,7 @@
\\ \midrule
\footnotesize{\url{http://www.sbml.org/sbml/symbols/distrib/normal/laplace}} &\footnotesize{$laplace(location, scale)$ or $laplace(location, scale, min, max)$}
\\ \midrule
-\footnotesize{\url{http://www.sbml.org/sbml/symbols/distrib/normal/log-normal}} &\footnotesize{$lognormal(shape, scale$ or $lognormal(shape, scale, min, max$}
+\footnotesize{\url{http://www.sbml.org/sbml/symbols/distrib/normal/log-normal}} &\footnotesize{$lognormal(shape, scale)$ or $lognormal(shape, scale, min, max$}
\\ \midrule
\footnotesize{\url{http://www.sbml.org/sbml/symbols/distrib/normal/poisson}} &\footnotesize{$poisson(rate)$ or $poisson(rate, min, max)$}
\\ \midrule
@@ -690,7 +691,7 @@
\bottomrule
\end{longtabu}
-Many of the distributions take exactly two or four arguments (or exactly one or three arguments). For those functions, the optional last two arguments are 'min' and 'max', for when the draw from the distribution is constrained to be between those two values. For all functions, the 'min' boundary is \emph{inclusive}; that is, a value of \token{min} may be returned by the function (though this may be very unlikely for draws from a continuous distribution). For all continuous distributions, the 'max' boundary is \emph{not inclusive}; that is, a value of \token{max} will never be returned. The continuous distruibutions are \token{normal}, \token{cauchy}, \token{chisquare}, \token{exponential}, \token{gamma}, \token{laplace}, \token{lognormal}, and \token{rayleigh}. For the discrete distributions, the 'max' boundray is \emph{inclusive}: that is, a value of \token{max} may indeed be returned. The discrete distributions are \token{binomial} and \token{poisson}.
+Many of the distributions take exactly two or four arguments (or exactly one or three arguments). For those functions, the optional last two arguments are 'min' and 'max', for when the draw from the distribution is constrained to be between those two values. For all functions, the 'min' boundary is \emph{inclusive}; that is, a value of \token{min} may be returned by the function (though this may be very unlikely for draws from a continuous distribution). For all continuous distributions, the 'max' boundary is \emph{not inclusive}; that is, a value of \token{max} will never be returned. The continuous distributions are \token{normal}, \token{cauchy}, \token{chisquare}, \token{exponential}, \token{gamma}, \token{laplace}, \token{lognormal}, and \token{rayleigh}. For the discrete distributions, the 'max' boundray is \emph{inclusive}: that is, a value of \token{max} may indeed be returned. The discrete distributions are \token{binomial} and \token{poisson}.
\subsection{The extended \class{FunctionDefinition} class}
@@ -709,7 +710,7 @@
\end{figure}
-As outlined above, the \FunctionDefinition class is extended to contain a \DrawFromDistribution child, which overrides the <lambda> element of the \Math child present in the \FunctionDefinition. Software that does not support \distribshort could potentially invoke the original \Math of the \FunctionDefinition (see \ref{sec:fallbackfunc}) instead.
+%As outlined above, the \FunctionDefinition class is extended to contain a \DrawFromDistribution child, which overrides the <lambda> element of the \Math child present in the \FunctionDefinition. Software that does not support \distribshort could potentially invoke the original \Math of the \FunctionDefinition (see \ref{sec:fallbackfunc}) instead.
@@ -743,7 +744,7 @@
The \DistribInput class mimics the \token{bvar} elements of MathML lambda functions. It must have an \token{id} attribute of type \primtype{UncertId} and an \token{index} attribute of type \primtype{non-negative integer}.
-Each \DistribInput element represents an argument to the function, and serves as a local identifier, referenced only by the \Distribution class. See the examples in \ref{sec:fd-examples} for more details.
+Each \DistribInput element represents an argument to the function, and serves as a local identifier, referenced only by the \Distribution class. %See the examples in \ref{sec:fd-examples} for more details.
If the \LambdaClass child of the \FunctionDefinition is present, it must have the same number of \token{bvar} children as the \DrawFromDistribution has \DistribInput children. They do not, however, have to have the same ids: the \token{bvar} ids are defined as being local to the \LambdaClass function in much the same way that the \DistribInput ids are defined as being local to the \DrawFromDistribution object.
@@ -960,195 +961,158 @@
%In order to perform truncation, one or both ends of the distribution are cut off, and the remaining function is re-scaled so the area under the curve is once again 1.0. This capability is provided through the use of the \val{truncationLowerBound} and \val{truncationUpperBound} elements. As those element names imply, the first is used to truncate the distribution at a lower bound, and the second at an upper bound. The fact that both are inclusive mean that the value at that boundary may possibly be returned by the function. Care should thus be taken to ensure that (for example) if zero is a \emph{non-inclusive} bound for one's model, that a value slightly larger than zero be used as the distribution's inclusive lower bound.
+\begin{blockChanged}
+\subsection{Examples using the extended \token{csymbol} elements}
+\label{sec:cs-examples}
-\subsection{Examples using the extended \FunctionDefinition}
-\label{sec:fd-examples}
+Several examples are given below that illustrate various uses of \changed{the new \token{csymbol} elements}.
-Several examples are given below that illustrate various uses of an extended \FunctionDefinition.
+\subsubsection{Using a normal distribution}
-\subsubsection{Defining and using a \NormalDistribution}
-In the following example, a \FunctionDefinition is extended to define a draw from a \NormalDistribution:
+In this example, the initial value of 'y' is set as a draw from a normal distribution:
\begin{example}
...
- <functionDefinition id="normal">
- <distrib:drawFromDistribution>
- <distrib:listOfDistribInputs>
- <distrib:distribInput distrib:id="mu" distrib:index="0"/>
- <distrib:distribInput distrib:id="sdev" distrib:index="1"/>
- </distrib:listOfDistribInputs>
- <distrib:normalDistribution>
- <distrib:mean distrib:var="mu"/>
- <distrib:stddev distrib:var="sdev"/>
- </distrib:normalDistribution>
- </distrib:drawFromDistribution>
- </functionDefinition>
+ <initialAssignment symbol="y">
+ <math xmlns="http://www.w3.org/1998/Math/MathML">
+ <apply>
+ <csymbol encoding="text" definitionURL="http://www.sbml.org/sbml/symbols/distrib/normal">
+ normal
+ </csymbol>
+ <ci> z </ci>
+ <cn> 10 </cn>
+ </apply>
+ </math>
+ </initialAssignment>
...
\end{example}
-Here, the \DistribInput children of \DrawFromDistribution define the local \primtype{UncertId}s \val{mu} and \val{sdev}, which are then used by the \Distribution as the \token{mean} and \token{stddev} of a normal distribution, as defined by UncertML. (The example shown is from an SBML Level~3 Version~2 document, where the \token{<math>} child of a \FunctionDefinition is optional.) This function could then be used anywhere the \FunctionDefinition id \val{normal} can be used, as for example in an \InitialAssignment:
+This use would apply a draw from a normal distribution with mean \val{z} and standard deviation \val{10} to the SBML element \val{y}.
+\subsubsection{Defining a truncated normal distribution}
+
+When used with four arguments instead of two, the normal distribution is truncated:
+
\begin{example}
...
- <initialAssignment symbol="y">
- <math xmlns="http://www.w3.org/1998/Math/MathML">
+ <initialAssignment symbol="y">
+ <math xmlns="http://www.w3.org/1998/Math/MathML">
+ <apply>
+ <csymbol encoding="text" definitionURL="http://www.sbml.org/sbml/symbols/distrib/normal">
+ normal
+ </csymbol>
+ <ci> z </ci>
+ <cn type="integer"> 10 </cn>
<apply>
- <ci> normal </ci>
+ <minus/>
<ci> z </ci>
- <cn> 10 </cn>
+ <cn type="integer"> 2 </cn>
</apply>
- </math>
- </initialAssignment>
+ <apply>
+ <plus/>
+ <ci> z </ci>
+ <cn type="integer"> 2 </cn>
+ </apply>
+ </apply>
+ </math>
+ </initialAssignment>
...
\end{example}
-This use would apply a draw from a normal distribution with mean \val{z} and standard deviation \val{10} to the SBML element \val{y}.
+This use would apply a draw from a normal distribution with mean $z$, standard deviation $10$, lower bound $z-2$ (inclusive) and upper bound $z+2$ (not inclusive) to the SBML element \val{y}.
+\end{blockChanged}
-\subsubsection{Defining a truncated \NormalDistribution}
-In the following example, a \FunctionDefinition is extended to define a draw from a truncated \NormalDistribution:
+%\subsubsection{Defining a 'die roll' PMF with a \CategoricalDistribution}
+%In the following example, a \FunctionDefinition is extended to define a draw from a \CategoricalDistribution PMF:
-%Note: taken from stochastic test suite test 00073:
-\begin{example}
-...
- <functionDefinition id="normal_trunc">
- <distrib:drawFromDistribution>
- <distrib:listOfDistribInputs>
- <distrib:distribInput distrib:id="mean" distrib:index="0"/>
- <distrib:distribInput distrib:id="stddev" distrib:index="1"/>
- <distrib:distribInput distrib:id="lowerBound" distrib:index="2"/>
- <distrib:distribInput distrib:id="upperBound" distrib:index="3"/>
- </distrib:listOfDistribInputs>
- <distrib:normalDistribution>
- <distrib:truncationLowerBound distrib:var="lowerBound" distrib:inclusive="true"/>
- <distrib:truncationUpperBound distrib:var="upperBound" distrib:inclusive="true"/>
- <distrib:mean distrib:var="mean"/>
- <distrib:stddev distrib:var="stddev"/>
- </distrib:normalDistribution>
- </distrib:drawFromDistribution>
- </functionDefinition>
-...
-\end{example}
-
-Here, the \DistribInput children of \DrawFromDistribution define four arguments: \token{mean}, \token{stddev}, \token{lowerBound}, and \token{upperBound}. These arguments are then used as the values of the \token{var} attributes of the corresponding \UncertValue children of the \NormalDistribution. An example use in an \InitialAssignment might look like:
-
-\begin{example}
-...
- <initialAssignment symbol="y">
- <math xmlns="http://www.w3.org/1998/Math/MathML">
- <apply>
- <ci> normal_trunc </ci>
- <ci> z </ci>
- <cn type="integer"> 10 </cn>
- <apply>
- <minus/>
- <ci> z </ci>
- <cn type="integer"> 2 </cn>
- </apply>
- <apply>
- <plus/>
- <ci> z </ci>
- <cn type="integer"> 2 </cn>
- </apply>
- </apply>
- </math>
- </initialAssignment>
-...
-\end{example}
-
-This use would apply a draw from a normal distribution with mean $z$, standard deviation $10$, lower bound $z-2$ and upper bound $z+2$ (inclusive) to the SBML element \val{y}.
-
-
-\subsubsection{Defining a 'die roll' PMF with a \CategoricalDistribution}
-In the following example, a \FunctionDefinition is extended to define a draw from a \CategoricalDistribution PMF:
-
%\clearpage
-\begin{example}
-...
- <functionDefinition id="die_roll">
- <distrib:drawFromDistribution>
- <distrib:categoricalDistribution>
- <distrib:listOfCategories>
- <distrib:category>
- <distrib:probability distrib:value="0.25"/>
- <distrib:value distrib:value="1"/>
- </distrib:category>
- <distrib:category>
- <distrib:probability distrib:value="0.25"/>
- <distrib:value distrib:value="2"/>
- </distrib:category>
- <distrib:category>
- <distrib:probability distrib:value="0.25"/>
- <distrib:value distrib:value="3"/>
- </distrib:category>
- <distrib:category>
- <distrib:value distrib:value="4"/>
- </distrib:category>
- </distrib:listOfCategories>
- </distrib:categoricalDistribution>
- </distrib:drawFromDistribution>
- </functionDefinition>
-...
-\end{example}
+%\begin{example}
+%...
+% <functionDefinition id="die_roll">
+% <distrib:drawFromDistribution>
+% <distrib:categoricalDistribution>
+% <distrib:listOfCategories>
+% <distrib:category>
+% <distrib:probability distrib:value="0.25"/>
+% <distrib:value distrib:value="1"/>
+% </distrib:category>
+% <distrib:category>
+% <distrib:probability distrib:value="0.25"/>
+% <distrib:value distrib:value="2"/>
+% </distrib:category>
+% <distrib:category>
+% <distrib:probability distrib:value="0.25"/>
+% <distrib:value distrib:value="3"/>
+% </distrib:category>
+% <distrib:category>
+% <distrib:value distrib:value="4"/>
+% </distrib:category>
+% </distrib:listOfCategories>
+% </distrib:categoricalDistribution>
+% </distrib:drawFromDistribution>
+% </functionDefinition>
+%...
+%\end{example}
-No inputs are provided. Three of the four \Category children of the \CategoricalDistribution all have equal values for their \token{probability} children, with the fourth not having its probability set, meaning that it has a probability such that the sum of all the probabilities among all categories is 1.0. Each child \Category is therefore equally likely to be chosen, resulting in this function returning \val{1}, \val{2}, \val{3}, or \val{4}, each with equal probability.
+%No inputs are provided. Three of the four \Category children of the \CategoricalDistribution all have equal values for their \token{probability} children, with the fourth not having its probability set, meaning that it has a probability such that the sum of all the probabilities among all categories is 1.0. Each child \Category is therefore equally likely to be chosen, resulting in this function returning \val{1}, \val{2}, \val{3}, or \val{4}, each with equal probability.
-In a modeling context where it is not a die being rolled, but different patients which we are sampling, the following function definition uses the same structure:
+%In a modeling context where it is not a die being rolled, but different patients which we are sampling, the following function definition uses the same structure:
-\begin{example}
-...
- <functionDefinition id="pick_patient">
- <distrib:drawFromDistribution>
- <distrib:categoricalDistribution>
- <distrib:listOfCategories>
- <distrib:category id="patient1">
- <distrib:probability distrib:value="0.25"/>
- <distrib:value distrib:value="1.21"/>
- </distrib:category>
- <distrib:category id="patient2">
- <distrib:probability distrib:value="0.25"/>
- <distrib:value distrib:value="2.24"/>
- </distrib:category>
- <distrib:category id="patient3">
- <distrib:probability distrib:value="0.25"/>
- <distrib:value distrib:value="-0.6"/>
- </distrib:category>
- <distrib:category id="patient4">
- <distrib:value distrib:value="1.82"/>
- </distrib:category>
- </distrib:listOfCategories>
- </distrib:categoricalDistribution>
- </distrib:drawFromDistribution>
- </functionDefinition>
-...
-\end{example}
+%\begin{example}
+%...
+% <functionDefinition id="pick_patient">
+% <distrib:drawFromDistribution>
+% <distrib:categoricalDistribution>
+% <distrib:listOfCategories>
+% <distrib:category id="patient1">
+% <distrib:probability distrib:value="0.25"/>
+% <distrib:value distrib:value="1.21"/>
+% </distrib:category>
+% <distrib:category id="patient2">
+% <distrib:probability distrib:value="0.25"/>
+% <distrib:value distrib:value="2.24"/>
+% </distrib:category>
+% <distrib:category id="patient3">
+% <distrib:probability distrib:value="0.25"/>
+% <distrib:value distrib:value="-0.6"/>
+% </distrib:category>
+% <distrib:category id="patient4">
+% <distrib:value distrib:value="1.82"/>
+% </distrib:category>
+% </distrib:listOfCategories>
+% </distrib:categoricalDistribution>
+% </distrib:drawFromDistribution>
+% </functionDefinition>
+%...
+%\end{example}
-Here, we have four patients, each of which had a different value. When sampled (such as in an initial assignment), one would be chosen at random to populate a value for the simulation. In a more complicated context where several different values were sampled from a single patient, the 'Arrays' package would need to be used, so that all the values from a single patient could be returned as a group, and then assigned to their appropriate targets. In that case, various arrays could be set up with the first value in all arrays corresponding to the first patient, the second value with the second patient, etc. A \DrawFromDistribution could then be created to return a patient index at random, and that index used to assign values in the simulation.
+%Here, we have four patients, each of which had a different value. When sampled (such as in an initial assignment), one would be chosen at random to populate a value for the simulation. In a more complicated context where several different values were sampled from a single patient, the 'Arrays' package would need to be used, so that all the values from a single patient could be returned as a group, and then assigned to their appropriate targets. In that case, various arrays could be set up with the first value in all arrays corresponding to the first patient, the second value with the second patient, etc. A \DrawFromDistribution could then be created to return a patient index at random, and that index used to assign values in the simulation.
-\subsubsection{Defining an external distribution}
+%\subsubsection{Defining an external distribution}
-In the following example, a \FunctionDefinition is extended to define a draw from an externally-defined distribution (in this case, an alternative parameterization of the \ExponentialDistribution):
+%In the following example, a \FunctionDefinition is extended to define a draw from an externally-defined distribution (in this case, an alternative parameterization of the \ExponentialDistribution):
-\begin{example}
-...
- <functionDefinition id="Exponential2">
- <distrib:drawFromDistribution>
- <distrib:listOfDistribInputs>
- <distrib:distribInput id="beta" distrib:index="0"/>
- </distrib:listOfDistribInputs>
- <distrib:externalDistribution name="Exponential 2"
- distrib:definitionURL="http://www.probonto.org/ontology#PROB_k0000353">
- <distrib:listOfExternalParameters>
- <distrib:externalParameter name="Beta" distrib:var="beta"
- distrib:definitionURL="http://www.probonto.org/ontology#PROB_k0000362"/>
- </distrib:listOfExternalParameters>
- </distrib:externalDistribution>
- </distrib:drawFromDistribution>
- </functionDefinition>
-...
-\end{example}
+%\begin{example}
+%...
+% <functionDefinition id="Exponential2">
+% <distrib:drawFromDistribution>
+% <distrib:listOfDistribInputs>
+% <distrib:distribInput id="beta" distrib:index="0"/>
+% </distrib:listOfDistribInputs>
+% <distrib:externalDistribution name="Exponential 2"
+% distrib:definitionURL="http://www.probonto.org/ontology#PROB_k0000353">
+% <distrib:listOfExternalParameters>
+% <distrib:externalParameter name="Beta" distrib:var="beta"
+% distrib:definitionURL="http://www.probonto.org/ontology#PROB_k0000362"/>
+% </distrib:listOfExternalParameters>
+% </distrib:externalDistribution>
+% </distrib:drawFromDistribution>
+% </functionDefinition>
+%...
+%\end{example}
-As defined in the ProbOnto ontology, this parameterization of the exponential distribution takes the form $1/{\beta e^{-x/\beta}}$ instead of the form $\lambda e^{-x\lambda}$, used by the \ExponentialDistribution.
+%As defined in the ProbOnto ontology, this parameterization of the exponential distribution takes the form $1/{\beta e^{-x/\beta}}$ instead of the form $\lambda e^{-x\lambda}$, used by the \ExponentialDistribution.
@@ -1217,51 +1181,51 @@
%In this example, the function 'pickone' is defined, with four arguments, \val{A}, \val{B}, \val{C}, and \val{D}. When called, each argument has an equal chance of being chosen as the return value. The parameter 'x' is initialized by calling this function with the arguments 0.3, 5.2, -4, and 8.77, each of which has an equally likely chance of being chosen.
-\subsection{Equivalence with Fallback Function}
-\label{sec:fallbackfunc}
+%\subsection{Equivalence with Fallback Function}
+%\label{sec:fallbackfunc}
-The \mathml definition directly contained by the
-\class{functionDefinition} is not used, but is required by \threeone. (It is optional in \threetwo.) To ensure the continued validity of the model, the following rules must be followed:
+%The \mathml definition directly contained by the
+%\class{functionDefinition} is not used, but is required by \threeone. (It is optional in \threetwo.) To ensure the continued validity of the model, the following rules must be followed:
-\begin{itemize}
-\item The lambda function should have the same number of arguments as
- its equivalent distribution (defined by \distribshort).
-\item Each argument should match the type of the equivalent argument
- in the external function.
-\item The lambda function should have the same return type as the
- \emph{sampled} distribution. For example, if a predefined PDF when
- sampled returns a scalar value, the dummy function should also do so.
-\end{itemize}
+%\begin{itemize}
+%\item The lambda function should have the same number of arguments as
+% its equivalent distribution (defined by \distribshort).
+%\item Each argument should match the type of the equivalent argument
+% in the external function.
+%\item The lambda function should have the same return type as the
+% \emph{sampled} distribution. For example, if a predefined PDF when
+% sampled returns a scalar value, the dummy function should also do so.
+%\end{itemize}
-Clearly, these rules can only be enforced by a \distribshort-aware validator.
+%Clearly, these rules can only be enforced by a \distribshort-aware validator.
-In the following example, the fallback function is coded to simply return \val{mean}, the first argument of the function. Note that the arguments have been given different local ids (\val{mean} and \val{s} instead of \val{avg} and \val{sdev}); their equivalence is based on order, not string matching.
+%In the following example, the fallback function is coded to simply return \val{mean}, the first argument of the function. Note that the arguments have been given different local ids (\val{mean} and \val{s} instead of \val{avg} and \val{sdev}); their equivalence is based on order, not string matching.
-\begin{example}
- <functionDefinition id="normal">
- <math xmlns="http://www.w3.org/1998/Math/MathML">
- <lambda>
- <bvar>
- <ci> mean </ci>
- </bvar>
- <bvar>
- <ci> sdev </ci>
- </bvar>
- <ci> mean </ci>
- </lambda>
- </math>
- <distrib:drawFromDistribution>
- <distrib:listOfDistribInputs>
- <distrib:distribInput distrib:id="mean" distrib:index="0"/>
- <distrib:distribInput distrib:id="s" distrib:index="1"/>
- </distrib:listOfDistribInputs>
- <distrib:normalDistribution>
- <distrib:mean distrib:var="mean"/>
- <distrib:stddev distrib:var="s"/>
- </distrib:normalDistribution>
- </distrib:drawFromDistribution>
- </functionDefinition>
-\end{example}
+%\begin{example}
+% <functionDefinition id="normal">
+% <math xmlns="http://www.w3.org/1998/Math/MathML">
+% <lambda>
+% <bvar>
+% <ci> mean </ci>
+% </bvar>
+% <bvar>
+% <ci> sdev </ci>
+% </bvar>
+% <ci> mean </ci>
+% </lambda>
+% </math>
+% <distrib:drawFromDistribution>
+% <distrib:listOfDistribInputs>
+% <distrib:distribInput distrib:id="mean" distrib:index="0"/>
+% <distrib:distribInput distrib:id="s" distrib:index="1"/>
+% </distrib:listOfDistribInputs>
+% <distrib:normalDistribution>
+% <distrib:mean distrib:var="mean"/>
+% <distrib:stddev distrib:var="s"/>
+% </distrib:normalDistribution>
+% </distrib:drawFromDistribution>
+% </functionDefinition>
+%\end{example}
\begin{figure}[bh]
\includegraphics{figs/extended-sbase.pdf}
@@ -1273,9 +1237,9 @@
\label{sec:extended-sbase-class}
\label{extended-sbase-class}
-As can be seen in \fig{fig:extended-sbase-uml}, the SBML base class \SBase is extended to include an optional \Uncertainty child, which in turn contains an optional \Distribution child, and an optional \UncertStatistics child, either or both of which may be used to include information about the uncertainty of the parent element. In \sbmlthreecore, one should only extend those \SBase elements with mathematical meaning (so, \Compartment, \Parameter, \Reaction, \Species, and \SpeciesReference), or those \SBase elements with \Math children (so, \Constraint, \Delay, \EventAssignment, \FunctionDefinition, \InitialAssignment, \KineticLaw, \Priority, \Rule, and \Trigger). These are added here to \SBase instead of to each of these the various SBML elements so that other packages inherit the ability to extend their own elements in the same fashion: for example, the \FluxBound class from the Flux Balance Constraints package has mathematical meaning, and could be given information about the distribution or set of samples from which it was drawn. Similarly, the \FunctionTerm class from the Qualitative Models package has a \Math child, and could be similarly extended.
+As can be seen in \fig{fig:extended-sbase-uml}, the SBML base class \SBase is extended to include an optional \Uncertainty child, which in turn contains an optional \Distribution child, and an optional \UncertStatistics child, either or both of which may be used to include information about the uncertainty of the parent element. In \sbmlthreecore, one should only extend those \SBase elements with mathematical meaning (\Compartment, \Parameter, \Reaction, \Species, and \SpeciesReference), or those \SBase elements with \Math children (\Constraint, \Delay, \EventAssignment, \FunctionDefinition, \InitialAssignment, \KineticLaw, \Priority, \Rule, and \Trigger). \changed{The \Uncertainty child is added to} \SBase instead of to each SBML element so that other packages inherit the ability to extend their own elements in the same fashion: for example, the \FluxBound class from the Flux Balance Constraints package has mathematical meaning, and could be given \changed{an \Uncertainty child containing information} about the distribution or set of samples from which it was drawn. Similarly, the \FunctionTerm class from the Qualitative Models package has a \Math child, and could be similarly extended.
-A few SBML elements can interact in interesting ways that can confuse the semantics here. A \Reaction element and its \KineticLaw child, for example, both reference the exact same mathematics, so only one should be extended with a child \Distribution and/or \UncertStatistics. Similarly, if an \InitialAssignment assigns to a constant element (\Parameter, \Species, etc.), the uncertainty for both should be the same, or only one should be provided.
+A few SBML elements can interact in interesting ways that can confuse the semantics here. A \Reaction element and its \KineticLaw child, for example, both reference the exact same mathematics, so only one should be extended with a child \Uncertainty. Similarly, if an \InitialAssignment assigns to a constant element (\Parameter, \Species, etc.), the uncertainty for both should be the same, or only one should be provided.
Other elements not listed above should probably not be given an \Uncertainty child, as it would normally not make sense to talk about the uncertainty of something that doesn't have a corresponding mathematical meaning. However, because packages or annotations can theoretically give new meaning (including mathematical meaning) to elements that previously did not have them, this is not a requirement.
@@ -1286,10 +1250,21 @@
\label{Uncertainty-class}
\label{uncertainty-class}
-The \Uncertainty class has two optional children: an \UncertStatistics child and a \Distribution child. Either or both may be used, depending on the information about the parent that the modeler wishes to store in this object. If neither is present, this means that no information about the uncertainty of the object is provided by this package. The \Uncertainty may be annotated to provide more information about why this is.
+The \Uncertainty class has two optional children: an \UncertStatistics child and a \Distribution child. \changed{Either or both may be used to store information about the uncertainty of an element, e.g. the distribution it was drawn from or its standard deviation.} The \Uncertainty may be annotated to provide \changed{additional information}.
-Note that the described uncertainty for elements that change in value over time apply only to the element's uncertainty at a snapshot in time, and not the uncertainty in how it changes in time. For typical simulations, this means the element's initial condition. Note too that the description of the uncertainty of a \Species should describe the uncertainty of its \token{amount}, not the uncertainty of its \token{concentration}. The 'primary' mathematical meaning of a \Species in SBML is always the amount; the concentration may be used, but is considered to be derived.
+Note that for \changed{elements that change in value over time, the described uncertainty applies only to the element's initial state, and not to how it changes in time. For typical simulations, this means the element's initial assignment.}
+\begin{blockChanged}
+\paragraph{The units of uncertainty values}
+
+The units of uncertainty statistics and distributions are generally either dimensionless or the same as the units of the parent, according to the formula that defines the value. A \token{mean} and a \token{standardDeviation}, for example, are always the same units as the parent, while a \token{coefficientOfVariation} is dimensionless.
+
+\paragraph{The uncertainty of a \Species}
+
+A \Species is a unique SBML construct in that its value is either an amount or a concentration, depending on the value of its \token{hasOnlySubstanceUnits} attribute (\val{true} for amount, or \val{false} for concentration). The value of its uncertainty tracks with this: if the value of the parent \Species \token{hasOnlySubstanceUnits} is \val{true}, the uncertainty is in terms of amounts, and if \val{false}, the uncertainty is in terms of concentration. It is assumed that if the uncertainty is expressed in terms of concentration, that uncertainty is \emph{not affected} by any uncertainty about the size of the species' compartment. That is, we assume that if we measure a species concentration as $5 \pm 0.2$ in a compartment volume of 1, we would have measured the same concentration variability had the compartment volume been 10 or 100. Therefore, to convert the uncertainty of a \Species concentration to the uncertainty of a \Species amount, we multiply by the size of the compartment, and ignore that compartment's uncertainty. Thus, if the above example species concentration appears in a compartment of size $2$, the species amount would be $10 \pm 0.4$.
+
+\end{blockChanged}
+
\subsubsection{Attributes inherited from \SBase}
An \Uncertainty always inherits the optional \token{metaid} and \token{sboTerm} attributes, and inherits optional \token{id} and \token{name} attributes as described in \sec{sec:idname}. The \token{id} of an \Uncertainty has no mathematical meaning.
@@ -1305,12 +1280,21 @@
\label{UncertStatistics-class}
\label{uncertstatistics-class}
-The \UncertStatistics class is a collection of zero or more statistical measures related to the uncertainty of the parent SBML element. It contains three types of children: \UncertValue children and \UncertStatisticSpan children, distinguished from each other by the element name of that child (listed below), and a \ListOfExternalParameters child, which contains zero or more \ExternalParameter objects.
+The \UncertStatistics class is a collection of zero or more statistical measures related to the uncertainty of the parent SBML element. It contains three types of children: \changed{\UncertValue children, \UncertStatisticSpan children, and a \ListOfExternalParameters child, which contains zero or more \ExternalParameter objects. There are nine possible \UncertValue children, and six possible \UncertStatisticSpan children, defined below.}
-The possible \UncertValue children are listed below. Each is defined by its element name; the mean would be defined as \token{<mean>}, the standard deviation as \token{<standardDeviation>}, etc.
-All the definitions below are from an archived copy of the definitions at \url{http://uncertml.org/}.
+\subsubsection{Attributes inherited from \SBase}
+An \UncertStatistics always inherits the optional \token{metaid} and \token{sboTerm} attributes, and inherits optional \token{id} and \token{name} attributes as described in \sec{sec:idname}. The \token{id} of an \UncertStatistics has no mathematical meaning.
+
+
+
+\subsection{The \UncertValue children of \UncertStatistics}
+
+\changed{An \UncertValue is defined in \sec{UncertValue-class}. The possible \UncertValue \changed{types} are listed below. Each is defined by its element name; the mean would be defined as \token{<mean>}, the standard deviation as \token{<standardDeviation>}, etc.}
+
+All the definitions below are from an archived copy of the definitions at \url{http://uncertml.org/}\changed{, with the exception of \token{standardError}, which was added here.}
+
\begin{itemize}
\item \token{coefficientOfVariation}: For a random variable with mean $ \mu $ and strictly positive standard deviation $ \sigma $, the coefficient of variation is defined as the ratio $ \frac{\sigma}{\mid\mu\mid} $. One benefit of using the coefficient of variation rather than the standard deviation is that it is unitless.
@@ -1325,15 +1309,28 @@
\item \token{skewness}: The skewness of a random variable is a measure of how asymmetric the corresponding probability distribution is. The skewness is defined as $ \frac{\mu_3}{\sigma^3} $ where $ \mu_3 $ is the 3rd centred moment of the distribution and $ \sigma $ is its standard deviation.
-\item \token{standardDeviation}: The standard deviation of a distribution or population is the square root of its variance and is given by $ \sigma = \sqrt{E[(X - \mu)^2]} $ where $ \mu = E[X] $. The population standard deviation is given by $ \sigma = \sqrt{\frac{1}{n} \sum_{i=1}^n\left(x_i - \bar{x} \right)^2} $ where $ \bar{x} = \frac{1}{n}\cdot \sum_{i=1}^n{x_i} $, $ x_i $ represents with $ i $th observation of the quantity $ x $ in the population of size $ n $. The standard deviation is a widely used measure of the variability or dispersion since it is reported in the natural units of the quantity being considered. Note that if a finite sample of a population has been used then the sample standard deviation is the appropriate unbiased estimator to use.
+\item \token{standardDeviation}: The standard deviation of a distribution or population is the square root of its variance and is given by $ \sigma = \sqrt{E[(X - \mu)^2]} $ where $ \mu = E[X] $. The population standard deviation is given by $ \sigma = \sqrt{\frac{1}{n} \sum_{i=1}^n\left(x_i - \bar{x} \right)^2} $ where $ \bar{x} = \frac{1}{n}\cdot \sum_{i=1}^n{x_i} $, $ x_i $ represents with $ i $th observation of the quantity $ x $ in the population of size $ n $. The standard deviation is a widely used measure of the variability or dispersion since it is reported in the natural units of the quantity being considered. Note that if a finite sample of a population has been used then the sample standard deviation is the appropriate unbiased estimator to use.
+\item \changed{\token{standardError}: The standard error is the standard deviation of estimates of a population value. If that population value is a mean, this statistic is called the standard error of the mean. It is calculated as the standard deviation of a sample divided by the square root of the number of the sample size. As the sample size increases, the sample size draws closer to the population size, and the standard error approaches zero. $ \sigma_{\bar{x}} = \frac{\sigma}{\sqrt{n}} $}
+
\item \token{variance}: The variance of a random quantity (or distribution) is the average value of the square of the deviation of that variable from its mean, given by $ \sigma^2 = Var[X] = E[(X - \mu)^2] $ where $ \mu = E[X] $. The complete population variance is given by $ \sigma^2 = \frac{1}{n} \sum_{i=1}^n\left(x_i - \bar{x} \right)^2 $ where $ \bar{x} = \frac{1}{n}\cdot \sum_{i=1}^n{x_i} $, $ x_i $ represents with $ i $th observation of the quantity $ x $ in the population of size $ n $. This is the estimator of the population variance and should be replaced by the sample variance when using samples of finite size.
\end{itemize}
-The possible \UncertStatisticSpan children are similar, defining a bounded span of values instead of a single value:
+\subsection{The \class{UncertStatisticSpan} class}
+\label{UncertStatisticSpan-class}
+\label{uncertstatisticspan-class}
+The \UncertStatisticSpan class defines a span of values that define an uncertainty statistic such as confidence interval or range. It has four optional attributes, \token{varLower} and \token{varUpper}, of type \primtype{SIdRef}, and \token{valueLower} and \token{valueUpper}, of type double. Exactly one of the attributes \token{varLower} and \token{valueLower} may be defined, and exactly one of the attributes \token{varUpper} and \token{valueUpper} may be defined. If no attributes are defined, the parameters of the span are undefined. If only one attribute is defined (one of the upper or lower attributes), that aspect of the span is defined, and the other end is undefined. The span is fully defined if two attributes (one lower and one upper) is defined.
+
+The value of the lower attribute (whichever is defined) must be lesser or equal to the value of the upper attribute (whichever is defined), at the initial conditions of the model. The \UncertStatistics element cannot affect the core mathematics of an SBML model, but if it is used in a mathematical context during simulation of the model, this restriction on the attribute values must be maintained, or the \UncertStatisticSpan object as a whole will be undefined.
+
+\changed{Like the \token{units} attribute on an \UncertValue, the \token{units} attribute is provided if either the upper or lower end of the span is defined by value, instead of by reference (i.e. if \token{valueUpper} and/or \token{valueLower} is defined). The units on both the upper and lower ends of the span must match each other, if defined. The units for span ends defined by reference may be obtained from the referenced SBML element.}
+
+
+The possible \UncertStatisticSpan \changed{types are listed below, each} defining a bounded span of values instead of a single value. The definitions were again taken from an archived copy of \url{http://uncertml.org/}:
+
\begin{itemize}
\item {\token{confidenceInterval}: For a univariate random variable $ x $, a confidence interval is a range $ [a,b] $, $ a<b $, so that $ x $ lies between $ a $ and $ b $ with given probability. For example, a 95\% confidence interval is a range in which $ x $ falls 95\% of the time (or with probability 0.95). Confidence intervals provide intuitive summaries of the statistics of the variable $ x $.
@@ -1355,10 +1352,19 @@
\end{itemize}
-Any number of \ExternalParameter children may be included as well, each defined by its \token{definitionURL}.
-The following statistics could be added to \UncertStatistics fairly straightforwardly, but are not in the current version, since each is defined not by a single value, but by at least two, and are not defined by a range. If any of the following are desired, they can be added to a subsequent version. Note that is is possible to encode them in the current version though the use of the \ExternalParameter construct, though no ontology is known currently that defines these elements (ProbOnto is solely for distributions, and does not encompass statistical measures. UncertML did include them, and though it is now defunct, the old URLs could still be used if desired.)
+\subsubsection{Attributes inherited from \SBase}
+An \UncertStatisticSpan always inherits the optional \token{metaid} and \token{sboTerm} attributes, and inherits optional \token{id} and \token{name} attributes as described in \sec{sec:idname}. The \token{id} of an \UncertStatisticSpan has no mathematical meaning.
+
+
+
+\subsection{The \ExternalParameter children of \UncertStatistics}
+
+Any number of \ExternalParameter children (defined in \sec{ExternalParameter-class}) may be included, each defined by its \token{definitionURL}.
+
+\changed{As examples, the following statistics are not defined by a single value nor by a range, and would therefore be good candidates for encoding with an \ExternalParameter. These terms were included in the now-defunct UncertML (and the definitions were again taken from an archived copy of \url{http://uncertml.org/}), and may also be findable in other ontologies such as STATO (which has a searchable database at \url{https://www.ebi.ac.uk/ols/ontologies/stato}):}
+
\begin{itemize}
\item \token{centredMoment}: For a given positive natural number $ k $, the $ k\textsuperscript{th} $ central moment of a random variable $ x $ is defined as $ \mu_k = E[(x - E[x])^k] $. That is, it is the expected value of the deviation from the mean to the power $ k $. In particular, $ \mu_0 = 1 $, $ \mu_1 = 0 $ and $ \mu_2 $ is the variance of $ x $.
@@ -1380,29 +1386,9 @@
\item \token{quartile}: The quartiles are the 4-quantiles, that is the 4 values of $ x $ below which lies a proportion 0.25, 0.50, 0.75 and 1 of the probability. One can also think of them as the 4 values of $ x $ which split the domain into 4 regions of equal probability.
\end{itemize}
-\subsubsection{Attributes inherited from \SBase}
-An \UncertStatistics always inherits the optional \token{metaid} and \token{sboTerm} attributes, and inherits optional \token{id} and \token{name} attributes as described in \sec{sec:idname}. The \token{id} of an \UncertStatistics has no mathematical meaning.
-\subsection{The \class{UncertStatisticSpan} class}
-\label{UncertStatisticSpan-class}
-\label{uncertstatisticspan-class}
-
-The \UncertStatisticSpan class defines a span of values that define an uncertainty statistic such as confidence interval or range. It has four optional attributes, \token{varLower} and \token{varUpper}, of type \primtype{SIdRef}, and \token{valueLower} and \token{valueUpper}, of type double. Exactly one of the attributes \token{varLower} and \token{vaueLower} may be defined, and exactly one of the attributes \token{varUpper} and \token{valueUpper} may be defined. If no attributes are defined, the parameters of the span are undefined. If only one attribute is defined (one of the upper or lower attributes), that aspect of the span is defined, and the other end is undefined. The span is fully defined if two attributes (one lower and one upper) is defined.
-
-The value of the lower attribute (whichever is defined) must be lesser or equal to the value of the upper attribute (whichever is defined), at the initial conditions of the model. The \UncertStatistics element cannot affect the core mathematics of an SBML model, but if it is used in a mathematical context during simulation of the model, this restriction on the attribute values must be maintained, or the \UncertStatisticSpan object as a whole will be undefined.
-
-\subsubsection{Attributes inherited from \SBase}
-
-An \UncertStatisticSpan always inherits the optional \token{metaid} and \token{sboTerm} attributes, and inherits optional \token{id} and \token{name} attributes as described in \sec{sec:idname}. The \token{id} of an \UncertStatisticSpan has no mathematical meaning.
-
-
-%The optional \token{id} attribute on the \Uncertainty object class serves to provide a way to identify the uncertainty. The attribute takes a value of type \primtype{SId}. Note that the identifier of a the uncertainty carries no mathematical interpretation and cannot be used in mathematical formulas in a model. \Uncertainty also has an optional \token{name} attribute, of type \primtype{string}. The \token{name} attribute may be used in the same manner as other \token{name} attributes on \sbmlthreecore objects; please see Section~3.3.2 of the \sbmlthreecore specification for more information.
-
-
-
-
\subsection{Examples using extended \SBase}
\label{extended-sbase-examples}
@@ -1549,14 +1535,14 @@
\end{longtabu}
%\clearpage
-As an example, here is a complete (if small) model that uses both the above 'custom annotation' scheme and the \distrib extensions of a \FunctionDefinition:
+\begin{blockChanged}
+As an example, here is a complete (if small) model that uses the above 'custom annotation' scheme:
\begin{example}
<?xml version="1.0" encoding="UTF-8"?>
<sbml xmlns="http://www.sbml.org/sbml/level3/version1/core"
- xmlns:distrib="http://www.sbml.org/sbml/level3/version1/distrib/version1"
- level="3" version="1" distrib:required="true">
- <model id="__main" name="__main">
+ level="3" version="1">
+ <model>
<listOfFunctionDefinitions>
<functionDefinition id="normal">
<annotation>
@@ -1569,21 +1555,11 @@
<ci> mean </ci>
</bvar>
<bvar>
- <ci> stddev </ci>
+ <ci> stdev </ci>
</bvar>
- <ci> mean </ci>
+ <notanumber/>
</lambda>
</math>
- <distrib:drawFromDistribution>
- <distrib:listOfDistribInputs>
- <distrib:distribInput distrib:id="mean" distrib:index="0"/>
- <distrib:distribInput distrib:id="stddev" distrib:index="1"/>
- </distrib:listOfDistribInputs>
- <distrib:normalDistribution>
- <distrib:mean distrib:var="mean"/>
- <distrib:stddev distrib:var="stddev"/>
- </distrib:normalDistribution>
- </distrib:drawFromDistribution>
</functionDefinition>
</listOfFunctionDefinitions>
<listOfParameters>
@@ -1605,7 +1581,35 @@
\end{example}
+And here is the same model, using the 'csymbol' defined in \distribshort:
+\begin{example}
+<?xml version="1.0" encoding="UTF-8"?>
+<sbml xmlns="http://www.sbml.org/sbml/level3/version2/core"
+ xmlns:distrib="http://www.sbml.org/sbml/level3/version2/distrib/version1"
+ level="3" version="2" distrib:required="true">
+ <model>
+ <listOfParameters>
+ <parameter id="x" constant="true"/>
+ </listOfParameters>
+ <listOfInitialAssignments>
+ <initialAssignment symbol="x">
+ <math xmlns="http://www.w3.org/1998/Math/MathML">
+ <apply>
+ <csymbol encoding="text" definitionURL="http://www.sbml.org/sbml/symbols/distrib/normal"> normal </csymbol>
+ <cn type="integer"> 3 </cn>
+ <cn> 0.2 </cn>
+ </apply>
+ </math>
+ </initialAssignment>
+ </listOfInitialAssignments>
+ </model>
+</sbml>
+\end{example}
+\end{blockChanged}
+
+
+
\subsection{The \arrays package}
This package is dependent on no other package, but might rely on the \arrays package
to provide vector and matrix structures if those are desired/us...
[truncated message content] |
|
From: <luc...@us...> - 2019-01-14 18:45:07
|
Revision: 25770
http://sourceforge.net/p/sbml/code/25770
Author: luciansmith
Date: 2019-01-14 18:45:00 +0000 (Mon, 14 Jan 2019)
Log Message:
-----------
Remove old 'changed' bits; begin to incorporate Matthias's proposed changes.
Modified Paths:
--------------
trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex
Modified: trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex
===================================================================
--- trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex 2018-12-29 17:15:44 UTC (rev 25769)
+++ trunk/specifications/sbml-level-3/version-1/distrib/sbml-level-3-distrib-package-proposal.tex 2019-01-14 18:45:00 UTC (rev 25770)
@@ -158,20 +158,16 @@
\subsection{What is it?}
-The \distrib package (also affectionately known as \distribshort for
-short) provides an extension to SBML Level 3 that enables a model to encode and sample from
-both discrete and continuous probability distributions, and provide
+The \distrib package (\changed{also known} as \distribshort) provides an extension to SBML Level 3 that enables a model to encode and sample from
+both discrete and continuous probability distributions, and provides
the ability to annotate elements with information about the distribution their
values were drawn from.
Applications of the package include for instance descriptions of
-population based models: an important subset of which are
+population based models, an important subset of which are
pharmacokinetic/pharmacodynamic (PK/PD) models\footnote{for more
information see: \url{http://www.pharmpk.com/}.}, which are used to
model the action of drugs.
-Note that originally the package was called Distributions and Ranges,
-but Ranges are no longer in the scope, hence the name change.
-
\subsection{Scope}
The \distrib package adds support to SBML for sampling from a
@@ -180,8 +176,8 @@
\begin{itemize}
\item Sampling from a continuous distribution.
\item Sampling from a discrete distribution.
-\item Sampling from user-defined discrete probability density function.
-\item The specification of descriptive statistics (mean, standard
+\item Sampling from a user-defined discrete probability density function.
+\item Specification of descriptive statistics (mean, standard
deviation, standard error, etc.).
\end{itemize}
@@ -189,6 +185,7 @@
package but are now \textbf{out of scope}:
\begin{itemize}
+\item \changed{Including definitions of ranges (the original name of the package was 'Distributions and Ranges').}
\item Sampling from user-defined probability density function.
\item Stochastic differential equations.
\item Other functions used to characterise a probability distribution,
@@ -213,7 +210,7 @@
discussion list\footnote{\mailto{sbm...@li...}}.
Once the proposal is finalised this will be the first step towards the
-formal adoption of the \distribshort as a package in SBML Level
+formal adoption of \distribshort as a package in SBML Level
3. After this, two implementations based on this proposal are required
and then the SBML editors must agree that the implementations and specification are complete. The proposal
will then provide the basis for a future package specification
@@ -223,7 +220,7 @@
\subsection{Conventions used in this document}
-As we are early in the package proposal process there will be some
+\changed{There are} some
parts of this proposal where there is no clear consensus on the
correct solution or only recent agreement or agreement by a group
which may not be representative of the SBML community as a
@@ -455,11 +452,9 @@
In early 2017, it became clear that UncertML was no longer being worked on; the web page had lapsed, and its authors had moved on to other things. At the same time, the ProbOnto ontology (\citealt{swat:2016}; \url{http://probonto.org/}) was developed that included all the distributions from UncertML as well as a huge number of other distributions. On the mailing list, it was discussed whether to create essentially our own version of UncertML, or to implement a generic 'reference' format that used ProbOnto. The v0.17 draft specification was developed as a compromise 'hybrid' system that did parts of both, so that basic distributions would be hard-coded, but the ability to reference any ProbOnto ontology would also be present. The hope is that with working examples of both approaches, either the hybrid approach will be approved, or if one is preferred, the other approach may be removed. This version of the specification was created for presentation at HARMONY 2017 in Seattle.
-\begin{blockChanged}
\subsubsection{Early 2018 and HARMONY: Oxford}
At HARMONY in Oxford, for the first time since the change from UncertML, a libsbml implementation of the specification was available. This let people experiment with the package, and conclude that a simpler method of defining calls to distributions was desired. It was proposed to define new MathML 'csymbol' definitions for the common distributions. It was unclear whether the other methods for everything would be useful or not; for now, we are leaving them in, and if people develop support for them, they can stay.
-\end{blockChanged}
\section{Proposed syntax and semantics}
@@ -557,7 +552,7 @@
Note that the \distrib package may be used with both \threeone and \threetwo documents, with the only semantic change between the two present in the \DistribBase class. Note that if used with \threeone the corresponding \distrib namespace for \threeone must be used and similarly if \threetwo is being used, the \distrib namespace must be the one for \threetwo.
-In addition, SBML documents using a given package must indicate whether the package may be used to change the mathematical meaning of \sbmlthreecore elements. This is done using the attribute \token{required} on the \token{<sbml>} element in the SBML document. For the \distrib package, the value of this attribute must be \val{true}, as the \DrawFromDistribution element overrides the core definition of a \FunctionDefinition, \changed{and because of the newly-allowed MathML elements}. Note that the value of this attribute must \emph{always} be set to \val{true}, even if the particular model does not contain any \DrawFromDistribution elements \changed{or new MathML elements}.
+In addition, SBML documents using a given package must indicate whether the package may be used to change the mathematical meaning of \sbmlthreecore elements. This is done using the attribute \token{required} on the \token{<sbml>} element in the SBML document. For the \distrib package, the value of this attribute must be \val{true}, as the \DrawFromDistribution element overrides the core definition of a \FunctionDefinition, and because of the newly-allowed MathML elements. Note that the value of this attribute must \emph{always} be set to \val{true}, even if the particular model does not contain any \DrawFromDistribution elements or new MathML elements.
The following fragment illustrates the beginning of a typical SBML model using \threeone and this version of the \distrib package:
@@ -578,7 +573,6 @@
distrib:required="true">
\end{example}
-\begin{blockChanged}
\paragraph{XML Namespace use}
For element names, XML has clear rules about how to declare and use namespaces. In typical SBML documents, the \distrib namespace will be defined as above, and elements will therefore need to be prefixed with \val{distrib:}.
@@ -587,7 +581,6 @@
As is convention for SBML packages, any attribute that appears in a UML diagram in this specification may \emph{either} be defined with no namespace prefix, \emph{or} be defined with the \emph{distrib} namespace as a prefix. (No attributes are defined here as extentions of existing core SBML elements, and thus none of them are required to have the \emph{distrib} namespace as a prefix.)
-\end{blockChanged}
\subsection{Primitive data types}
@@ -636,11 +629,11 @@
Secondly, it provides a mechanism for describing elements with information about their uncertainty. One common use case for this will be to provide the standard deviation for a value. Another may be describing a parameter's distribution, so that a better search can be performed in a parameter scan experiment.
-These purposes are achieved by \changed{allowing new \mathml elements, and by} extending \FunctionDefinition and \SBase, which in turn use the \Distribution and \UncertStatistics classes, modeled after \uncertml. Several distributions and statistics are defined explicitly in this specification, but more can be defined by referencing an external ontology such as ProbOnto through the \ExternalDistribution and \ExternalParameter classes.
+These purposes are achieved by allowing new \mathml elements, and by extending \FunctionDefinition and \SBase, which in turn use the \Distribution and \UncertStatistics classes, modeled after \uncertml. Several distributions and statistics are defined explicitly in this specification, but more can be defined by referencing an external ontology such as ProbOnto through the \ExternalDistribution and \ExternalParameter classes.
-It is hoped that with this approach, modelers may use the \changed{extensions} defined in this specification with a reasonable expectation \changed{that most other} software packages \changed{will also recognize them}. However, if another distribution is required, those distributions may still be encoded \changed{through reference to an external ontology}, even if this makes the model less exchangeable.
+It is hoped that with this approach, modelers may use the extensions defined in this specification with a reasonable expectation that most other software packages will also recognize them. However, if another distribution is required, those distributions may still be encoded through reference to an external ontology, even if this makes the model less exchangeable.
-When a distribution is defined in a \FunctionDefinition \changed{or used in the extended \Math}, it is sampled when it is invoked. \changed{If a particular returned value needs to be used again, that} value must be assigned to a parameter first, such as through the use of an \InitialAssignment or \EventAssignment. When a distribution is defined elsewhere, that information may be used outside of the model, using whatever methodology is appropriate to answer the question being pursued.
+When a distribution is defined in a \FunctionDefinition or used in the extended \Math, it is sampled when it is invoked. If a particular returned value needs to be used again, that value must be assigned to a parameter first, such as through the use of an \InitialAssignment or \EventAssignment. When a distribution is defined elsewhere, that information may be used outside of the model, using whatever methodology is appropriate to answer the question being pursued.
\subsection{The \DistribBase class}
@@ -648,7 +641,7 @@
\label{DistribBase-class}
\label{sec:idname}
-The \DistribBase class is an abstract base class which is the parent class for every class in this \distrib package. \changed{Its purpose is to replicate within the \distrib package what changed between \threeone and \threetwo: the addition of an optional \token{id} and \token{name} attribute to \SBase. By adding these attributes here, \distrib may be used completely exchangeably between Level~1 and Level~2 documents without changing anything.}
+The \DistribBase class is an abstract base class which is the parent class for every class in this \distrib package. Its purpose is to replicate within the \distrib package what changed between \threeone and \threetwo: the addition of an optional \token{id} and \token{name} attribute to \SBase. By adding these attributes here, \distrib may be used completely exchangeably between Level~1 and Level~2 documents without changing anything.
\begin{figure}[bh]
\includegraphics{figs/distribBase.pdf}
@@ -660,7 +653,6 @@
The \token{id} attribute is of type \primtype{SId}, and must be unique among other ids in the \primtype{SId} namespace in the parent \Model, and has no mathematical meaning, unless stated otherwise in the definition of that object. The \token{name} attribute is of type \primtype{string}, and is provided to allow the user to define a human-readable label for the object, and has no uniqueness restrictions.
-\begin{blockChanged}
\subsection{Extended \Math}
To allow quick access to a variety of common functions, the \distrib package allows the use of new types of \token{csymbol} elements anywhere that \Math is used. These \token{csymbol}s are functions, and therefore must be the first child of an \token{apply} element, and their arguments are predefined: you cannot call $normal(mean, variance)$, because the definition of the \token{normal} \token{csymbol} is $normal(mean, stdev)$.
@@ -700,7 +692,6 @@
Many of the distributions take exactly two or four arguments (or exactly one or three arguments). For those functions, the optional last two arguments are 'min' and 'max', for when the draw from the distribution is constrained to be between those two values. For all functions, the 'min' boundary is \emph{inclusive}; that is, a value of \token{min} may be returned by the function (though this may be very unlikely for draws from a continuous distribution). For all continuous distributions, the 'max' boundary is \emph{not inclusive}; that is, a value of \token{max} will never be returned. The continuous distruibutions are \token{normal}, \token{cauchy}, \token{chisquare}, \token{exponential}, \token{gamma}, \token{laplace}, \token{lognormal}, and \token{rayleigh}. For the discrete distributions, the 'max' boundray is \emph{inclusive}: that is, a value of \token{max} may indeed be returned. The discrete distributions are \token{binomial} and \token{poisson}.
-\end{blockChanged}
\subsection{The extended \class{FunctionDefinition} class}
\label{extended-functiondefinition-class}
|