Generated Code
The following is python code generated by the CellML API from this CellML file. (Back to language selection)
The raw code is available.
# Size of variable arrays: sizeAlgebraic = 122 sizeStates = 2 sizeConstants = 34 from math import * from numpy import * def createLegends(): legend_states = [""] * sizeStates legend_rates = [""] * sizeStates legend_algebraic = [""] * sizeAlgebraic legend_voi = "" legend_constants = [""] * sizeConstants legend_constants[0] = "k1_m in component gas_exchange (dimensionless)" legend_constants[1] = "k1_81m in component gas_exchange (dimensionless)" legend_constants[2] = "k2_m in component gas_exchange (dimensionless)" legend_constants[3] = "k3_m in component gas_exchange (dimensionless)" legend_constants[4] = "K3_81m in component gas_exchange (dimensionless)" legend_constants[5] = "k4_m in component gas_exchange (dimensionless)" legend_constants[6] = "pH_m in component gas_exchange (dimensionless)" legend_constants[7] = "k1_f in component gas_exchange (dimensionless)" legend_constants[8] = "k2_f in component gas_exchange (dimensionless)" legend_constants[9] = "k3_f in component gas_exchange (dimensionless)" legend_constants[10] = "k4_f in component gas_exchange (dimensionless)" legend_constants[11] = "pH_f in component gas_exchange (dimensionless)" legend_states[0] = "Pin_m in component gas_exchange (mmHg)" legend_states[1] = "Pin_f in component gas_exchange (mmHg)" legend_algebraic[0] = "x_m in component gas_exchange (dimensionless)" legend_algebraic[1] = "x_m1 in component gas_exchange (dimensionless)" legend_algebraic[3] = "x_f in component gas_exchange (dimensionless)" legend_algebraic[4] = "x_f1 in component gas_exchange (dimensionless)" legend_algebraic[2] = "S_m in component gas_exchange (dimensionless)" legend_algebraic[5] = "S_f in component gas_exchange (dimensionless)" legend_voi = "t in component gas_exchange (second)" legend_algebraic[6] = "O2_m in component gas_exchange (ml_per_ml)" legend_algebraic[7] = "O2_f in component gas_exchange (ml_per_ml)" legend_constants[12] = "Hb_m in component gas_exchange (dimensionless)" legend_constants[13] = "Hb_f in component gas_exchange (dimensionless)" legend_constants[14] = "a in component gas_exchange (dimensionless)" legend_constants[15] = "ks_m in component gas_exchange (dimensionless)" legend_constants[16] = "ks_f in component gas_exchange (dimensionless)" legend_constants[17] = "kh in component gas_exchange (dimensionless)" legend_constants[18] = "B in component gas_exchange (dimensionless)" legend_constants[19] = "V_m in component gas_exchange (ml)" legend_constants[20] = "V_f in component gas_exchange (ml)" legend_constants[21] = "Q_m in component gas_exchange (ml_per_min)" legend_constants[22] = "Q_f in component gas_exchange (ml_per_min)" legend_constants[23] = "Dm in component gas_exchange (ml_per_ml_min_mmHg)" legend_constants[24] = "c1 in component gas_exchange (dimensionless)" legend_constants[25] = "c2 in component gas_exchange (dimensionless)" legend_constants[26] = "c3 in component gas_exchange (dimensionless)" legend_constants[27] = "c4 in component gas_exchange (dimensionless)" legend_algebraic[10] = "theta_m in component gas_exchange (dimensionless)" legend_algebraic[13] = "theta_f in component gas_exchange (dimensionless)" legend_algebraic[8] = "x1_m in component gas_exchange (dimensionless)" legend_algebraic[11] = "x1_f in component gas_exchange (dimensionless)" legend_algebraic[14] = "R_m in component gas_exchange (dimensionless)" legend_algebraic[15] = "R_f in component gas_exchange (dimensionless)" legend_constants[28] = "R_p in component gas_exchange (dimensionless)" legend_algebraic[16] = "R_t in component gas_exchange (dimensionless)" legend_algebraic[17] = "Dp in component gas_exchange (dimensionless)" legend_algebraic[18] = "dodt_m in component gas_exchange (dimensionless)" legend_algebraic[19] = "dodt_f in component gas_exchange (dimensionless)" legend_algebraic[20] = "O2_mnew in component gas_exchange (ml_per_ml)" legend_algebraic[21] = "O2_fnew in component gas_exchange (ml_per_ml)" legend_algebraic[22] = "f_m in component gas_exchange (dimensionless)" legend_algebraic[23] = "f_f in component gas_exchange (dimensionless)" legend_algebraic[24] = "upper_m in component gas_exchange (dimensionless)" legend_algebraic[25] = "lower_m in component gas_exchange (dimensionless)" legend_algebraic[27] = "upper_f in component gas_exchange (dimensionless)" legend_algebraic[28] = "lower_f in component gas_exchange (dimensionless)" legend_algebraic[29] = "dfdP_f in component gas_exchange (dimensionless)" legend_algebraic[26] = "dfdP_m in component gas_exchange (dimensionless)" legend_constants[29] = "tt in component gas_exchange (second)" legend_constants[30] = "dt in component gas_exchange (second)" legend_algebraic[30] = "Pend1_m in component gas_exchange (mmHg)" legend_algebraic[31] = "Pend1_f in component gas_exchange (mmHg)" legend_algebraic[9] = "theta_96_m in component gas_exchange (dimensionless)" legend_algebraic[12] = "theta_96_f in component gas_exchange (dimensionless)" legend_algebraic[32] = "x_m_sec in component gas_exchange (dimensionless)" legend_algebraic[33] = "x_m1_sec in component gas_exchange (dimensionless)" legend_algebraic[34] = "S_m_sec in component gas_exchange (dimensionless)" legend_algebraic[35] = "x_f_sec in component gas_exchange (dimensionless)" legend_algebraic[36] = "x_f1_sec in component gas_exchange (dimensionless)" legend_algebraic[37] = "S_f_sec in component gas_exchange (dimensionless)" legend_algebraic[39] = "theta_96_m_sec in component gas_exchange (dimensionless)" legend_algebraic[42] = "theta_96_f_sec in component gas_exchange (dimensionless)" legend_algebraic[38] = "x1_m_sec in component gas_exchange (dimensionless)" legend_algebraic[40] = "theta_m_sec in component gas_exchange (dimensionless)" legend_algebraic[41] = "x1_f_sec in component gas_exchange (dimensionless)" legend_algebraic[43] = "theta_f_sec in component gas_exchange (dimensionless)" legend_algebraic[44] = "R_m_sec in component gas_exchange (dimensionless)" legend_algebraic[45] = "R_f_sec in component gas_exchange (dimensionless)" legend_constants[31] = "R_p_sec in component gas_exchange (dimensionless)" legend_algebraic[46] = "R_t_sec in component gas_exchange (dimensionless)" legend_algebraic[47] = "Dp_sec in component gas_exchange (dimensionless)" legend_algebraic[48] = "dodt_m_sec in component gas_exchange (dimensionless)" legend_algebraic[49] = "dodt_f_sec in component gas_exchange (dimensionless)" legend_algebraic[50] = "O2_mnew_sec in component gas_exchange (ml_per_ml)" legend_algebraic[51] = "O2_fnew_sec in component gas_exchange (ml_per_ml)" legend_algebraic[52] = "f_m_sec in component gas_exchange (dimensionless)" legend_algebraic[53] = "f_f_sec in component gas_exchange (dimensionless)" legend_algebraic[54] = "upper_m_sec in component gas_exchange (dimensionless)" legend_algebraic[55] = "lower_m_sec in component gas_exchange (dimensionless)" legend_algebraic[56] = "dfdP_m_sec in component gas_exchange (dimensionless)" legend_algebraic[57] = "upper_f_sec in component gas_exchange (dimensionless)" legend_algebraic[58] = "lower_f_sec in component gas_exchange (dimensionless)" legend_algebraic[59] = "dfdP_f_sec in component gas_exchange (dimensionless)" legend_algebraic[60] = "Pend2_m in component gas_exchange (mmHg)" legend_algebraic[61] = "Pend2_f in component gas_exchange (mmHg)" legend_algebraic[62] = "x_m_trd in component gas_exchange (dimensionless)" legend_algebraic[63] = "x_m1_trd in component gas_exchange (dimensionless)" legend_algebraic[64] = "S_m_trd in component gas_exchange (dimensionless)" legend_algebraic[65] = "x_f_trd in component gas_exchange (dimensionless)" legend_algebraic[66] = "x_f1_trd in component gas_exchange (dimensionless)" legend_algebraic[67] = "S_f_trd in component gas_exchange (dimensionless)" legend_algebraic[69] = "theta_96_m_trd in component gas_exchange (dimensionless)" legend_algebraic[72] = "theta_96_f_trd in component gas_exchange (dimensionless)" legend_algebraic[68] = "x1_m_trd in component gas_exchange (dimensionless)" legend_algebraic[70] = "theta_m_trd in component gas_exchange (dimensionless)" legend_algebraic[71] = "x1_f_trd in component gas_exchange (dimensionless)" legend_algebraic[73] = "theta_f_trd in component gas_exchange (dimensionless)" legend_algebraic[74] = "R_m_trd in component gas_exchange (dimensionless)" legend_algebraic[75] = "R_f_trd in component gas_exchange (dimensionless)" legend_constants[32] = "R_p_trd in component gas_exchange (dimensionless)" legend_algebraic[76] = "R_t_trd in component gas_exchange (dimensionless)" legend_algebraic[77] = "Dp_trd in component gas_exchange (dimensionless)" legend_algebraic[78] = "dodt_m_trd in component gas_exchange (dimensionless)" legend_algebraic[79] = "dodt_f_trd in component gas_exchange (dimensionless)" legend_algebraic[80] = "O2_mnew_trd in component gas_exchange (ml_per_ml)" legend_algebraic[81] = "O2_fnew_trd in component gas_exchange (ml_per_ml)" legend_algebraic[82] = "f_m_trd in component gas_exchange (dimensionless)" legend_algebraic[83] = "f_f_trd in component gas_exchange (dimensionless)" legend_algebraic[84] = "upper_m_trd in component gas_exchange (dimensionless)" legend_algebraic[85] = "lower_m_trd in component gas_exchange (dimensionless)" legend_algebraic[86] = "dfdP_m_trd in component gas_exchange (dimensionless)" legend_algebraic[87] = "upper_f_trd in component gas_exchange (dimensionless)" legend_algebraic[88] = "lower_f_trd in component gas_exchange (dimensionless)" legend_algebraic[89] = "dfdP_f_trd in component gas_exchange (dimensionless)" legend_algebraic[90] = "Pend3_m in component gas_exchange (mmHg)" legend_algebraic[91] = "Pend3_f in component gas_exchange (mmHg)" legend_algebraic[92] = "x_m_for in component gas_exchange (dimensionless)" legend_algebraic[93] = "x_m1_for in component gas_exchange (dimensionless)" legend_algebraic[94] = "S_m_for in component gas_exchange (dimensionless)" legend_algebraic[95] = "x_f_for in component gas_exchange (dimensionless)" legend_algebraic[96] = "x_f1_for in component gas_exchange (dimensionless)" legend_algebraic[97] = "S_f_for in component gas_exchange (dimensionless)" legend_algebraic[99] = "theta_96_m_for in component gas_exchange (dimensionless)" legend_algebraic[102] = "theta_96_f_for in component gas_exchange (dimensionless)" legend_algebraic[98] = "x1_m_for in component gas_exchange (dimensionless)" legend_algebraic[100] = "theta_m_for in component gas_exchange (dimensionless)" legend_algebraic[101] = "x1_f_for in component gas_exchange (dimensionless)" legend_algebraic[103] = "theta_f_for in component gas_exchange (dimensionless)" legend_algebraic[104] = "R_m_for in component gas_exchange (dimensionless)" legend_algebraic[105] = "R_f_for in component gas_exchange (dimensionless)" legend_constants[33] = "R_p_for in component gas_exchange (dimensionless)" legend_algebraic[106] = "R_t_for in component gas_exchange (dimensionless)" legend_algebraic[107] = "Dp_for in component gas_exchange (dimensionless)" legend_algebraic[108] = "dodt_m_for in component gas_exchange (dimensionless)" legend_algebraic[110] = "dodt_f_for in component gas_exchange (dimensionless)" legend_algebraic[109] = "O2_mnew_final in component gas_exchange (ml_per_ml)" legend_algebraic[112] = "O2_fnew_final in component gas_exchange (ml_per_ml)" legend_algebraic[111] = "f_m_final in component gas_exchange (dimensionless)" legend_algebraic[114] = "f_f_final in component gas_exchange (dimensionless)" legend_algebraic[113] = "upper_m_final in component gas_exchange (dimensionless)" legend_algebraic[115] = "lower_m_final in component gas_exchange (dimensionless)" legend_algebraic[117] = "dfdP_m_final in component gas_exchange (dimensionless)" legend_algebraic[116] = "upper_f_final in component gas_exchange (dimensionless)" legend_algebraic[118] = "lower_f_final in component gas_exchange (dimensionless)" legend_algebraic[119] = "dfdP_f_final in component gas_exchange (dimensionless)" legend_algebraic[120] = "Pfinal_m in component gas_exchange (mmHg)" legend_algebraic[121] = "Pfinal_f in component gas_exchange (mmHg)" legend_rates[0] = "d/dt Pin_m in component gas_exchange (mmHg)" legend_rates[1] = "d/dt Pin_f in component gas_exchange (mmHg)" return (legend_states, legend_algebraic, legend_voi, legend_constants) def initConsts(): constants = [0.0] * sizeConstants; states = [0.0] * sizeStates; constants[0] = 1.4452 constants[1] = 1.4452 constants[2] = 0.456 constants[3] = 0.3711 constants[4] = 0.3711 constants[5] = 7.8322e+03 constants[6] = 7.4 constants[7] = 1.302 constants[8] = 0.464 constants[9] = 0.395 constants[10] = 2.2643e+03 constants[11] = 7.35 states[0] = 33 states[1] = 15 constants[12] = 12.5 constants[13] = 15.5 constants[14] = 3.0263e-05 constants[15] = 164 constants[16] = 164 constants[17] = 164 constants[18] = 1 constants[19] = 4.89e-7 constants[20] = 4.89e-7 constants[21] = 1.2014e-04 constants[22] = 1.2014e-04 constants[23] = 6.21 constants[24] = 3.287 constants[25] = 0.1117 constants[26] = 7.05e-3 constants[27] = 0.8142 constants[28] = 1.00000/constants[23] constants[29] = constants[20]/(constants[22]/60.0000) constants[30] = constants[29]/100.000 constants[31] = 1.00000/constants[23] constants[32] = 1.00000/constants[23] constants[33] = 1.00000/constants[23] return (states, constants) def computeRates(voi, states, constants): rates = [0.0] * sizeStates; algebraic = [0.0] * sizeAlgebraic algebraic[6] = ((1.34000*constants[12])/100.000)/(constants[5]*(power(states[0], -1.00000/constants[3]))+1.00000)+constants[14]*states[0] algebraic[0] = ((log(states[0], 10)-constants[0])+constants[2]*(constants[6]-7.40000))/constants[3] algebraic[1] = power(10.0000, algebraic[0]) algebraic[2] = (100.000*algebraic[1])/(1.00000+algebraic[1]) algebraic[8] = custom_piecewise([greater(algebraic[2] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[2]))]) algebraic[9] = (((((((constants[24]*(1.00000-algebraic[8])+constants[26]*algebraic[2])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17] algebraic[10] = custom_piecewise([greater(algebraic[2] , 96.0000), algebraic[9]-(algebraic[9]*(96.0000-algebraic[2]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[8])+constants[26]*algebraic[2])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17]]) algebraic[14] = 1.00000/(algebraic[10]*constants[19]) algebraic[3] = ((log(states[1], 10)-constants[7])+constants[8]*(constants[11]-7.40000))/constants[9] algebraic[4] = power(10.0000, algebraic[3]) algebraic[5] = (100.000*algebraic[4])/(1.00000+algebraic[4]) algebraic[11] = custom_piecewise([greater(algebraic[5] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[5]))]) algebraic[12] = (((((((constants[24]*(1.00000-algebraic[11])+constants[26]*algebraic[5])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17] algebraic[13] = custom_piecewise([greater(algebraic[5] , 96.0000), algebraic[12]-(algebraic[12]*(96.0000-algebraic[5]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[11])+constants[26]*algebraic[5])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17]]) algebraic[15] = 1.00000/(algebraic[13]*constants[20]) algebraic[16] = algebraic[14]+algebraic[15]+constants[28] algebraic[17] = (1.00000/algebraic[16])/60.0000 algebraic[18] = (constants[18]*-1.00000*algebraic[17]*(states[0]-states[1]))/constants[19] algebraic[20] = algebraic[6]+(algebraic[18]*constants[30])/2.00000 algebraic[22] = (((1.34000*constants[12])/100.000)/(constants[5]*(power(states[0], -1.00000/constants[3]))+1.00000)+constants[14]*states[0])-algebraic[20] algebraic[24] = 1.34000*constants[12]*constants[5]*(power(states[0], -1.00000/constants[3]-1.00000)) algebraic[25] = 100.000*constants[3]*(power(constants[5]*(power(states[0], -1.00000/constants[3]))+1.00000, 2.00000)) algebraic[26] = algebraic[24]/algebraic[25]+constants[14] algebraic[30] = states[0]-algebraic[22]/algebraic[26] algebraic[7] = ((1.34000*constants[13])/100.000)/(constants[10]*(power(states[1], -1.00000/constants[9]))+1.00000)+constants[14]*states[1] algebraic[19] = (((-1.00000/constants[18])*constants[19])/constants[20])*algebraic[18] algebraic[21] = algebraic[7]+(algebraic[19]*constants[30])/2.00000 algebraic[23] = (((1.34000*constants[13])/100.000)/(constants[10]*(power(states[1], -1.00000/constants[9]))+1.00000)+constants[14]*states[1])-algebraic[21] algebraic[27] = 1.34000*constants[13]*constants[10]*(power(states[1], -1.00000/constants[9]-1.00000)) algebraic[28] = 100.000*constants[9]*(power(constants[10]*(power(states[1], -1.00000/constants[9]))+1.00000, 2.00000)) algebraic[29] = algebraic[27]/algebraic[28]+constants[14] algebraic[31] = states[1]-algebraic[23]/algebraic[29] algebraic[32] = ((log(algebraic[30], 10)-constants[0])+constants[2]*(constants[6]-7.40000))/constants[3] algebraic[33] = power(10.0000, algebraic[32]) algebraic[34] = (100.000*algebraic[33])/(1.00000+algebraic[33]) algebraic[38] = custom_piecewise([greater(algebraic[34] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[34]))]) algebraic[39] = (((((((constants[24]*(1.00000-algebraic[38])+constants[26]*algebraic[34])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17] algebraic[40] = custom_piecewise([greater(algebraic[34] , 96.0000), algebraic[39]-(algebraic[39]*(96.0000-algebraic[34]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[38])+constants[26]*algebraic[34])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17]]) algebraic[44] = 1.00000/(algebraic[40]*constants[19]) algebraic[35] = ((log(algebraic[31], 10)-constants[7])+constants[8]*(constants[11]-7.40000))/constants[9] algebraic[36] = power(10.0000, algebraic[35]) algebraic[37] = (100.000*algebraic[36])/(1.00000+algebraic[36]) algebraic[41] = custom_piecewise([greater(algebraic[37] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[37]))]) algebraic[42] = (((((((constants[24]*(1.00000-algebraic[41])+constants[26]*algebraic[37])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17] algebraic[43] = custom_piecewise([greater(algebraic[37] , 96.0000), algebraic[42]-(algebraic[42]*(96.0000-algebraic[37]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[41])+constants[26]*algebraic[37])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17]]) algebraic[45] = 1.00000/(algebraic[43]*constants[20]) algebraic[46] = algebraic[44]+algebraic[45]+constants[31] algebraic[47] = (1.00000/algebraic[46])/60.0000 algebraic[48] = (constants[18]*-1.00000*algebraic[47]*(algebraic[30]-algebraic[31]))/constants[19] algebraic[50] = algebraic[6]+(algebraic[48]*constants[30])/2.00000 algebraic[52] = (((1.34000*constants[12])/100.000)/(constants[5]*(power(algebraic[30], -1.00000/constants[3]))+1.00000)+constants[14]*algebraic[30])-algebraic[50] algebraic[54] = 1.34000*constants[12]*constants[5]*(power(algebraic[30], -1.00000/constants[3]-1.00000)) algebraic[55] = 100.000*constants[3]*(power(constants[5]*(power(algebraic[30], -1.00000/constants[3]))+1.00000, 2.00000)) algebraic[56] = algebraic[54]/algebraic[55]+constants[14] algebraic[60] = algebraic[30]-algebraic[52]/algebraic[56] algebraic[49] = (((-1.00000/constants[18])*constants[19])/constants[20])*algebraic[48] algebraic[51] = algebraic[7]+(algebraic[49]*constants[30])/2.00000 algebraic[53] = (((1.34000*constants[13])/100.000)/(constants[10]*(power(algebraic[31], -1.00000/constants[9]))+1.00000)+constants[14]*algebraic[31])-algebraic[51] algebraic[57] = 1.34000*constants[13]*constants[10]*(power(algebraic[31], -1.00000/constants[9]-1.00000)) algebraic[58] = 100.000*constants[9]*(power(constants[10]*(power(algebraic[31], -1.00000/constants[9]))+1.00000, 2.00000)) algebraic[59] = algebraic[57]/algebraic[58]+constants[14] algebraic[61] = algebraic[31]-algebraic[53]/algebraic[59] algebraic[62] = ((log(algebraic[60], 10)-constants[0])+constants[2]*(constants[6]-7.40000))/constants[3] algebraic[63] = power(10.0000, algebraic[62]) algebraic[64] = (100.000*algebraic[63])/(1.00000+algebraic[63]) algebraic[68] = custom_piecewise([greater(algebraic[64] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[64]))]) algebraic[69] = (((((((constants[24]*(1.00000-algebraic[68])+constants[26]*algebraic[64])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17] algebraic[70] = custom_piecewise([greater(algebraic[64] , 96.0000), algebraic[69]-(algebraic[69]*(96.0000-algebraic[64]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[68])+constants[26]*algebraic[64])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17]]) algebraic[74] = 1.00000/(algebraic[70]*constants[19]) algebraic[65] = ((log(algebraic[61], 10)-constants[7])+constants[8]*(constants[11]-7.40000))/constants[9] algebraic[66] = power(10.0000, algebraic[65]) algebraic[67] = (100.000*algebraic[66])/(1.00000+algebraic[66]) algebraic[71] = custom_piecewise([greater(algebraic[67] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[67]))]) algebraic[72] = (((((((constants[24]*(1.00000-algebraic[71])+constants[26]*algebraic[67])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17] algebraic[73] = custom_piecewise([greater(algebraic[67] , 96.0000), algebraic[72]-(algebraic[72]*(96.0000-algebraic[67]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[71])+constants[26]*algebraic[67])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17]]) algebraic[75] = 1.00000/(algebraic[73]*constants[20]) algebraic[76] = algebraic[74]+algebraic[75]+constants[32] algebraic[77] = (1.00000/algebraic[76])/60.0000 algebraic[78] = (constants[18]*-1.00000*algebraic[77]*(algebraic[60]-algebraic[61]))/constants[19] algebraic[80] = algebraic[6]+algebraic[78]*constants[30] algebraic[82] = (((1.34000*constants[12])/100.000)/(constants[5]*(power(algebraic[60], -1.00000/constants[3]))+1.00000)+constants[14]*algebraic[60])-algebraic[80] algebraic[84] = 1.34000*constants[12]*constants[5]*(power(algebraic[60], -1.00000/constants[3]-1.00000)) algebraic[85] = 100.000*constants[3]*(power(constants[5]*(power(algebraic[60], -1.00000/constants[3]))+1.00000, 2.00000)) algebraic[86] = algebraic[84]/algebraic[85]+constants[14] algebraic[90] = algebraic[60]-algebraic[82]/algebraic[86] algebraic[79] = (((-1.00000/constants[18])*constants[19])/constants[20])*algebraic[78] algebraic[81] = algebraic[7]+algebraic[79]*constants[30] algebraic[83] = (((1.34000*constants[13])/100.000)/(constants[10]*(power(algebraic[61], -1.00000/constants[9]))+1.00000)+constants[14]*algebraic[61])-algebraic[81] algebraic[87] = 1.34000*constants[13]*constants[10]*(power(algebraic[61], -1.00000/constants[9]-1.00000)) algebraic[88] = 100.000*constants[9]*(power(constants[10]*(power(algebraic[61], -1.00000/constants[9]))+1.00000, 2.00000)) algebraic[89] = algebraic[87]/algebraic[88]+constants[14] algebraic[91] = algebraic[61]-algebraic[83]/algebraic[89] algebraic[92] = ((log(algebraic[90], 10)-constants[0])+constants[2]*(constants[6]-7.40000))/constants[3] algebraic[93] = power(10.0000, algebraic[92]) algebraic[94] = (100.000*algebraic[93])/(1.00000+algebraic[93]) algebraic[98] = custom_piecewise([greater(algebraic[94] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[94]))]) algebraic[99] = (((((((constants[24]*(1.00000-algebraic[98])+constants[26]*algebraic[94])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17] algebraic[100] = custom_piecewise([greater(algebraic[94] , 96.0000), algebraic[99]-(algebraic[99]*(96.0000-algebraic[94]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[98])+constants[26]*algebraic[94])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17]]) algebraic[104] = 1.00000/(algebraic[100]*constants[19]) algebraic[95] = ((log(algebraic[91], 10)-constants[7])+constants[8]*(constants[11]-7.40000))/constants[9] algebraic[96] = power(10.0000, algebraic[95]) algebraic[97] = (100.000*algebraic[96])/(1.00000+algebraic[96]) algebraic[101] = custom_piecewise([greater(algebraic[97] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[97]))]) algebraic[102] = (((((((constants[24]*(1.00000-algebraic[101])+constants[26]*algebraic[97])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17] algebraic[103] = custom_piecewise([greater(algebraic[97] , 96.0000), algebraic[102]-(algebraic[102]*(96.0000-algebraic[97]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[101])+constants[26]*algebraic[97])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17]]) algebraic[105] = 1.00000/(algebraic[103]*constants[20]) algebraic[106] = algebraic[104]+algebraic[105]+constants[33] algebraic[107] = (1.00000/algebraic[106])/60.0000 algebraic[108] = (constants[18]*-1.00000*algebraic[107]*(algebraic[90]-algebraic[91]))/constants[19] algebraic[109] = algebraic[6]+(1.00000/6.00000)*(algebraic[18]+2.00000*algebraic[48]+2.00000*algebraic[78]+algebraic[108])*constants[30] algebraic[111] = (((1.34000*constants[12])/100.000)/(constants[5]*(power(algebraic[90], -1.00000/constants[3]))+1.00000)+constants[14]*algebraic[90])-algebraic[109] algebraic[113] = 1.34000*constants[12]*constants[5]*(power(algebraic[90], -1.00000/constants[3]-1.00000)) algebraic[115] = 100.000*constants[3]*(power(constants[5]*(power(algebraic[90], -1.00000/constants[3]))+1.00000, 2.00000)) algebraic[117] = algebraic[113]/algebraic[115]+constants[14] algebraic[120] = algebraic[90]-algebraic[111]/algebraic[117] rates[0] = (algebraic[120]-states[0])/constants[30] algebraic[110] = (((-1.00000/constants[18])*constants[19])/constants[20])*algebraic[108] algebraic[112] = algebraic[7]+(1.00000/6.00000)*(algebraic[19]+2.00000*algebraic[49]+2.00000*algebraic[79]+algebraic[110])*constants[30] algebraic[114] = (((1.34000*constants[13])/100.000)/(constants[10]*(power(algebraic[91], -1.00000/constants[9]))+1.00000)+constants[14]*algebraic[91])-algebraic[112] algebraic[116] = 1.34000*constants[13]*constants[10]*(power(algebraic[91], -1.00000/constants[9]-1.00000)) algebraic[118] = 100.000*constants[9]*(power(constants[10]*(power(algebraic[91], -1.00000/constants[9]))+1.00000, 2.00000)) algebraic[119] = algebraic[116]/algebraic[118]+constants[14] algebraic[121] = algebraic[91]-algebraic[114]/algebraic[119] rates[1] = (algebraic[121]-states[1])/constants[30] return(rates) def computeAlgebraic(constants, states, voi): algebraic = array([[0.0] * len(voi)] * sizeAlgebraic) states = array(states) voi = array(voi) algebraic[6] = ((1.34000*constants[12])/100.000)/(constants[5]*(power(states[0], -1.00000/constants[3]))+1.00000)+constants[14]*states[0] algebraic[0] = ((log(states[0], 10)-constants[0])+constants[2]*(constants[6]-7.40000))/constants[3] algebraic[1] = power(10.0000, algebraic[0]) algebraic[2] = (100.000*algebraic[1])/(1.00000+algebraic[1]) algebraic[8] = custom_piecewise([greater(algebraic[2] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[2]))]) algebraic[9] = (((((((constants[24]*(1.00000-algebraic[8])+constants[26]*algebraic[2])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17] algebraic[10] = custom_piecewise([greater(algebraic[2] , 96.0000), algebraic[9]-(algebraic[9]*(96.0000-algebraic[2]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[8])+constants[26]*algebraic[2])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17]]) algebraic[14] = 1.00000/(algebraic[10]*constants[19]) algebraic[3] = ((log(states[1], 10)-constants[7])+constants[8]*(constants[11]-7.40000))/constants[9] algebraic[4] = power(10.0000, algebraic[3]) algebraic[5] = (100.000*algebraic[4])/(1.00000+algebraic[4]) algebraic[11] = custom_piecewise([greater(algebraic[5] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[5]))]) algebraic[12] = (((((((constants[24]*(1.00000-algebraic[11])+constants[26]*algebraic[5])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17] algebraic[13] = custom_piecewise([greater(algebraic[5] , 96.0000), algebraic[12]-(algebraic[12]*(96.0000-algebraic[5]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[11])+constants[26]*algebraic[5])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17]]) algebraic[15] = 1.00000/(algebraic[13]*constants[20]) algebraic[16] = algebraic[14]+algebraic[15]+constants[28] algebraic[17] = (1.00000/algebraic[16])/60.0000 algebraic[18] = (constants[18]*-1.00000*algebraic[17]*(states[0]-states[1]))/constants[19] algebraic[20] = algebraic[6]+(algebraic[18]*constants[30])/2.00000 algebraic[22] = (((1.34000*constants[12])/100.000)/(constants[5]*(power(states[0], -1.00000/constants[3]))+1.00000)+constants[14]*states[0])-algebraic[20] algebraic[24] = 1.34000*constants[12]*constants[5]*(power(states[0], -1.00000/constants[3]-1.00000)) algebraic[25] = 100.000*constants[3]*(power(constants[5]*(power(states[0], -1.00000/constants[3]))+1.00000, 2.00000)) algebraic[26] = algebraic[24]/algebraic[25]+constants[14] algebraic[30] = states[0]-algebraic[22]/algebraic[26] algebraic[7] = ((1.34000*constants[13])/100.000)/(constants[10]*(power(states[1], -1.00000/constants[9]))+1.00000)+constants[14]*states[1] algebraic[19] = (((-1.00000/constants[18])*constants[19])/constants[20])*algebraic[18] algebraic[21] = algebraic[7]+(algebraic[19]*constants[30])/2.00000 algebraic[23] = (((1.34000*constants[13])/100.000)/(constants[10]*(power(states[1], -1.00000/constants[9]))+1.00000)+constants[14]*states[1])-algebraic[21] algebraic[27] = 1.34000*constants[13]*constants[10]*(power(states[1], -1.00000/constants[9]-1.00000)) algebraic[28] = 100.000*constants[9]*(power(constants[10]*(power(states[1], -1.00000/constants[9]))+1.00000, 2.00000)) algebraic[29] = algebraic[27]/algebraic[28]+constants[14] algebraic[31] = states[1]-algebraic[23]/algebraic[29] algebraic[32] = ((log(algebraic[30], 10)-constants[0])+constants[2]*(constants[6]-7.40000))/constants[3] algebraic[33] = power(10.0000, algebraic[32]) algebraic[34] = (100.000*algebraic[33])/(1.00000+algebraic[33]) algebraic[38] = custom_piecewise([greater(algebraic[34] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[34]))]) algebraic[39] = (((((((constants[24]*(1.00000-algebraic[38])+constants[26]*algebraic[34])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17] algebraic[40] = custom_piecewise([greater(algebraic[34] , 96.0000), algebraic[39]-(algebraic[39]*(96.0000-algebraic[34]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[38])+constants[26]*algebraic[34])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17]]) algebraic[44] = 1.00000/(algebraic[40]*constants[19]) algebraic[35] = ((log(algebraic[31], 10)-constants[7])+constants[8]*(constants[11]-7.40000))/constants[9] algebraic[36] = power(10.0000, algebraic[35]) algebraic[37] = (100.000*algebraic[36])/(1.00000+algebraic[36]) algebraic[41] = custom_piecewise([greater(algebraic[37] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[37]))]) algebraic[42] = (((((((constants[24]*(1.00000-algebraic[41])+constants[26]*algebraic[37])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17] algebraic[43] = custom_piecewise([greater(algebraic[37] , 96.0000), algebraic[42]-(algebraic[42]*(96.0000-algebraic[37]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[41])+constants[26]*algebraic[37])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17]]) algebraic[45] = 1.00000/(algebraic[43]*constants[20]) algebraic[46] = algebraic[44]+algebraic[45]+constants[31] algebraic[47] = (1.00000/algebraic[46])/60.0000 algebraic[48] = (constants[18]*-1.00000*algebraic[47]*(algebraic[30]-algebraic[31]))/constants[19] algebraic[50] = algebraic[6]+(algebraic[48]*constants[30])/2.00000 algebraic[52] = (((1.34000*constants[12])/100.000)/(constants[5]*(power(algebraic[30], -1.00000/constants[3]))+1.00000)+constants[14]*algebraic[30])-algebraic[50] algebraic[54] = 1.34000*constants[12]*constants[5]*(power(algebraic[30], -1.00000/constants[3]-1.00000)) algebraic[55] = 100.000*constants[3]*(power(constants[5]*(power(algebraic[30], -1.00000/constants[3]))+1.00000, 2.00000)) algebraic[56] = algebraic[54]/algebraic[55]+constants[14] algebraic[60] = algebraic[30]-algebraic[52]/algebraic[56] algebraic[49] = (((-1.00000/constants[18])*constants[19])/constants[20])*algebraic[48] algebraic[51] = algebraic[7]+(algebraic[49]*constants[30])/2.00000 algebraic[53] = (((1.34000*constants[13])/100.000)/(constants[10]*(power(algebraic[31], -1.00000/constants[9]))+1.00000)+constants[14]*algebraic[31])-algebraic[51] algebraic[57] = 1.34000*constants[13]*constants[10]*(power(algebraic[31], -1.00000/constants[9]-1.00000)) algebraic[58] = 100.000*constants[9]*(power(constants[10]*(power(algebraic[31], -1.00000/constants[9]))+1.00000, 2.00000)) algebraic[59] = algebraic[57]/algebraic[58]+constants[14] algebraic[61] = algebraic[31]-algebraic[53]/algebraic[59] algebraic[62] = ((log(algebraic[60], 10)-constants[0])+constants[2]*(constants[6]-7.40000))/constants[3] algebraic[63] = power(10.0000, algebraic[62]) algebraic[64] = (100.000*algebraic[63])/(1.00000+algebraic[63]) algebraic[68] = custom_piecewise([greater(algebraic[64] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[64]))]) algebraic[69] = (((((((constants[24]*(1.00000-algebraic[68])+constants[26]*algebraic[64])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17] algebraic[70] = custom_piecewise([greater(algebraic[64] , 96.0000), algebraic[69]-(algebraic[69]*(96.0000-algebraic[64]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[68])+constants[26]*algebraic[64])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17]]) algebraic[74] = 1.00000/(algebraic[70]*constants[19]) algebraic[65] = ((log(algebraic[61], 10)-constants[7])+constants[8]*(constants[11]-7.40000))/constants[9] algebraic[66] = power(10.0000, algebraic[65]) algebraic[67] = (100.000*algebraic[66])/(1.00000+algebraic[66]) algebraic[71] = custom_piecewise([greater(algebraic[67] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[67]))]) algebraic[72] = (((((((constants[24]*(1.00000-algebraic[71])+constants[26]*algebraic[67])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17] algebraic[73] = custom_piecewise([greater(algebraic[67] , 96.0000), algebraic[72]-(algebraic[72]*(96.0000-algebraic[67]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[71])+constants[26]*algebraic[67])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17]]) algebraic[75] = 1.00000/(algebraic[73]*constants[20]) algebraic[76] = algebraic[74]+algebraic[75]+constants[32] algebraic[77] = (1.00000/algebraic[76])/60.0000 algebraic[78] = (constants[18]*-1.00000*algebraic[77]*(algebraic[60]-algebraic[61]))/constants[19] algebraic[80] = algebraic[6]+algebraic[78]*constants[30] algebraic[82] = (((1.34000*constants[12])/100.000)/(constants[5]*(power(algebraic[60], -1.00000/constants[3]))+1.00000)+constants[14]*algebraic[60])-algebraic[80] algebraic[84] = 1.34000*constants[12]*constants[5]*(power(algebraic[60], -1.00000/constants[3]-1.00000)) algebraic[85] = 100.000*constants[3]*(power(constants[5]*(power(algebraic[60], -1.00000/constants[3]))+1.00000, 2.00000)) algebraic[86] = algebraic[84]/algebraic[85]+constants[14] algebraic[90] = algebraic[60]-algebraic[82]/algebraic[86] algebraic[79] = (((-1.00000/constants[18])*constants[19])/constants[20])*algebraic[78] algebraic[81] = algebraic[7]+algebraic[79]*constants[30] algebraic[83] = (((1.34000*constants[13])/100.000)/(constants[10]*(power(algebraic[61], -1.00000/constants[9]))+1.00000)+constants[14]*algebraic[61])-algebraic[81] algebraic[87] = 1.34000*constants[13]*constants[10]*(power(algebraic[61], -1.00000/constants[9]-1.00000)) algebraic[88] = 100.000*constants[9]*(power(constants[10]*(power(algebraic[61], -1.00000/constants[9]))+1.00000, 2.00000)) algebraic[89] = algebraic[87]/algebraic[88]+constants[14] algebraic[91] = algebraic[61]-algebraic[83]/algebraic[89] algebraic[92] = ((log(algebraic[90], 10)-constants[0])+constants[2]*(constants[6]-7.40000))/constants[3] algebraic[93] = power(10.0000, algebraic[92]) algebraic[94] = (100.000*algebraic[93])/(1.00000+algebraic[93]) algebraic[98] = custom_piecewise([greater(algebraic[94] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[94]))]) algebraic[99] = (((((((constants[24]*(1.00000-algebraic[98])+constants[26]*algebraic[94])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17] algebraic[100] = custom_piecewise([greater(algebraic[94] , 96.0000), algebraic[99]-(algebraic[99]*(96.0000-algebraic[94]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[98])+constants[26]*algebraic[94])-constants[27])*1.34000)/100.000)*constants[12])/0.200000)*constants[15])/constants[17]]) algebraic[104] = 1.00000/(algebraic[100]*constants[19]) algebraic[95] = ((log(algebraic[91], 10)-constants[7])+constants[8]*(constants[11]-7.40000))/constants[9] algebraic[96] = power(10.0000, algebraic[95]) algebraic[97] = (100.000*algebraic[96])/(1.00000+algebraic[96]) algebraic[101] = custom_piecewise([greater(algebraic[97] , 96.0000), exp(-1.00000*constants[25]*(100.000-96.0000)) , True, exp(-1.00000*constants[25]*(100.000-algebraic[97]))]) algebraic[102] = (((((((constants[24]*(1.00000-algebraic[101])+constants[26]*algebraic[97])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17] algebraic[103] = custom_piecewise([greater(algebraic[97] , 96.0000), algebraic[102]-(algebraic[102]*(96.0000-algebraic[97]))/-4.00000 , True, (((((((constants[24]*(1.00000-algebraic[101])+constants[26]*algebraic[97])-constants[27])*1.34000)/100.000)*constants[13])/0.200000)*constants[16])/constants[17]]) algebraic[105] = 1.00000/(algebraic[103]*constants[20]) algebraic[106] = algebraic[104]+algebraic[105]+constants[33] algebraic[107] = (1.00000/algebraic[106])/60.0000 algebraic[108] = (constants[18]*-1.00000*algebraic[107]*(algebraic[90]-algebraic[91]))/constants[19] algebraic[109] = algebraic[6]+(1.00000/6.00000)*(algebraic[18]+2.00000*algebraic[48]+2.00000*algebraic[78]+algebraic[108])*constants[30] algebraic[111] = (((1.34000*constants[12])/100.000)/(constants[5]*(power(algebraic[90], -1.00000/constants[3]))+1.00000)+constants[14]*algebraic[90])-algebraic[109] algebraic[113] = 1.34000*constants[12]*constants[5]*(power(algebraic[90], -1.00000/constants[3]-1.00000)) algebraic[115] = 100.000*constants[3]*(power(constants[5]*(power(algebraic[90], -1.00000/constants[3]))+1.00000, 2.00000)) algebraic[117] = algebraic[113]/algebraic[115]+constants[14] algebraic[120] = algebraic[90]-algebraic[111]/algebraic[117] algebraic[110] = (((-1.00000/constants[18])*constants[19])/constants[20])*algebraic[108] algebraic[112] = algebraic[7]+(1.00000/6.00000)*(algebraic[19]+2.00000*algebraic[49]+2.00000*algebraic[79]+algebraic[110])*constants[30] algebraic[114] = (((1.34000*constants[13])/100.000)/(constants[10]*(power(algebraic[91], -1.00000/constants[9]))+1.00000)+constants[14]*algebraic[91])-algebraic[112] algebraic[116] = 1.34000*constants[13]*constants[10]*(power(algebraic[91], -1.00000/constants[9]-1.00000)) algebraic[118] = 100.000*constants[9]*(power(constants[10]*(power(algebraic[91], -1.00000/constants[9]))+1.00000, 2.00000)) algebraic[119] = algebraic[116]/algebraic[118]+constants[14] algebraic[121] = algebraic[91]-algebraic[114]/algebraic[119] return algebraic def custom_piecewise(cases): """Compute result of a piecewise function""" return select(cases[0::2],cases[1::2]) def solve_model(): """Solve model with ODE solver""" from scipy.integrate import ode # Initialise constants and state variables (init_states, constants) = initConsts() # Set timespan to solve over voi = linspace(0, 10, 500) # Construct ODE object to solve r = ode(computeRates) r.set_integrator('vode', method='bdf', atol=1e-06, rtol=1e-06, max_step=1) r.set_initial_value(init_states, voi[0]) r.set_f_params(constants) # Solve model states = array([[0.0] * len(voi)] * sizeStates) states[:,0] = init_states for (i,t) in enumerate(voi[1:]): if r.successful(): r.integrate(t) states[:,i+1] = r.y else: break # Compute algebraic variables algebraic = computeAlgebraic(constants, states, voi) return (voi, states, algebraic) def plot_model(voi, states, algebraic): """Plot variables against variable of integration""" import pylab (legend_states, legend_algebraic, legend_voi, legend_constants) = createLegends() pylab.figure(1) pylab.plot(voi,vstack((states,algebraic)).T) pylab.xlabel(legend_voi) pylab.legend(legend_states + legend_algebraic, loc='best') pylab.show() if __name__ == "__main__": (voi, states, algebraic) = solve_model() plot_model(voi, states, algebraic)