viva-simbio

process-bigraph wrapper for the simbio Chemical Reaction Network simulator — real bridge to simbio's LSODA solver.

Brusselator a chemical clock

The Prigogine oscillator: an autocatalytic loop drives sustained limit-cycle oscillations.

101
snapshots
34 ms
wall time
0.25
interval
0.3778
X
3.7976
Y

Time series

Bigraph architecture

bigraph

Antimony model

loaded into a genuine simbio model via libantimony → libSBML → simbio core

model brusselator
  # Classic Prigogine oscillator: a chemical clock.
  species X = 1, Y = 1;
  k1 = 1; k2 = 3; k3 = 1; k4 = 1;
  J1:           -> X;   k1;          # constant production of X
  J2: X         -> Y;   k2 * X;      # X converts to Y
  J3: 2 X + Y   -> 3 X; k3 * X^2 * Y;  # autocatalytic feedback
  J4: X         ->;     k4 * X;      # X decays
end

PBG composite document ports & wires

{
  "simbio": {
    "_type": "process",
    "address": "local:SimbioProcess",
    "interval": 0.25,
    "config": {
      "antimony": "<antimony string \u2014 shown alongside>"
    },
    "inputs": {
      "concentrations": [
        "stores",
        "concentrations"
      ],
      "parameters": [
        "stores",
        "parameters"
      ]
    },
    "outputs": {
      "concentrations": [
        "stores",
        "concentrations"
      ]
    }
  },
  "stores": {
    "concentrations": {
      "X": 1.0,
      "Y": 1.0
    },
    "parameters": {
      "k1": 1.0,
      "k2": 3.0,
      "k3": 1.0,
      "k4": 1.0
    }
  },
  "emitter": {
    "_type": "step",
    "address": "local:RAMEmitter",
    "config": {
      "emit": {
        "concentrations": "map[string,float]",
        "time": "float"
      }
    },
    "inputs": {
      "concentrations": [
        "stores",
        "concentrations"
      ],
      "time": [
        "global_time"
      ]
    }
  },
  "global_time": 0.0
}

Lotka–Volterra predator & prey

Predator-prey dynamics expressed as a reaction network; prey and predator populations cycle out of phase.

161
snapshots
48 ms
wall time
0.25
interval
0.9324
pred
3.6052
prey

Time series

Bigraph architecture

bigraph

Antimony model

loaded into a genuine simbio model via libantimony → libSBML → simbio core

model lotka_volterra
  # Predator-prey oscillations as a reaction network.
  # (alpha/beta/gamma/delta are reserved math-function names in Antimony,
  #  so the rate constants are named k_*.)
  species prey = 10, pred = 5;
  k_birth = 1.1; k_predation = 0.4; k_death = 0.4; k_repro = 0.1;
  birth:     -> prey;  k_birth * prey;          # prey reproduce
  predation: prey ->;  k_predation * prey * pred;  # predators eat prey
  death:     pred ->;  k_death * pred;          # predators die
  repro:     -> pred;  k_repro * prey * pred;   # predators reproduce from prey
end

PBG composite document ports & wires

{
  "simbio": {
    "_type": "process",
    "address": "local:SimbioProcess",
    "interval": 0.25,
    "config": {
      "antimony": "<antimony string \u2014 shown alongside>"
    },
    "inputs": {
      "concentrations": [
        "stores",
        "concentrations"
      ],
      "parameters": [
        "stores",
        "parameters"
      ]
    },
    "outputs": {
      "concentrations": [
        "stores",
        "concentrations"
      ]
    }
  },
  "stores": {
    "concentrations": {
      "prey": 10.0,
      "pred": 5.0
    },
    "parameters": {
      "k_birth": 1.1,
      "k_predation": 0.4,
      "k_death": 0.4,
      "k_repro": 0.1
    }
  },
  "emitter": {
    "_type": "step",
    "address": "local:RAMEmitter",
    "config": {
      "emit": {
        "concentrations": "map[string,float]",
        "time": "float"
      }
    },
    "inputs": {
      "concentrations": [
        "stores",
        "concentrations"
      ],
      "time": [
        "global_time"
      ]
    }
  },
  "global_time": 0.0
}

Repressilator a synthetic genetic oscillator (Hill kinetics)

Three genes repressing each other in a ring (Elowitz & Leibler 2000). Hill-function rate laws — not mass-action.

101
snapshots
70 ms
wall time
0.5
interval
4.181
m1
6.0991
m2
0.2207
m3
1.9615
p1
8.1297
p2
0.6684
p3

Time series

Bigraph architecture

bigraph

Antimony model

loaded into a genuine simbio model via libantimony → libSBML → simbio core

model repressilator
  # Three genes repressing each other in a ring (Elowitz & Leibler 2000),
  # written with Hill-function transcription -- not mass-action.
  species m1 = 0.2, m2 = 0.1, m3 = 0.3, p1 = 0, p2 = 0, p3 = 0;
  a = 10; a0 = 0.1; n = 3; K = 1; beta = 1;
  tx1: -> m1; a / (1 + (p3/K)^n) + a0;
  tx2: -> m2; a / (1 + (p1/K)^n) + a0;
  tx3: -> m3; a / (1 + (p2/K)^n) + a0;
  dm1: m1 ->; m1;   dm2: m2 ->; m2;   dm3: m3 ->; m3;
  tl1: -> p1; beta * m1;   tl2: -> p2; beta * m2;   tl3: -> p3; beta * m3;
  dp1: p1 ->; beta * p1;   dp2: p2 ->; beta * p2;   dp3: p3 ->; beta * p3;
end

PBG composite document ports & wires

{
  "simbio": {
    "_type": "process",
    "address": "local:SimbioProcess",
    "interval": 0.5,
    "config": {
      "antimony": "<antimony string \u2014 shown alongside>"
    },
    "inputs": {
      "concentrations": [
        "stores",
        "concentrations"
      ],
      "parameters": [
        "stores",
        "parameters"
      ]
    },
    "outputs": {
      "concentrations": [
        "stores",
        "concentrations"
      ]
    }
  },
  "stores": {
    "concentrations": {
      "m1": 0.2,
      "m2": 0.1,
      "m3": 0.3,
      "p1": 0.0,
      "p2": 0.0,
      "p3": 0.0
    },
    "parameters": {
      "a": 10.0,
      "a0": 0.1,
      "n": 3.0,
      "K": 1.0,
      "beta": 1.0
    }
  },
  "emitter": {
    "_type": "step",
    "address": "local:RAMEmitter",
    "config": {
      "emit": {
        "concentrations": "map[string,float]",
        "time": "float"
      }
    },
    "inputs": {
      "concentrations": [
        "stores",
        "concentrations"
      ],
      "time": [
        "global_time"
      ]
    }
  },
  "global_time": 0.0
}