Skip to content

Commit

Permalink
Release 1.1.2 (#41)
Browse files Browse the repository at this point in the history
* Removing duplicate implementations in several package.mo files  (#40)

* removing duplicate implementations in package.mo

* remove duplicate implementations in package.mo

* removing duplicate implementations from package.mo

* remove duplicate implementation from package.mo

* release 1.1.2

* release notes V1.1.2
  • Loading branch information
AtiyahElsheikh committed Jun 30, 2021
1 parent 73e66b7 commit 44d4a9f
Show file tree
Hide file tree
Showing 32 changed files with 26 additions and 7,634 deletions.
3,590 changes: 0 additions & 3,590 deletions BioChem/Examples/package.mo

Large diffs are not rendered by default.

112 changes: 1 addition & 111 deletions BioChem/Math/package.mo
Original file line number Diff line number Diff line change
@@ -1,119 +1,9 @@
within BioChem;

package Math
extends Icons.Library;
function log10 = Modelica.Math.log10 annotation(
Icon(coordinateSystem(extent = {{-100, 100}, {100, -100}}, preserveAspectRatio = true, grid = {10, 10})),
Diagram(coordinateSystem(extent = {{-100, 100}, {100, -100}}, preserveAspectRatio = true, grid = {10, 10})));
extends BioChem.Icons.Library;

function factorial "factorial function, product of all positive integers less than or equal to n"
input Integer n "input value";
output Integer y "output value";
protected
Integer i;
algorithm
y := n;
i := n;
while i > 1 loop
i := i - 1;
y := y * i;
end while;
annotation(
Diagram(coordinateSystem(extent = {{-148.5, 105}, {148.5, -105}}, preserveAspectRatio = true, grid = {10, 10})),
Icon(coordinateSystem(extent = {{-100, 100}, {100, -100}}, preserveAspectRatio = true, grid = {10, 10}), graphics = {Text(fillPattern = FillPattern.Solid, extent = {{-100, -100}, {100, 100}}, textString = "n!", fontName = "Arial")}));
end factorial;

function sec "secant trigonometric function"
input Modelica.Units.SI.Angle alpha "input angle";
output Real y "output value";
algorithm
y := 1 / cos(alpha);
annotation(
Diagram(coordinateSystem(extent = {{-148.5, 105}, {148.5, -105}}, preserveAspectRatio = true, grid = {10, 10})),
Icon(coordinateSystem(extent = {{-100, 100}, {100, -100}}, preserveAspectRatio = true, grid = {10, 10}), graphics = {Text(fillPattern = FillPattern.Solid, extent = {{-100, -100}, {100, 100}}, textString = "sec( )", fontName = "Arial")}));
end sec;

function cot "Cotangent trigonometric function"
input Modelica.Units.SI.Angle alpha "input angle";
output Real y "output value";
algorithm
y := 1 / tan(alpha);
annotation(
Diagram(coordinateSystem(extent = {{-148.5, 105}, {148.5, -105}}, preserveAspectRatio = true, grid = {10, 10})),
Icon(coordinateSystem(extent = {{-100, 100}, {100, -100}}, preserveAspectRatio = true, grid = {10, 10}), graphics = {Text(fillPattern = FillPattern.Solid, extent = {{-100, -100}, {100, 100}}, textString = "cot( )", fontName = "Arial")}));
end cot;

function csc "cosecant trigonometric function"
input Modelica.Units.SI.Angle alpha "input angle";
output Real y "output value";
algorithm
y := 1 / sin(alpha);
annotation(
Diagram(coordinateSystem(extent = {{-148.5, 105}, {148.5, -105}}, preserveAspectRatio = true, grid = {10, 10})),
Icon(coordinateSystem(extent = {{-100, 100}, {100, -100}}, preserveAspectRatio = true, grid = {10, 10}), graphics = {Text(fillPattern = FillPattern.Solid, extent = {{-100, -100}, {100, 100}}, textString = "csc( )", fontName = "Arial")}));
end csc;

function sech "hyperbolic secant trigonometric function"
input Modelica.Units.SI.Angle alpha "input angle";
output Real y "output value";
algorithm
y := 1 / cosh(alpha);
annotation(
Diagram(coordinateSystem(extent = {{-148.5, 105}, {148.5, -105}}, preserveAspectRatio = true, grid = {10, 10})),
Icon(coordinateSystem(extent = {{-100, 100}, {100, -100}}, preserveAspectRatio = true, grid = {10, 10}), graphics = {Text(fillPattern = FillPattern.Solid, extent = {{-100, -100}, {100, 100}}, textString = "sech( )", fontName = "Arial")}));
end sech;

function csch "hyperbolic cosecant trigonometric function"
input Modelica.Units.SI.Angle alpha "input angle";
output Real y "output value";
algorithm
y := 1 / sinh(alpha);
annotation(
Diagram(coordinateSystem(extent = {{-148.5, 105}, {148.5, -105}}, preserveAspectRatio = true, grid = {10, 10})),
Icon(coordinateSystem(extent = {{-100, 100}, {100, -100}}, preserveAspectRatio = true, grid = {10, 10}), graphics = {Text(fillPattern = FillPattern.Solid, extent = {{-100, -100}, {100, 100}}, textString = "csch( )", fontName = "Arial")}));
end csch;

function coth "hyperbolic cotangent trigonometric function"
input Modelica.Units.SI.Angle alpha "input angle";
output Real y "output value";
algorithm
y := 1 / tanh(alpha);
annotation(
Diagram(coordinateSystem(extent = {{-148.5, 105}, {148.5, -105}}, preserveAspectRatio = true, grid = {10, 10})),
Icon(coordinateSystem(extent = {{-100, 100}, {100, -100}}, preserveAspectRatio = true, grid = {10, 10}), graphics = {Text(fillPattern = FillPattern.Solid, extent = {{-100, -100}, {100, 100}}, textString = "coth( )", fontName = "Arial")}));
end coth;

function root
input Real n "degree";
input Real a "value";
output Real y "output value";
algorithm
y := a ^ (1 / n);
annotation(
Diagram(coordinateSystem(extent = {{-148.5, 105}, {148.5, -105}}, preserveAspectRatio = true, grid = {10, 10})),
Icon(coordinateSystem(extent = {{-100, 100}, {100, -100}}, preserveAspectRatio = true, grid = {10, 10}), graphics = {Text(fillPattern = FillPattern.Solid, extent = {{-100, -100}, {100, 100}}, textString = "root", fontName = "Arial")}));
end root;

function piecewise "Piecewise function that corresponds to the SBML piecewice definition"
input Real[:] value "Input values in the form {value1,value2,...,valueN,valueN+1}.";
input Boolean[:] condition "Input conditions in the form {condition1,condition2,...,conditionN}. Not more than one condition is allowed to be true at any given time.";
output Real y "Output value selected from the list of inputs.";
protected
parameter Integer nin = size(condition, 1);
algorithm
y := value[nin + 1];
for i in 1:nin loop
if condition[i] then
y := value[i];
end if;
end for;
annotation(
Diagram(coordinateSystem(extent = {{-148.5, -105.0}, {148.5, 105.0}}, preserveAspectRatio = true, grid = {10, 10})),
Icon(coordinateSystem(extent = {{-100.0, -100.0}, {100.0, 100.0}}, preserveAspectRatio = true, grid = {10, 10}), graphics = {Text(origin = {0.0, -0.0}, fillPattern = FillPattern.Solid, extent = {{-100.0, -30.0}, {100.0, 30.0}}, textString = "piecewise()", fontName = "Arial")}));
end piecewise;
annotation(
Diagram(coordinateSystem(extent = {{-148.5, 105}, {148.5, -105}}, preserveAspectRatio = true, grid = {10, 10})),
Icon(coordinateSystem(extent = {{-100, 100}, {100, -100}}, preserveAspectRatio = true, grid = {10, 10}), graphics = {Text(origin = {1.40855, -8.72502}, fillPattern = FillPattern.Solid, extent = {{-81.4085, -69.705}, {56.8628, 38.725}}, textString = "f(x)", fontName = "Arial")}),
Documentation(info = "<html>
<h1>Math</h1>
A number of mathematical functions are used in pathway models. Some of these can be found in
Expand Down
113 changes: 1 addition & 112 deletions BioChem/Reactions/Activation/package.mo
Original file line number Diff line number Diff line change
@@ -1,117 +1,6 @@
within BioChem.Reactions;
package Activation "Activation kinetics reactions"
extends Icons.Library;
model Umar "Reversible mixed activation kinetics"
extends BioChem.Interfaces.Reactions.Uur;
extends BioChem.Interfaces.Reactions.Modifiers.Activator;
parameter BioChem.Units.Concentration Kas=1 "Activation constant";
parameter BioChem.Units.Concentration Kac=1 "Activation constant";
parameter BioChem.Units.Concentration KmS=1 "Forward Michaelis-Menten constant";
parameter BioChem.Units.Concentration KmP=1 "Backward Michaelis-Menten constant";
parameter BioChem.Units.ReactionRate vF=1 "Forward maximum velocity";
parameter BioChem.Units.ReactionRate vR=1 "Backward maximum velocity";
equation
rr=(vF*s1.c/KmS - vR*p1.c/KmP)/(1 + Kas/a1.c + (s1.c/KmS + p1.c/KmP)*(1 + Kac/a1.c));
annotation(Documentation(info="<html>
<p>
Reversible mixed activation kinetics.
</p>
</html>"));
end Umar;

model Umai "Irreversible mixed activation kinetics"
extends BioChem.Interfaces.Reactions.Uui;
extends BioChem.Interfaces.Reactions.Modifiers.Activator;
parameter BioChem.Units.Concentration Kac=1 "Activation constant";
parameter BioChem.Units.Concentration Kas=1 "Activation constant";
parameter BioChem.Units.Concentration KmS=1 "Forward Michaelis-Menten constant";
parameter BioChem.Units.ReactionRate vF=1 "Forward maximum velocity";
equation
rr=vF*s1.c*a1.c/(s1.c*(a1.c + Kac) + KmS*(a1.c + Kas));
annotation(Documentation(info="<html>
<p>
Irreversible mixed activation kinetics.
</p>
</html>"));
end Umai;

model Uctr "Reversible catalytic activation"
extends BioChem.Interfaces.Reactions.Uur;
extends BioChem.Interfaces.Reactions.Modifiers.Activator;
parameter BioChem.Units.Concentration Ka=1 "Activation constant";
parameter BioChem.Units.Concentration KmS=1 "Forward Michaelis-Menten constant";
parameter BioChem.Units.Concentration KmP=1 "Backward Michaelis-Menten constant";
parameter BioChem.Units.ReactionRate vF=1 "Forward maximum velocity";
parameter BioChem.Units.ReactionRate vR=1 "Backward maximum velocity";
equation
rr=(vF*s1.c/KmS - vR*p1.c/KmP)/(1 + Ka/a1.c + (s1.c/KmS + p1.c/KmP)*(1 + Ka/a1.c));
annotation(Documentation(info="<html>
<p>
Reversible catalytic activation.
</p>
</html>"));
end Uctr;

model Ucti "Irreversible catalytic activation"
extends BioChem.Interfaces.Reactions.Uui;
extends BioChem.Interfaces.Reactions.Modifiers.Activator;
parameter BioChem.Units.Concentration Ka=1 "Activation constant";
parameter BioChem.Units.Concentration KmS=1 "Forward Michaelis-Menten constant";
parameter BioChem.Units.ReactionRate vF=1 "Forward maximum velocity";
equation
rr=vF*s1.c*a1.c/((a1.c + Ka)*(s1.c + KmS));
annotation(Documentation(info="<html>
<p>
Irreversible catalytic activation.
</p>
</html>"));
end Ucti;

model Uar "Reversible specific activation kinetics"
extends BioChem.Interfaces.Reactions.Uur;
extends BioChem.Interfaces.Reactions.Modifiers.Activator;
parameter BioChem.Units.Concentration Ka=1 "Activation constant";
parameter BioChem.Units.Concentration KmS=1 "Forward Michaelis-Menten constant";
parameter BioChem.Units.Concentration KmP=1 "Backward Michaelis-Menten constant";
parameter BioChem.Units.ReactionRate vF=1 "Forward maximum velocity";
parameter BioChem.Units.ReactionRate vR=1 "Backward maximum velocity";
equation
rr=(vF*s1.c/KmS - vR*p1.c/KmP)/(1 + s1.c/KmS + p1.c/KmP + Ka/a1.c);
annotation(Documentation(info="<html>
<p>
Reversible specific activation kinetics.
</p>
</html>"));
end Uar;

model Uaii "Irreversible specific activation kinetics"
extends BioChem.Interfaces.Reactions.Uui;
extends BioChem.Interfaces.Reactions.Modifiers.Activator;
parameter BioChem.Units.Concentration Ka=1 "Activation constant";
parameter BioChem.Units.Concentration KmS=1 "Forward Michaelis-Menten constant";
parameter BioChem.Units.ReactionRate vF=1 "Forward maximum velocity";
equation
rr=vF*s1.c*a1.c/(a1.c*(KmS + s1.c) + KmS*Ka);
annotation(Documentation(info="<html>
<p>
Irreversible specific activation kinetics.
</p>
</html>"));
end Uaii;

model Uai "Irreversible substrate activation"
extends BioChem.Interfaces.Reactions.Uui;
parameter BioChem.Units.Concentration KSa=1 "Dissociation constant of substrate-activation site";
parameter BioChem.Units.Concentration KSc=1 "Dissociation constant of substrate-active site";
parameter BioChem.Units.ReactionRate vF=1 "Forward maximum velocity";
equation
rr=vF*s1.c/KSa*s1.c/KSa/(1 + s1.c/KSc + s1.c/KSa*s1.c/KSa + s1.c/KSa);
annotation(Documentation(info="<html>
<p>
Irreversible substrate activation.
</p>
</html>"));
end Uai;
extends BioChem.Icons.Library;

annotation(Documentation(info="<html>
<h1>Activation</h1>
Expand Down
110 changes: 2 additions & 108 deletions BioChem/Reactions/BiSubstrate/package.mo
Original file line number Diff line number Diff line change
@@ -1,113 +1,7 @@
within BioChem.Reactions;
package BiSubstrate "Bi-substrate reactions"
extends Icons.Library;
model Ppbr "Ping pong bi-bi kinetics"
extends BioChem.Interfaces.Reactions.Basics.Reaction;
extends BioChem.Interfaces.Reactions.Basics.TwoSubstratesReversible;
extends BioChem.Interfaces.Reactions.Basics.TwoProducts;
parameter BioChem.Units.Concentration Keq=1 "Equilibrium constant";
parameter BioChem.Units.Concentration KiS1=1 "Product inhibition constant of s1.c acting on the reverse reaction";
parameter BioChem.Units.Concentration KiP2=1 "Product inhibition constant of p2.c acting on the forward reaction";
parameter BioChem.Units.Concentration KmS1=1 "Concentration of s1.c such that v = vF/2 (Michaelis constant) at zero p1.c and zero p2.c";
parameter BioChem.Units.Concentration KmS2=1 "Concentration of s2.c such that v = vF/2 (Michaelis constant) at saturating s1.c and zero p1.c";
parameter BioChem.Units.Concentration KmP1=1 "Concentration of p1.c such that v = -vR/2 (Michaelis constant) at zero s1.c and zero s2.c";
parameter BioChem.Units.Concentration KmP2=1 "Concentration of p2.c such that v = -vR/2 (Michaelis constant) at zero s1.c and saturating p1.c";
parameter BioChem.Units.ReactionRate vF=1 "Forward maximum velocity";
parameter BioChem.Units.ReactionRate vR=1 "Reverse maximum velocity";
protected
Real K1;
equation
s1.r=rr;
s2.r=rr;
p1.r=-rr;
p2.r=-rr;
K1=vF/(vR*Keq)*(KmP2*p1.c*(1 + s1.c/KiS1) + p2.c*(KmP1 + p1.c));
rr=vF*(s1.c*s2.c - p1.c*p2.c/Keq)/(s1.c*s2.c + KmS2*s1.c + KmS1*s2.c*(1 + p2.c/KiP2) + K1);
annotation(Documentation(info="<html>
<p>
Ping pong bi-bi kinetics.
</p>
</html>"));
end Ppbr;

model Ordubr "Ordered uni-bi kinetics"
extends BioChem.Interfaces.Reactions.Basics.Reaction;
extends BioChem.Interfaces.Reactions.Basics.OneSubstrateReversible;
extends BioChem.Interfaces.Reactions.Basics.TwoProducts;
parameter BioChem.Units.Concentration Keq=1 "Equilibrium constant";
parameter BioChem.Units.Concentration KiP1=1 "Product inhibition constant of s1.c acting on the reverse reaction";
parameter BioChem.Units.Concentration KmS1=1 "Concentration of s1.c such that v = vF/2 (Michaelis constant) at zero p1.c and zero p2.c";
parameter BioChem.Units.Concentration KmP1=1 "Concentration of p1.c such that v = -vR/2 (Michaelis constant) at zero s1.c and zero s2.c";
parameter BioChem.Units.Concentration KmP2=1 "Concentration of p2.c such that v = -vR/2 (Michaelis constant) at zero s1.c and saturating p1.c";
parameter BioChem.Units.ReactionRate vF=1 "Forward maximum velocity";
parameter BioChem.Units.ReactionRate vR=1 "Reverse maximum velocity";
equation
s1.r=rr;
p1.r=-rr;
p2.r=-rr;
rr=vF*(s1.c - p1.c*p2.c/Keq)/(KmS1 + s1.c*(1 + p1.c/KiP1) + vF/(vR*Keq)*(KmP2*p1.c + KmP1*p2.c + p1.c*p2.c));
annotation(Documentation(info="<html>
<p>
Ordered uni-bi kinetics.
</p>
</html>"));
end Ordubr;

model Ordbur "Ordered bi-uni kinetics"
extends BioChem.Interfaces.Reactions.Basics.Reaction;
extends BioChem.Interfaces.Reactions.Basics.TwoSubstratesReversible;
extends BioChem.Interfaces.Reactions.Basics.OneProduct;
parameter BioChem.Units.Concentration Keq=1 "Equilibrium constant";
parameter BioChem.Units.Concentration KiS1=1 "Product inhibition constant of s1.c acting on the reverse reaction";
parameter BioChem.Units.Concentration KmS1=1 "Concentration of s1.c such that v = vF/2 (Michaelis constant) at zero p1.c";
parameter BioChem.Units.Concentration KmS2=1 "Concentration of B such that v = vF/2 (Michaelis constant) at saturating s1.c and zero p1.c";
parameter BioChem.Units.Concentration KmP1=1 "Concentration of p1.c such that v = -vR/2 (Michaelis constant) at zero s1.c and zero s2.c";
parameter BioChem.Units.ReactionRate vF=1 "Forward maximum velocity";
parameter BioChem.Units.ReactionRate vR=1 "Reverse maximum velocity";
equation
s1.r=rr;
s2.r=rr;
p1.r=-rr;
rr=vF*(s1.c*s2.c - p1.c/Keq)/(s1.c*s2.c + KmS1*s2.c + KmS2*s1.c + vF/(vR*Keq)*(KmP1 + p1.c*(1 + s1.c/KiS1)));
annotation(Documentation(info="<html>
<p>
Ordered bi-uni kinetics.
</p>
</html>"));
end Ordbur;

model Ordbbr "Ordered bi-bi kinetics"
extends BioChem.Interfaces.Reactions.Basics.Reaction;
extends BioChem.Interfaces.Reactions.Basics.TwoSubstratesReversible;
extends BioChem.Interfaces.Reactions.Basics.TwoProducts;
parameter BioChem.Units.Concentration Keq=1 "Equilibrium constant";
parameter BioChem.Units.Concentration KiS1=1 "Product inhibition constant of s1.c acting on the reverse reaction";
parameter BioChem.Units.Concentration KiS2=1 "Product inhibition constant of s2.c acting on the reverse reaction";
parameter BioChem.Units.Concentration KiP1=1 "Product inhibition constant of p1.c acting on the forward reaction";
parameter BioChem.Units.Concentration KmS1=1 "Concentration of s1.c such that v = vF/2 (Michaelis constant) at zero p1.c and zero p2.c";
parameter BioChem.Units.Concentration KmS2=1 "Concentration of s2.c such that v = vF/2 (Michaelis constant) at saturating s1.c and zero p1.c";
parameter BioChem.Units.Concentration KmP1=1 "Concentration of p1.c such that v = -vR/2 (Michaelis constant) at zero s1.c and zero s2.c";
parameter BioChem.Units.Concentration KmP2=1 "Concentration of p2.c such that v = -vR/2 (Michaelis constant) at zero s1.c and saturating p1.c";
parameter BioChem.Units.ReactionRate vF=1 "Forward maximum velocity";
parameter BioChem.Units.ReactionRate vR=1 "Reverse maximum velocity";
protected
Real K1;
Real K2;
equation
s1.r=rr;
s2.r=rr;
p1.r=-rr;
p2.r=-rr;
K1=vF/(vR*Keq)*(KmP2*p1.c*(1 + s1.c/KiS1) + p2.c*K2);
K2=KmP1*(1 + KmS1*s2.c/(KiS1*KmS2) + p1.c*(1 + s2.c/KiS2));
rr=vF*(s1.c*s2.c - p1.c*p2.c/Keq)/(s1.c*s2.c*(1 + p1.c/KiP1) + KmS2*(s1.c + KiS1) + KmS1*s2.c + K1);
annotation(Documentation(info="<html>
<p>
Ordered bi-bi kinetics.
</p>
</html>"));
end Ordbbr;

extends BioChem.Icons.Library;

annotation(Documentation(info="<html>
<h1>BiSubstrate</h1>
<p>
Expand Down
Loading

0 comments on commit 44d4a9f

Please sign in to comment.