Kinetics
Chemical kinetics: reactions, oscillating reactors, and excitable media.
CatalystPelletElement(label, visual=None, *, c=1.0, h=0.1, k=10.0, K=20.0)
Bases: Element
Catalyst pellet, the concentration c of the reactant at its surface relative to the bulk.
The mass transfer and the surface reaction of catalyst_pellet change the concentration and read their constants
from the pellet.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the pellet. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
c
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial surface concentration. |
1.0
|
h
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The coefficient of mass transfer from the bulk. |
0.1
|
k
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate constant of the surface reaction. |
10.0
|
K
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The adsorption constant, which sets the inhibition. |
20.0
|
Examples:
>>> from skcomplex.models.chemistry.kinetics import CatalystPelletElement
>>> CatalystPelletElement('pellet').K
20.0
Source code in src/skcomplex/models/chemistry/kinetics/_catalyst_pellet.py
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | |
CubicAutocatalysisElement(label, visual=None, *, a=1.0, b=0.0, F=0.04, k=0.05)
Bases: Element
Continuously fed reactor of cubic autocatalysis, the concentrations of the reactant a and the autocatalyst b.
The reactions and the flows of cubic_autocatalysis change the concentrations and read the feed rate F and the
decay rate k from the reactor.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the reactor. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
a
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial concentration of the reactant. |
1.0
|
b
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial concentration of the autocatalyst. |
0.0
|
F
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The feed rate, the inverse residence time. |
0.04
|
k
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of the autocatalyst. |
0.05
|
Examples:
>>> from skcomplex.models.chemistry.kinetics import CubicAutocatalysisElement
>>> CubicAutocatalysisElement('reactor').F
0.04
Source code in src/skcomplex/models/chemistry/kinetics/_cubic_autocatalysis.py
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | |
CyclicCellElement(label, visual=None, *, level=0, n=14.0, threshold=1.0)
Bases: Element
Cell of Griffeath's cyclic cellular automaton, with n levels that follow each other in a cycle.
A cell moves from level k to level k + 1 modulo n when at least threshold of its neighbours hold that
level, by the local rule of cyclic_cellular_automaton, so every level eats its predecessor and random initial
levels organize into spiral waves.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the cell or the lattice group. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
level
|
Annotated[float, StateSpec(domain=NN)]
|
The initial level, from 0 to |
0
|
n
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The number of levels. |
14.0
|
threshold
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The number of neighbours at the following level that advance a cell. |
1.0
|
Examples:
>>> from skcomplex.models.chemistry.kinetics import CyclicCellElement
>>> CyclicCellElement('cell').n
14.0
Source code in src/skcomplex/models/chemistry/kinetics/_cyclic.py
58 59 60 61 62 63 64 65 66 67 68 69 70 | |
HodgepodgeCellElement(label, visual=None, *, level=0, n=100.0, k1=2.0, k2=3.0, g=34.0)
Bases: Element
Cell of the hodgepodge machine of Gerhardt and Schuster, healthy at 0, infected below n, and ill at n.
Healthy cells catch the infection from their infected and ill neighbours, infected cells worsen by the mean of their
neighbourhood plus g, and ill cells heal, by the local rule of hodgepodge.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the cell or the lattice group. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
level
|
Annotated[float, StateSpec(domain=NN)]
|
The initial level of infection from 0 to |
0
|
n
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The level of illness. |
100.0
|
k1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The weight of infected neighbours for healthy cells. |
2.0
|
k2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The weight of ill neighbours for healthy cells. |
3.0
|
g
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The speed of the infection. |
34.0
|
Examples:
>>> from skcomplex.models.chemistry.kinetics import HodgepodgeCellElement
>>> HodgepodgeCellElement('cell').n
100.0
Source code in src/skcomplex/models/chemistry/kinetics/_hodgepodge.py
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | |
OregonatorElement(label, visual=None, *, x=0.1, y=0.1, z=0.1, epsilon=0.04, delta=0.0004, q=0.0008, f=1.0)
Bases: Element
Reactor of the scaled Oregonator, the scaled concentrations of bromous acid, bromide, and the oxidized catalyst.
The scaled concentrations follow epsilon dx/dt = q y - x y + x (1 - x), delta dy/dt = -q y - x y + f z, and
dz/dt = x - z. The reactions of oregonator change the concentrations, with the time scales epsilon and
delta dividing the stoichiometric coefficients of x and y, and read the parameters from the reactor.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the reactor. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
x
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial scaled concentration of bromous acid. |
0.1
|
y
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial scaled concentration of bromide. |
0.1
|
z
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial scaled concentration of the oxidized catalyst. |
0.1
|
epsilon
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The ratio of the time scales of bromous acid and the catalyst. |
0.04
|
delta
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The ratio of the time scales of bromide and the catalyst. |
0.0004
|
q
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The ratio of rate constants that sets the lowest bromous acid concentration. |
0.0008
|
f
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The stoichiometric factor of bromide production from the catalyst. |
1.0
|
Examples:
>>> from skcomplex.models.chemistry.kinetics import OregonatorElement
>>> OregonatorElement('reactor').epsilon
0.04
Source code in src/skcomplex/models/chemistry/kinetics/_oregonator.py
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | |
PulsedElectrodeElement(label, visual=None, *, eta=0.0, c=1.0, C=1.0, alpha=0.5, tau=10.0, kappa=0.05, current=5.0, period=10.0, width=2.0)
Bases: Element
Electrode of a stirred electrochemical reactor, charged by a train of current pulses.
In units of the exchange current and of the thermal voltage, the overpotential follows
C deta/dt = i(t) - i_F, with the Butler-Volmer current i_F = c exp(alpha eta) - exp(-(1 - alpha) eta), and the
reactant concentration follows dc/dt = (1 - c) / tau - kappa i_F.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the electrode. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
eta
|
Annotated[float, StateSpec()]
|
The initial overpotential. |
0.0
|
c
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial reactant concentration, relative to the feed. |
1.0
|
C
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The capacitance of the double layer. |
1.0
|
alpha
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The transfer coefficient. |
0.5
|
tau
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The residence time of the reactor. |
10.0
|
kappa
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The consumption of reactant per unit of Faradaic current. |
0.05
|
current
|
Annotated[float, ParameterSpec()]
|
The current of a pulse. |
5.0
|
period
|
float
|
The time between the starts of pulses. |
10.0
|
width
|
float
|
The duration of a pulse. |
2.0
|
Examples:
>>> from skcomplex.models.chemistry.kinetics import PulsedElectrodeElement
>>> PulsedElectrodeElement('electrode').period
10.0
Source code in src/skcomplex/models/chemistry/kinetics/_pulsed_electrode.py
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | |
SchloglElement(label, visual=None, *, x=50.0, c1=1.5e-06, c2=0.0025, c3=0.0002, c4=3.5, A=100000.0, B=200000.0)
Bases: Element
Reactor of Schlögl's reaction, the number of molecules of X with the buffered species A and B.
The reactions of chemical_langevin_equation change x and read the rate constants and the constant numbers of
molecules of A and B from the reactor.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the reactor. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
x
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of molecules of |
50.0
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate constant of the autocatalytic production. |
1.5e-06
|
c2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate constant of the reverse of the autocatalytic production. |
0.0025
|
c3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate constant of the production from |
0.0002
|
c4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate constant of the conversion into |
3.5
|
A
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The constant number of molecules of |
100000.0
|
B
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The constant number of molecules of |
200000.0
|
Examples:
>>> from skcomplex.models.chemistry.kinetics import SchloglElement
>>> SchloglElement('reactor').x
50.0
Source code in src/skcomplex/models/chemistry/kinetics/_reactions.py
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | |
brusselator_ode(u=1.0, v=1.0, *, a=1.0, b=3.0)
Return the well-mixed Brusselator, which oscillates on a limit cycle when b > 1 + a**2.
The reactions A -> U, B + U -> V + D, 2U + V -> 3U, and U -> E with the buffered reactants A and B
give du/dt = a - (b + 1) u + u^2 v and dv/dt = b u - u^2 v, with the fixed point (a, b / a).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
float
|
The initial concentration of the autocatalytic intermediate. |
1.0
|
v
|
float
|
The initial concentration of the second intermediate. |
1.0
|
a
|
float
|
The constant supply of the first reactant. |
1.0
|
b
|
float
|
The constant supply of the second reactant. |
3.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the concentrations |
Examples:
>>> from skcomplex.models.chemistry.kinetics import brusselator_ode
>>> brusselator_ode(b=1.5).elements[0].b
1.5
Source code in src/skcomplex/models/chemistry/kinetics/_oscillators.py
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | |
catalyst_pellet(c=1.0, *, h=0.1, k=10.0, K=20.0)
Return the surface concentration of a catalyst pellet, bistable through Langmuir-Hinshelwood kinetics.
The concentration at the surface, relative to the bulk, follows dc/dt = h (1 - c) - k c / (1 + K c)^2, where
mass transfer from the bulk balances a reaction that the adsorbed reactant inhibits. For the default parameters a
reacting state of low concentration and an inhibited state of high concentration are both stable.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
c
|
float
|
The initial surface concentration. |
1.0
|
h
|
float
|
The coefficient of mass transfer from the bulk. |
0.1
|
k
|
float
|
The rate constant of the surface reaction. |
10.0
|
K
|
float
|
The adsorption constant, which sets the inhibition. |
20.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the concentration |
Examples:
>>> from skcomplex.models.chemistry.kinetics import catalyst_pellet
>>> catalyst_pellet(k=5.0).elements[0].k
5.0
Source code in src/skcomplex/models/chemistry/kinetics/_reactors.py
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | |
chemical_langevin_equation(x=50.0, *, c1=1.5e-06, c2=0.0025, c3=0.0002, c4=3.5, A=100000.0, B=200000.0)
Return the chemical Langevin equation of Schlögl's bistable reaction, whose noise switches between two states.
The channels A + 2X -> 3X, 3X -> A + 2X, B -> X, and X -> B have the propensities c1 A x (x - 1) / 2,
c2 x (x - 1) (x - 2) / 6, c3 B, and c4 x. Every channel adds its propensity times its change of x to the
drift and drives x with its own Wiener process of amplitude the square root of its propensity. The default rate
constants are those of Gillespie 2000 scaled to a volume five times smaller, so the stable states lie near 17 and
113 molecules and the noise switches between them within 200 time units.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
float
|
The initial number of molecules of |
50.0
|
c1
|
float
|
The rate constant of the autocatalytic production. |
1.5e-06
|
c2
|
float
|
The rate constant of the reverse of the autocatalytic production. |
0.0025
|
c3
|
float
|
The rate constant of the production from |
0.0002
|
c4
|
float
|
The rate constant of the conversion into |
3.5
|
A
|
float
|
The constant number of molecules of |
100000.0
|
B
|
float
|
The constant number of molecules of |
200000.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the number of molecules |
Examples:
>>> from skcomplex.models.chemistry.kinetics import chemical_langevin_equation
>>> chemical_langevin_equation(c4=3.0).elements[0].c4
3.0
Source code in src/skcomplex/models/chemistry/kinetics/_reactions.py
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 | |
chemical_langevin_network(enzyme=100.0, substrate=300.0, *, k_binding=0.01, k_unbinding=0.1, k_catalysis=0.1)
Return the chemical Langevin equation of the enzyme reaction E + S <-> C -> E + P.
Every reaction adds its rate times its change of every species to the drift, and one Wiener process with the
amplitude the square root of its rate drives every species it changes. Since one increment changes all of them, the
total enzyme E + C and the total substrate S + C + P stay constant under the noise, as in the jump process.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
enzyme
|
float
|
The initial amount of free enzyme. |
100.0
|
substrate
|
float
|
The initial amount of substrate. |
300.0
|
k_binding
|
float
|
The rate constant of the binding of enzyme and substrate. |
0.01
|
k_unbinding
|
float
|
The rate constant of the unbinding of the complex. |
0.1
|
k_catalysis
|
float
|
The rate constant of the conversion of the complex into enzyme and product. |
0.1
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the amounts |
Examples:
>>> from skcomplex.models.chemistry.kinetics import chemical_langevin_network
>>> [reaction.mode for reaction in chemical_langevin_network().interactions]
['langevin', 'langevin', 'langevin']
Source code in src/skcomplex/models/chemistry/kinetics/_reactions.py
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 | |
cubic_autocatalysis(a=0.5, b=0.5, *, F=0.04, k=0.05)
Return cubic autocatalysis A + 2B -> 3B with the decay B -> C in a continuously fed reactor.
The flow through the reactor relaxes the reactant to its feed concentration 1 and washes out the autocatalyst at
the rate F, so the dimensionless concentrations follow da/dt = -a b^2 + F (1 - a) and
db/dt = a b^2 - (F + k) b. The washout state (1, 0) is always stable, and a reacting state coexists with it
when F + k < sqrt(F) / 2.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
a
|
float
|
The initial concentration of the reactant. |
0.5
|
b
|
float
|
The initial concentration of the autocatalyst. |
0.5
|
F
|
float
|
The feed rate, the inverse residence time. |
0.04
|
k
|
float
|
The decay rate of the autocatalyst. |
0.05
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the concentrations |
Examples:
>>> from skcomplex.models.chemistry.kinetics import cubic_autocatalysis
>>> cubic_autocatalysis(k=0.06).elements[0].k
0.06
Source code in src/skcomplex/models/chemistry/kinetics/_oscillators.py
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 | |
cyclic_cellular_automaton(shape=(64, 64), *, n=14, threshold=1, random_state=0)
Return Griffeath's cyclic cellular automaton, whose random levels organize into spiral waves.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
shape
|
Sequence[int]
|
The number of rows and columns. |
(64, 64)
|
n
|
int
|
The number of levels. |
14
|
threshold
|
int
|
The number of von Neumann neighbours at the following level that advance a cell. |
1
|
random_state
|
int | Generator | None
|
The seed or generator of the initial levels. |
0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the levels |
Examples:
>>> from skcomplex.models.chemistry.kinetics import cyclic_cellular_automaton
>>> cyclic_cellular_automaton((10, 10), n=8).elements[0].values['n']
8
Source code in src/skcomplex/models/chemistry/kinetics/_cyclic.py
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | |
hodgepodge(shape=(100, 100), *, n=100.0, k1=2.0, k2=3.0, g=34.0, random_state=0)
Return the hodgepodge machine, a model of a chemical reaction whose waves form spirals.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
shape
|
Sequence[int]
|
The number of rows and columns. |
(100, 100)
|
n
|
float
|
The level of illness. |
100.0
|
k1
|
float
|
The weight of infected neighbours for healthy cells. |
2.0
|
k2
|
float
|
The weight of ill neighbours for healthy cells. |
3.0
|
g
|
float
|
The speed of the infection. |
34.0
|
random_state
|
int | Generator | None
|
The seed or generator of the initial levels. |
0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the levels |
Examples:
>>> from skcomplex.models.chemistry.kinetics import hodgepodge
>>> hodgepodge((10, 10)).elements[0].values['g']
34.0
Source code in src/skcomplex/models/chemistry/kinetics/_hodgepodge.py
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | |
michaelis_menten(enzyme=100.0, substrate=300.0, *, k_binding=0.01, k_unbinding=0.1, k_catalysis=0.1, stochastic=False)
Return the enzyme reaction E + S <-> C -> E + P of Michaelis and Menten, as rate equations or as jumps.
The total enzyme E + C and the total substrate S + C + P are conserved. In stochastic mode the amounts are
numbers of molecules and the reactions are the random events of Gillespie's algorithm.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
enzyme
|
float
|
The initial amount of free enzyme. |
100.0
|
substrate
|
float
|
The initial amount of substrate. |
300.0
|
k_binding
|
float
|
The rate constant of the binding of enzyme and substrate. |
0.01
|
k_unbinding
|
float
|
The rate constant of the unbinding of the complex. |
0.1
|
k_catalysis
|
float
|
The rate constant of the conversion of the complex into enzyme and product. |
0.1
|
stochastic
|
bool
|
Whether the reactions are random events. |
False
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the amounts |
Examples:
>>> from skcomplex.models.chemistry.kinetics import michaelis_menten
>>> [element.label for element in michaelis_menten().elements]
['E', 'S', 'C', 'P']
Source code in src/skcomplex/models/chemistry/kinetics/_reactions.py
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | |
nanoparticle_corona(nanoparticle=18.0, *, radius=35.0, proteins=(600000.0, 15000.0, 8800.0), corona=(14.0, 4.0, 0.0), protein_radii=(5.0, 4.0, 8.3), association=(2400.0, 30000.0, 2000.0), dissociation=(0.002, 3e-05, 0.002))
Return the corona that albumin, high-density lipoprotein, and fibrinogen form on a nanoparticle in plasma.
Each protein i binds a free nanoparticle at the rate n_i alpha_i U P_i and leaves it at the rate
delta_i B_i, where n_i = 4 (R + r_i)^2 / r_i^2 is the number of its sites on a nanoparticle of radius R.
The book gives only the balance of the complexes, and the model takes the free nanoparticles and the free proteins
from mass action, so U + sum B_i and every P_i + B_i are conserved. The parameters and initial
concentrations are the book's, without the binding to a target. Concentrations are in nM, association rates in
1/(M s), and time is in seconds. Albumin, the most abundant, covers the nanoparticles first, and lipoprotein,
which binds more tightly, replaces it within hours, which is the Vroman effect.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
nanoparticle
|
float
|
The initial concentration of free nanoparticles. |
18.0
|
radius
|
float
|
The radius of a nanoparticle, in nm. |
35.0
|
proteins
|
Sequence[float]
|
The initial concentrations of free albumin, lipoprotein, and fibrinogen. |
(600000.0, 15000.0, 8800.0)
|
corona
|
Sequence[float]
|
The initial concentrations of nanoparticles bound to each protein. |
(14.0, 4.0, 0.0)
|
protein_radii
|
Sequence[float]
|
The radii of the proteins, in nm. |
(5.0, 4.0, 8.3)
|
association
|
Sequence[float]
|
The association rates of the proteins. |
(2400.0, 30000.0, 2000.0)
|
dissociation
|
Sequence[float]
|
The dissociation rates of the proteins, per second. |
(0.002, 3e-05, 0.002)
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the free nanoparticles |
Examples:
>>> from skcomplex.models.chemistry.kinetics import nanoparticle_corona
>>> round(nanoparticle_corona().interactions[0].k, 7)
0.0006144
Source code in src/skcomplex/models/chemistry/kinetics/_nanoparticles.py
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | |
oregonator(x=0.1, y=0.1, z=0.1, *, epsilon=0.04, delta=0.0004, q=0.0008, f=1.0)
Return the scaled Oregonator, the reduction of the FKN mechanism of the Belousov-Zhabotinsky reaction.
The scaled concentrations of bromous acid x, bromide y, and the oxidized catalyst z follow
epsilon dx/dt = q y - x y + x (1 - x), delta dy/dt = -q y - x y + f z, and dz/dt = x - z. The five reactions
of the mechanism, bromate with bromide Y -> X at q y, bromous acid with bromide X + Y -> 0 at x y, the
autocatalysis X -> 2X + Z at x, the disproportionation 2X -> 0 at x^2, and the reduction of the catalyst
Z -> f Y at z, change x and y by stoichiometric coefficients scaled by 1 / epsilon and 1 / delta. With
the standard parameters the reaction settles on a relaxation limit cycle, and the small epsilon and delta make
it stiff.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
float
|
The initial scaled concentration of bromous acid. |
0.1
|
y
|
float
|
The initial scaled concentration of bromide. |
0.1
|
z
|
float
|
The initial scaled concentration of the oxidized catalyst. |
0.1
|
epsilon
|
float
|
The ratio of the time scales of bromous acid and the catalyst. |
0.04
|
delta
|
float
|
The ratio of the time scales of bromide and the catalyst. |
0.0004
|
q
|
float
|
The ratio of rate constants that sets the lowest bromous acid concentration. |
0.0008
|
f
|
float
|
The stoichiometric factor of bromide production from the catalyst. |
1.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the concentrations |
Examples:
>>> from skcomplex.models.chemistry.kinetics import oregonator
>>> oregonator(f=0.8).elements[0].f
0.8
Source code in src/skcomplex/models/chemistry/kinetics/_oscillators.py
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 | |
pulsed_electrochemical_reactor(eta=0.0, c=1.0, *, C=1.0, alpha=0.5, tau=10.0, kappa=0.05, current=5.0, period=10.0, width=2.0)
Return a stirred electrochemical reactor whose electrode is driven by a train of current pulses.
Every pulse charges the double layer, the overpotential drives a Butler-Volmer current that consumes the reactant, and the feed restores it between pulses.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
eta
|
float
|
The initial overpotential. |
0.0
|
c
|
float
|
The initial reactant concentration, relative to the feed. |
1.0
|
C
|
float
|
The capacitance of the double layer. |
1.0
|
alpha
|
float
|
The transfer coefficient. |
0.5
|
tau
|
float
|
The residence time of the reactor. |
10.0
|
kappa
|
float
|
The consumption of reactant per unit of Faradaic current. |
0.05
|
current
|
float
|
The current of a pulse. |
5.0
|
period
|
float
|
The time between the starts of pulses. |
10.0
|
width
|
float
|
The duration of a pulse. |
2.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the overpotential |
Examples:
>>> from skcomplex.models.chemistry.kinetics import pulsed_electrochemical_reactor
>>> pulsed_electrochemical_reactor(width=1.0).elements[0].width
1.0
Source code in src/skcomplex/models/chemistry/kinetics/_reactors.py
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | |