Subplots and Phase Portraits

This notebook shows how to use subplots and phase portraits in Tellurium via COMBINE archives. Since SED-ML does not include subplotting, we have created our own functions (newTiledFigure and newLowerTriFigure) to cause the next series of figures to be plotted as subplots. The model is from BIOMD0000000107.

Reference

Novak, B., & Tyson, J. J. (1993). Numerical analysis of a comprehensive model of M-phase control in Xenopus oocyte extracts and intact embryos. Journal of cell science, 106(4), 1153-1168.


In [3]:
import tellurium as te
te.newTiledFigure(rows=2, cols=1)

In [4]:
// Created by libAntimony v2.9.3
model *novak()

  // Compartments and Species:
  compartment cytoplasm;
  species cyclin in cytoplasm, dimer in cytoplasm, dimer_p in cytoplasm, p_dimer in cytoplasm;
  species p_dimer_p in cytoplasm, cdc25_p in cytoplasm, wee1_p in cytoplasm;
  species IE_p in cytoplasm, UbE_star in cytoplasm, $cdc2 in cytoplasm, $cdc25 in cytoplasm;
  species $wee1 in cytoplasm, $IE in cytoplasm, $UbE in cytoplasm;

  // Assignment Rules:
  cdc2 := total_cdc2 - (dimer + p_dimer + p_dimer_p + dimer_p);
  cdc25 := total_cdc25 - cdc25_p;
  wee1 := total_wee1 - wee1_p;
  IE := total_IE - IE_p;
  UbE := total_UbE - UbE_star;
  k25 := V25_prime*(total_cdc25 - cdc25_p) + V25_double_prime*cdc25_p;
  kwee := Vwee_prime*wee1_p + Vwee_double_prime*(total_wee1 - wee1_p);
  k2 := V2_prime*(total_UbE - UbE_star) + V2_double_prime*UbE_star;
  total_cyclin := cyclin + dimer + dimer_p + p_dimer + p_dimer_p;
  Y15P := p_dimer + p_dimer_p;

  // Reactions:
  R1:  => cyclin; k1AA;
  R2: cyclin => ; k2*cyclin;
  R3: cyclin + $cdc2 => dimer; k3*cyclin*cdc2;
  R4: dimer_p => dimer; kinh*dimer_p;
  R5: dimer => p_dimer; kwee*dimer;
  R6: dimer => dimer_p; kcak*dimer;
  R7: dimer => ; k2*dimer;
  R8: p_dimer => dimer; k25*p_dimer;
  R9: p_dimer => p_dimer_p; kcak*p_dimer;
  R10: p_dimer => ; k2*p_dimer;
  R11: p_dimer_p => p_dimer; kinh*p_dimer_p;
  R12: dimer_p => p_dimer_p; kwee*dimer_p;
  R13: p_dimer_p => dimer_p; k25*p_dimer_p;
  R14: p_dimer_p => ; k2*p_dimer_p;
  R15: dimer_p => ; k2*dimer_p;
  R17: $cdc25 => cdc25_p; ka*dimer_p*(total_cdc25 - cdc25_p)/(K_a + total_cdc25 - cdc25_p);
  R18: cdc25_p => $cdc25; kbPPase*cdc25_p/(K_b + cdc25_p);
  R19: $wee1 => wee1_p; ke*dimer_p*(total_wee1 - wee1_p)/(K_e + total_wee1 - wee1_p);
  R20: wee1_p => $wee1; kfPPase*wee1_p/(K_f + wee1_p);
  R21: $IE => IE_p; kg*dimer_p*(total_IE - IE_p)/(K_g + total_IE - IE_p);
  R22: IE_p => $IE; khPPAse*IE_p/(K_h + IE_p);
  R23: $UbE => UbE_star; kc*IE_p*(total_UbE - UbE_star)/(K_c + total_UbE - UbE_star);
  R24: UbE_star => $UbE; kd_anti_IE*UbE_star/(K_d + UbE_star);

  // Species initializations:
  cyclin = 100;
  dimer = 0;
  dimer_p = 0;
  p_dimer = 0;
  p_dimer_p = 0;
  cdc25_p = 0;
  wee1_p = 0;
  IE_p = 0;
  UbE_star = 0;

  // Compartment initializations:
  cytoplasm = 1;

  // Variable initializations:
  total_cdc2 = 100;
  total_cdc25 = 1;
  total_wee1 = 1;
  total_IE = 1;
  total_UbE = 1;
  V25_prime = 0.1;
  V25_double_prime = 2;
  Vwee_prime = 0.1;
  Vwee_double_prime = 1;
  V2_prime = 0.015;
  V2_double_prime = 1;
  k1AA = 1;
  k3 = 0.01;
  kinh = 0.025;
  kcak = 0.25;
  ka = 0.01;
  K_a = 0.1;
  kbPPase = 0.125;
  K_b = 0.1;
  ke = 0.0133;
  K_e = 0.3;
  kfPPase = 0.1;
  K_f = 0.3;
  kg = 0.0065;
  K_g = 0.01;
  khPPAse = 0.087;
  K_h = 0.01;
  kc = 0.1;
  K_c = 0.01;
  kd_anti_IE = 0.095;
  K_d = 0.01;

  // Other declarations:
  var k25, kwee, k2, total_cyclin, Y15P;
  const cytoplasm, total_cdc2, total_cdc25, total_wee1, total_IE, total_UbE;
  const V25_prime, V25_double_prime, Vwee_prime, Vwee_double_prime, V2_prime;
  const V2_double_prime, k1AA, k3, kinh, kcak, ka, K_a, kbPPase, K_b, ke;
  const K_e, kfPPase, K_f, kg, K_g, khPPAse, K_h, kc, K_c, kd_anti_IE, K_d;

  // Unit definitions:
  unit substance = 1e-9 mole;
  unit time_unit = 60 second;

  // Display Names:
  substance is "nanomole";
  time_unit is "minutes";
  dimer is "cyclin-cdc2 dimer";
  dimer_p is "Thr161 phosphorylated dimer(active MPF)";
  p_dimer is "Tyr15 phosphorylated dimer";
  p_dimer_p is "Thr161-Tyr15 phosphorylated dimer";
  cdc25_p is "phosphorylated cdc25";
  wee1_p is "phosphorylated wee1";
  IE_p is "phosphorylated intermediary enzyme";
  UbE_star is "ubiquitin conjugating enzyme";
  IE is "intermediary enzyme";
  UbE is "ubiquitin conjugating enzyme";
  R1 is "cyclin synthesis";
  R2 is "cyclin degradation";
  R3 is "cyclin-cdc2 dimer formation";
  R4 is "Thr161 dephosphorylation";
  R5 is "Tyr15 phosphorylation";
  R6 is "Thr161 phosphorylation";
  R7 is "cyclin degradation";
  R8 is "Tyr15 dephosphorylation";
  R9 is "Thr161 phosphorylation";
  R10 is "cyclin degradation";
  R11 is "Thr161 dephosphorylation";
  R12 is "Tyr15 phosphorylation";
  R13 is "Tyr15 dephosphorylation";
  R14 is "cyclin degradation";
  R15 is "cyclin degradation";
  R17 is "cdc25 activation";
  R18 is "cdc25 deactivation";
  R19 is "wee1 deactivation";
  R20 is "wee1 activation";
  R21 is "intermediary enzyme activation";
  R22 is "intermediary enzyme deactivation";
  R23 is "ubiquitin conjugating enzyme activation";
  R24 is "ubiquitin conjugating enzyme deactivation";
end


extract_mod = model "novak"
intact_mod = model "novak" with k1AA = 1.8, V2_prime = 0.03, ka = 0.05, kc = 0.4, ke = 0.0067, kg = 0.02, kbPPase = 0.0375, kd_anti_IE = 0.25, kfPPase = 0.05, khPPAse = 0.27

sim1 = simulate uniform(0, 200, 1000)
sim1.algorithm.variable_step_size = true
sim1.algorithm.absolute_tolerance = 1e-8
sim1.algorithm.relative_tolerance = 1e-4

extract_task = run sim1 on extract_mod
intact_task = run sim1 on intact_mod

plot "M-phase Control, Extract (Novak, 1993)" extract_task.time vs extract_task.total_cyclin, extract_task.p_dimer_p, extract_task.dimer_p
plot "M-phase Control, Intact Embryo (Novak, 1993)" intact_task.time vs intact_task.total_cyclin, intact_task.p_dimer_p, intact_task.dimer_p

In [5]:
import tellurium as te
te.newLowerTriFigure(rows=3, cols=3)

In [6]:
// Archive author information:
// - Name: Kyle Medley
// - Email: medleyj@uw.edu
// - Organization: University of Washington
// -- Begin Antimony block converted from novak.xml
// Created by libAntimony v2.9.3
model *novak()

  // Compartments and Species:
  compartment cytoplasm;
  species cyclin in cytoplasm, dimer in cytoplasm, dimer_p in cytoplasm, p_dimer in cytoplasm;
  species p_dimer_p in cytoplasm, cdc25_p in cytoplasm, wee1_p in cytoplasm;
  species IE_p in cytoplasm, UbE_star in cytoplasm, $cdc2 in cytoplasm, $cdc25 in cytoplasm;
  species $wee1 in cytoplasm, $IE in cytoplasm, $UbE in cytoplasm;

  // Assignment Rules:
  cdc2 := total_cdc2 - (dimer + p_dimer + p_dimer_p + dimer_p);
  cdc25 := total_cdc25 - cdc25_p;
  wee1 := total_wee1 - wee1_p;
  IE := total_IE - IE_p;
  UbE := total_UbE - UbE_star;
  k25 := V25_prime*(total_cdc25 - cdc25_p) + V25_double_prime*cdc25_p;
  kwee := Vwee_prime*wee1_p + Vwee_double_prime*(total_wee1 - wee1_p);
  k2 := V2_prime*(total_UbE - UbE_star) + V2_double_prime*UbE_star;
  total_cyclin := cyclin + dimer + dimer_p + p_dimer + p_dimer_p;
  Y15P := p_dimer + p_dimer_p;

  // Reactions:
  R1:  => cyclin; k1AA;
  R2: cyclin => ; k2*cyclin;
  R3: cyclin + $cdc2 => dimer; k3*cyclin*cdc2;
  R4: dimer_p => dimer; kinh*dimer_p;
  R5: dimer => p_dimer; kwee*dimer;
  R6: dimer => dimer_p; kcak*dimer;
  R7: dimer => ; k2*dimer;
  R8: p_dimer => dimer; k25*p_dimer;
  R9: p_dimer => p_dimer_p; kcak*p_dimer;
  R10: p_dimer => ; k2*p_dimer;
  R11: p_dimer_p => p_dimer; kinh*p_dimer_p;
  R12: dimer_p => p_dimer_p; kwee*dimer_p;
  R13: p_dimer_p => dimer_p; k25*p_dimer_p;
  R14: p_dimer_p => ; k2*p_dimer_p;
  R15: dimer_p => ; k2*dimer_p;
  R17: $cdc25 => cdc25_p; ka*dimer_p*(total_cdc25 - cdc25_p)/(K_a + total_cdc25 - cdc25_p);
  R18: cdc25_p => $cdc25; kbPPase*cdc25_p/(K_b + cdc25_p);
  R19: $wee1 => wee1_p; ke*dimer_p*(total_wee1 - wee1_p)/(K_e + total_wee1 - wee1_p);
  R20: wee1_p => $wee1; kfPPase*wee1_p/(K_f + wee1_p);
  R21: $IE => IE_p; kg*dimer_p*(total_IE - IE_p)/(K_g + total_IE - IE_p);
  R22: IE_p => $IE; khPPAse*IE_p/(K_h + IE_p);
  R23: $UbE => UbE_star; kc*IE_p*(total_UbE - UbE_star)/(K_c + total_UbE - UbE_star);
  R24: UbE_star => $UbE; kd_anti_IE*UbE_star/(K_d + UbE_star);

  // Species initializations:
  cyclin = 100;
  dimer = 0;
  dimer_p = 0;
  p_dimer = 0;
  p_dimer_p = 0;
  cdc25_p = 0;
  wee1_p = 0;
  IE_p = 0;
  UbE_star = 0;

  // Compartment initializations:
  cytoplasm = 1;

  // Variable initializations:
  total_cdc2 = 100;
  total_cdc25 = 1;
  total_wee1 = 1;
  total_IE = 1;
  total_UbE = 1;
  V25_prime = 0.1;
  V25_double_prime = 2;
  Vwee_prime = 0.1;
  Vwee_double_prime = 1;
  V2_prime = 0.015;
  V2_double_prime = 1;
  k1AA = 1;
  k3 = 0.01;
  kinh = 0.025;
  kcak = 0.25;
  ka = 0.01;
  K_a = 0.1;
  kbPPase = 0.125;
  K_b = 0.1;
  ke = 0.0133;
  K_e = 0.3;
  kfPPase = 0.1;
  K_f = 0.3;
  kg = 0.0065;
  K_g = 0.01;
  khPPAse = 0.087;
  K_h = 0.01;
  kc = 0.1;
  K_c = 0.01;
  kd_anti_IE = 0.095;
  K_d = 0.01;

  // Other declarations:
  var k25, kwee, k2, total_cyclin, Y15P;
  const cytoplasm, total_cdc2, total_cdc25, total_wee1, total_IE, total_UbE;
  const V25_prime, V25_double_prime, Vwee_prime, Vwee_double_prime, V2_prime;
  const V2_double_prime, k1AA, k3, kinh, kcak, ka, K_a, kbPPase, K_b, ke;
  const K_e, kfPPase, K_f, kg, K_g, khPPAse, K_h, kc, K_c, kd_anti_IE, K_d;

  // Unit definitions:
  unit substance = 1e-9 mole;
  unit time_unit = 6e1 second;

  // Display Names:
  substance is "nanomole";
  time_unit is "minutes";
  dimer is "cyclin-cdc2 dimer";
  dimer_p is "Thr161 phosphorylated dimer(active MPF)";
  p_dimer is "Tyr15 phosphorylated dimer";
  p_dimer_p is "Thr161-Tyr15 phosphorylated dimer";
  cdc25_p is "phosphorylated cdc25";
  wee1_p is "phosphorylated wee1";
  IE_p is "phosphorylated intermediary enzyme";
  UbE_star is "ubiquitin conjugating enzyme";
  IE is "intermediary enzyme";
  UbE is "ubiquitin conjugating enzyme";
  R1 is "cyclin synthesis";
  R2 is "cyclin degradation";
  R3 is "cyclin-cdc2 dimer formation";
  R4 is "Thr161 dephosphorylation";
  R5 is "Tyr15 phosphorylation";
  R6 is "Thr161 phosphorylation";
  R7 is "cyclin degradation";
  R8 is "Tyr15 dephosphorylation";
  R9 is "Thr161 phosphorylation";
  R10 is "cyclin degradation";
  R11 is "Thr161 dephosphorylation";
  R12 is "Tyr15 phosphorylation";
  R13 is "Tyr15 dephosphorylation";
  R14 is "cyclin degradation";
  R15 is "cyclin degradation";
  R17 is "cdc25 activation";
  R18 is "cdc25 deactivation";
  R19 is "wee1 deactivation";
  R20 is "wee1 activation";
  R21 is "intermediary enzyme activation";
  R22 is "intermediary enzyme deactivation";
  R23 is "ubiquitin conjugating enzyme activation";
  R24 is "ubiquitin conjugating enzyme deactivation";
end
// -- End Antimony block

// -- Begin PhraSEDML block converted from main.xml
// Created by libphrasedml v1.0.9
// Models
extract_mod = model "novak"

// Simulations
sim1 = simulate uniform(0, 150, 1000)

// Tasks
extract_task = run sim1 on extract_mod

// Outputs
plot "Tot. Cyclin vs Act. MPF" total_cyclin vs dimer_p
plot "PPMPF vs Act. MPF" p_dimer_p vs dimer_p
plot "PPMPF vs Tot. Cyclin" p_dimer_p vs total_cyclin

plot "Time vs Act. MPF" time vs dimer_p

# plot "Total Cyclin vs Active MPF" dimer_p vs total_cyclin
plot "Time vs Tot. Cyclin" time vs total_cyclin

# plot "Inactive MPF vs Active MPF" dimer_p vs p_dimer_p
# plot "Inactive MPF vs Total Cyclin" total_cyclin vs p_dimer_p
plot "Time vs PPMPF" time vs p_dimer_p 
// -- End PhraSEDML block