In [1]:
from sympy.parsing.sympy_parser import parse_expr
from sympy import *
import sympy
from sympy.functions.elementary.piecewise import ExprCondPair
from sympy.interactive import printing
printing.init_printing(use_latex=True)
In [2]:
new_model_string = "Piecewise(ExprCondPair(797646.212300/(1. + exp((t-1590000000)/43698725) ) + 1714027.877000, Equality(Integer(0), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(1), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((317850.209300/(1. + exp((t-1482644659)/173535) ) + 2059331.500000, t<1484731748), (0, t>=1484731748)), Equality(Integer(2), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((2114948.631, t<=1477656000), (2114948.631, t>=1479749714), (1185630, True)), Equality(Integer(3), Symbol('pmt', integer=True))),ExprCondPair(Float(3911403.114, prec=15), Equality(Integer(4), Symbol('pmt', integer=True))), ExprCondPair(Float(2174952.395, prec=15), Equality(Integer(5), Symbol('pmt', integer=True))), ExprCondPair(Float(4787662.301, prec=15), Equality(Integer(6), Symbol('pmt', integer=True))), ExprCondPair(Float(2282290.134, prec=15), Equality(Integer(7), Symbol('pmt', integer=True))), ExprCondPair(Float(2306758.899, prec=15), Equality(Integer(8), Symbol('pmt', integer=True))), ExprCondPair(Float(3547885.388, prec=15), Equality(Integer(9), Symbol('pmt', integer=True))), ExprCondPair(Float(2424047.23, prec=15), Equality(Integer(10), Symbol('pmt', integer=True))), ExprCondPair(171636.777600/(1. + exp((t-1490436000)/7252570) ) + 2920853.476000, Equality(Integer(11), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((0, t<=1525132800), (4095444.65, t>1525132800)), Equality(Integer(12), Symbol('pmt', integer=True))), ExprCondPair(Float(3083532.044, prec=15), Equality(Integer(13), Symbol('pmt', integer=True))), ExprCondPair(Float(2153954.677, prec=15), Equality(Integer(14), Symbol('pmt', integer=True))), ExprCondPair(Float(2436135.098, prec=15), Equality(Integer(15), Symbol('pmt', integer=True))), ExprCondPair(Float(2676866.964, prec=15), Equality(Integer(16), Symbol('pmt', integer=True))), ExprCondPair(117373.840100/(1. + exp((t-1511611440)/5469333) ) + 2005079.645000, Equality(Integer(17), Symbol('pmt', integer=True))), ExprCondPair(Float(2399631.928, prec=15), Equality(Integer(18), Symbol('pmt', integer=True))), ExprCondPair(Float(2305471.244, prec=15), Equality(Integer(19), Symbol('pmt', integer=True))), ExprCondPair(Float(2397076.584, prec=15), Equality(Integer(20), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((2244990.483, t<=1498766880), (1678221.071, t<=1498979340), (373681.120100/(1. + exp((t-1530000000)/4698795) ) + 1131844.061000, t>1498979340)), Equality(Integer(21), Symbol('pmt', integer=True))), ExprCondPair(Float(4320653.907, prec=15), Equality(Integer(22), Symbol('pmt', integer=True))), ExprCondPair(112326.137400/(1. + exp((t-1509676115)/7032150) ) + 2252282.630000, Equality(Integer(23), Symbol('pmt', integer=True))), ExprCondPair(Float(3169682.64, prec=15), Equality(Integer(24), Symbol('pmt', integer=True))), ExprCondPair(74240.293260/(1. + exp((t-1512784632)/3609826) ) + 2242440.468000, Equality(Integer(25), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(26), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((0, t<=1525132800), (3575882.225, t>1525132800)), Equality(Integer(27), Symbol('pmt', integer=True))), ExprCondPair(361534.405700/(1. + exp((1491816617-t)/11161454) ) + 2257870.253000, Equality(Integer(28), Symbol('pmt', integer=True))), ExprCondPair(Float(2356935.656, prec=15), Equality(Integer(29), Symbol('pmt', integer=True))), ExprCondPair(Float(4056954.778, prec=15), Equality(Integer(30), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((76233.246090/(1. + exp((t-1483002843)/7488) ) + 2249473.921000, t<1490535931), (1643037.866, t<1493721839), (1200110.914, t<1497013200), (483717.007800/(1. + exp((t-1514878911)/3894893) ) + 548217.280300, t>=1497013200)), Equality(Integer(31), Symbol('pmt', integer=True))), ExprCondPair(Float(4145615.555, prec=15), Equality(Integer(32), Symbol('pmt', integer=True))), ExprCondPair(Float(2432879.693, prec=15), Equality(Integer(33), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((0, t<=1525132800), (3187867.318, t>1525132800)), Equality(Integer(34), Symbol('pmt', integer=True))), ExprCondPair(Float(3194599.443, prec=15), Equality(Integer(35), Symbol('pmt', integer=True))), ExprCondPair(Float(2309283.851, prec=15), Equality(Integer(36), Symbol('pmt', integer=True))), ExprCondPair(Float(2436856.367, prec=15), Equality(Integer(37), Symbol('pmt', integer=True))), ExprCondPair(Float(3773656.828, prec=15), Equality(Integer(38), Symbol('pmt', integer=True))), ExprCondPair(113423.846700/(1. + exp((t-1483104436)/2100) ) + 3307217.976000, Equality(Integer(39), Symbol('pmt', integer=True))), ExprCondPair(810804.452300/(1. + exp((t-1545000000)/30617944) ) + 1737906.772000, Equality(Integer(40), Symbol('pmt', integer=True))), ExprCondPair(1002077.984000/(1. + exp((t-1450000001)/20059304) ) + 3014243.369000, Equality(Integer(41), Symbol('pmt', integer=True))), ExprCondPair(Float(3731762.602, prec=15), Equality(Integer(42), Symbol('pmt', integer=True))), ExprCondPair(Float(2336041.01, prec=15), Equality(Integer(43), Symbol('pmt', integer=True))), ExprCondPair(Float(2794629.893, prec=15), Equality(Integer(44), Symbol('pmt', integer=True))), ExprCondPair(Float(2629846.598, prec=15), Equality(Integer(45), Symbol('pmt', integer=True))), ExprCondPair(Float(2258661.903, prec=15), Equality(Integer(46), Symbol('pmt', integer=True))), ExprCondPair(Float(3602584.962, prec=15), Equality(Integer(47), Symbol('pmt', integer=True))), ExprCondPair(460703.138800/(1. + exp((t-1530000000)/18433105) ) + 1870756.586000, Equality(Integer(48), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((4355169.472, t<=1482418401), (2262950.226, t>1482418401)), Equality(Integer(49), Symbol('pmt', integer=True))), ExprCondPair(Float(3738675.745, prec=15), Equality(Integer(50), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((0, t<=1484731748), (3720655.479, t>1484731748)), Equality(Integer(51), Symbol('pmt', integer=True))), ExprCondPair(Float(2401290.798, prec=15), Equality(Integer(52), Symbol('pmt', integer=True))), ExprCondPair(Float(2139772.448, prec=15), Equality(Integer(53), Symbol('pmt', integer=True))), ExprCondPair(Float(3644871.352, prec=15), Equality(Integer(54), Symbol('pmt', integer=True))), ExprCondPair(Float(1976574.082, prec=15), Equality(Integer(55), Symbol('pmt', integer=True))), ExprCondPair(Float(4578696.252, prec=15), Equality(Integer(56), Symbol('pmt', integer=True))), ExprCondPair(Float(3446715.225, prec=15), Equality(Integer(57), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((2168250.61, t<=1484064477), (1654373.185, t>1484064477)), Equality(Integer(58), Symbol('pmt', integer=True))),ExprCondPair(Float(2272423.602, prec=15), Equality(Integer(59), Symbol('pmt', integer=True))), ExprCondPair(Float(2843760.336, prec=15), Equality(Integer(60), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((148647.951400/(1. + exp((t-1482902728)/89166) ) + 2041636.826000, t<1490325004), (2705439.559000/(1. + exp((t-1495550143)/65539536) ) + 85.519023 + 77198.068530/(1. + exp((t-1522304593)/11688) ) , t>=1490325004)), Equality(Integer(61), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(62), Symbol('pmt', integer=True))), ExprCondPair(Float(3812202.101, prec=15), Equality(Integer(63), Symbol('pmt', integer=True))), ExprCondPair(Float(3547512.523, prec=15), Equality(Integer(64), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(65), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((84771.849380/(1. + exp((t-1483005457)/6743) ) + 2104605.165000 + 140276.039300/(1. + exp((t-1492905600)/2539903) ), t<1502383532), (3536840.952000/(1. + exp((t-1495640921)/84983692) ) + 125203.752500 + 106262.107700/(1. + exp((t-1521397168)/239570) ) + 149781.783500/(1. + exp((t-1530937381)/3782) ), t>=1502383532)), Equality(Integer(66), Symbol('pmt', integer=True))), ExprCondPair(34555.504220/(1. + exp((t-1483029945)/1000) ) + 1874444.371000 + 575399.854600/(1. + exp((t-1530000000)/23486773) ), Equality(Integer(67), Symbol('pmt', integer=True))), ExprCondPair(Float(4814261.431, prec=15), Equality(Integer(68), Symbol('pmt', integer=True))), ExprCondPair(89338.661500/(1. + exp((t-1483065484)/2899) ) + 3030420.839000, Equality(Integer(69), Symbol('pmt', integer=True))), ExprCondPair(Float(3761517.64, prec=15), Equality(Integer(70), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((87016.068290/(1. + exp((t-1482958556)/77172)) + 1984868.520000 + 89326.868770/(1. + exp((t-1490186525)/70491)) + 101240.533800/(1. + exp((t-1495703286)/147315)), t<1502383532), (2668850.715000/(1. + exp((t-1496186874)/26604898)) + 367392.474900 + 216512.880400/(1. + exp((t-1521852784)/96415)) + 218402.934600/(1. + exp((t-1530893094)/11783)), t>=1502383532)), Equality(Integer(71), Symbol('pmt', integer=True))), ExprCondPair(119387.726600/(1. + exp((t-1489968000)/5124177) ) + 2133684.740000, Equality(Integer(72), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((0, t<=1525132800), (2014523.739, t>1525132800)), Equality(Integer(73), Symbol('pmt', integer=True))), ExprCondPair(Float(4791546.883, prec=15), Equality(Integer(74), Symbol('pmt', integer=True))), ExprCondPair(Float(4652413.815, prec=15), Equality(Integer(75), Symbol('pmt', integer=True))), ExprCondPair(Float(2918239.34, prec=15), Equality(Integer(76), Symbol('pmt', integer=True))), ExprCondPair(Float(3340955.745, prec=15), Equality(Integer(77), Symbol('pmt', integer=True))), ExprCondPair(92819.160530/(1. + exp((t-1483005314)/4506) ) + 1360050.787000 + 463614.062400/(1. + exp((t-1505901173)/14081201) ) + 106805.413300/(1. + exp((t-1520637397)/539552) ), Equality(Integer(78), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(79), Symbol('pmt', integer=True))), ExprCondPair(Float(3371657.835, prec=15), Equality(Integer(80), Symbol('pmt', integer=True))), ExprCondPair(Float(4186750.529, prec=15), Equality(Integer(81), Symbol('pmt', integer=True))), ExprCondPair(Float(4431289.794, prec=15), Equality(Integer(82), Symbol('pmt', integer=True))), ExprCondPair(Float(2098635.285, prec=15), Equality(Integer(83), Symbol('pmt', integer=True))), ExprCondPair(Float(2544099.012, prec=15), Equality(Integer(84), Symbol('pmt', integer=True))), ExprCondPair(99865.358070/(1. + exp((t-1482897574)/71943) ) + 1253660.771000 + 353802.422100/(1. + exp((t-1496099888)/4453667) ) + 547761.098400/(1. + exp((t-1520629686)/4762424) ), Equality(Integer(85), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((0, t<=1525132800), (2210868.099, t>1525132800)), Equality(Integer(86), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((2472595.99, t<=1502323200), (2012985.678000/(1. + exp((t-1519456010)/1420212) ) + 409968.672500, t<=1525168124), (0, t>1525168124)), Equality(Integer(87), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(88), Symbol('pmt', integer=True))), ExprCondPair(Float(2630956.612, prec=15), Equality(Integer(89), Symbol('pmt', integer=True))), ExprCondPair(Float(2311313.473, prec=15), Equality(Integer(90), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(91), Symbol('pmt', integer=True))), ExprCondPair(Float(3485772.453, prec=15), Equality(Integer(92), Symbol('pmt', integer=True))), ExprCondPair(944915.413600/(1. + exp((t-1587683364)/31718246) ) + 1395226.088000, Equality(Integer(93), Symbol('pmt', integer=True))), ExprCondPair(Float(2941925.972, prec=15), Equality(Integer(94), Symbol('pmt', integer=True))), ExprCondPair(Float(4220655.865, prec=15), Equality(Integer(95), Symbol('pmt', integer=True))), ExprCondPair(455856.579900/(1. + exp((t-1480000000)/19608134) ) + 4240658.656000, Equality(Integer(96), Symbol('pmt', integer=True))), ExprCondPair(Float(2968317.033, prec=15), Equality(Integer(97), Symbol('pmt', integer=True))), ExprCondPair(Float(2105334.885, prec=15), Equality(Integer(98), Symbol('pmt', integer=True))), ExprCondPair(Float(2244610.005, prec=15), Equality(Integer(99), Symbol('pmt', integer=True))), ExprCondPair(Float(2251091.306, prec=15), Equality(Integer(100), Symbol('pmt', integer=True))), ExprCondPair(Float(3089195.242, prec=15), Equality(Integer(101), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(102), Symbol('pmt', integer=True))), ExprCondPair(Float(2403046.29, prec=15), Equality(Integer(103), Symbol('pmt', integer=True))), ExprCondPair(Float(3407642.678, prec=15), Equality(Integer(104), Symbol('pmt', integer=True))), ExprCondPair(Float(3742641.473, prec=15), Equality(Integer(105), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((3859086.519, t<=1504773960), (3479677.835, t>1504773960)), Equality(Integer(106), Symbol('pmt', integer=True))), ExprCondPair(Float(2301116.873, prec=15), Equality(Integer(107), Symbol('pmt', integer=True))), ExprCondPair(Float(4799718.446, prec=15), Equality(Integer(108), Symbol('pmt', integer=True))), ExprCondPair(Float(2257621.217, prec=15), Equality(Integer(109), Symbol('pmt', integer=True))), ExprCondPair(Float(2392671.93, prec=15), Equality(Integer(110), Symbol('pmt', integer=True))), ExprCondPair(233101.871200/(1. + exp((t-1483500000)/10000000) ) + 2052237.358000 + 211762.631700/(1. + exp((t-1518090261)/4693996) ), Equality(Integer(111), Symbol('pmt', integer=True))), ExprCondPair(Float(2231500.108, prec=15), Equality(Integer(112), Symbol('pmt', integer=True))), ExprCondPair(Float(2837813.272, prec=15), Equality(Integer(113), Symbol('pmt', integer=True))), ExprCondPair(Float(2921642.98, prec=15), Equality(Integer(114), Symbol('pmt', integer=True))), ExprCondPair(Float(1776538.307, prec=15), Equality(Integer(115), Symbol('pmt', integer=True))), ExprCondPair(Float(3662058.047, prec=15), Equality(Integer(116), Symbol('pmt', integer=True))), ExprCondPair(959244.963700/(1. + exp((t-1557614478)/18688783) ) + 1246509.686000, Equality(Integer(117), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(118), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((74907.898330/(1. + exp((t-1483001278)/6074) ) + 2097681.030000 + 129338.698900/(1. + exp((t-1493813664)/1841541) ), t<1499232274), (260559.024500/(1. + exp((t-1519101990)/8772264) ) + 1343738.198000, t>=1499232274)), Equality(Integer(119), Symbol('pmt', integer=True))), ExprCondPair(Float(2450979.006, prec=15), Equality(Integer(120), Symbol('pmt', integer=True))), ExprCondPair(Float(4731755.778, prec=15), Equality(Integer(121), Symbol('pmt', integer=True))), ExprCondPair(Float(2283167.277, prec=15), Equality(Integer(122), Symbol('pmt', integer=True))), ExprCondPair(Float(2301250.175, prec=15), Equality(Integer(123), Symbol('pmt', integer=True))), ExprCondPair(344094.203000/(1. + exp((1529999934-t)/39671008) ) + 2137431.046000, Equality(Integer(124), Symbol('pmt', integer=True))), ExprCondPair(Float(2226097.981, prec=15), Equality(Integer(125), Symbol('pmt', integer=True))), ExprCondPair(Float(4920224.793, prec=15), Equality(Integer(126), Symbol('pmt', integer=True))), ExprCondPair(Float(4734429.18, prec=15), Equality(Integer(127), Symbol('pmt', integer=True))), ExprCondPair(Float(2300458.769, prec=15), Equality(Integer(128), Symbol('pmt', integer=True))), ExprCondPair(Float(2686355.283, prec=15), Equality(Integer(129), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(130), Symbol('pmt', integer=True))), ExprCondPair(Float(3348157.065, prec=15), Equality(Integer(131), Symbol('pmt', integer=True))), ExprCondPair(Float(4600822.549, prec=15), Equality(Integer(132), Symbol('pmt', integer=True))), ExprCondPair(Float(3278819.315, prec=15), Equality(Integer(133), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(134), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(135), Symbol('pmt', integer=True))), ExprCondPair(Float(3863358.341, prec=15), Equality(Integer(136), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(137), Symbol('pmt', integer=True))), ExprCondPair(Float(4416918.461, prec=15), Equality(Integer(138), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(139), Symbol('pmt', integer=True))), ExprCondPair(Float(4767612.085, prec=15), Equality(Integer(140), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((3204981.427, t<1502383532), (450200.399800/(1. + exp((t-1495806328)/92089034) ) + 2747905.214000 + 76412.583160/(1. + exp((t-1522035413)/4372) ) + 182349.207300/(1. + exp((t-1531354144)/382262) ), t>=1502383532)), Equality(Integer(141), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((65793.361980/(1. + exp((t-1483018883)/17332) ) + 2037599.726000 + 163613.753300/(1. + exp((t-1493813419)/2159883) ), t<1502383532), (721744.336400/(1. + exp((t-1498000000)/11294600) ) + 1402569.355000 + 192167.612700/(1. + exp((t-1521061510)/428161) ) + 144850.106100/(1. + exp((t-1531268460)/5427) ), t>=1502383532)), Equality(Integer(142), Symbol('pmt', integer=True))), ExprCondPair(Float(3360784.193, prec=15), Equality(Integer(143), Symbol('pmt', integer=True))), ExprCondPair(Float(2654278.911, prec=15), Equality(Integer(144), Symbol('pmt', integer=True))), ExprCondPair(Float(3373660.172, prec=15), Equality(Integer(145), Symbol('pmt', integer=True))), ExprCondPair(Float(4004618.599, prec=15), Equality(Integer(146), Symbol('pmt', integer=True))), ExprCondPair(Float(4892346.136, prec=15), Equality(Integer(147), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((0, t<=1525132800), (3995369.667, t>1525132800)), Equality(Integer(148), Symbol('pmt', integer=True))), ExprCondPair(Float(2354770.044, prec=15), Equality(Integer(149), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(150), Symbol('pmt', integer=True))), ExprCondPair(Float(4028339.654, prec=15), Equality(Integer(151), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(152), Symbol('pmt', integer=True))), ExprCondPair(Float(3631411.86, prec=15), Equality(Integer(153), Symbol('pmt', integer=True))), ExprCondPair(Float(2735430.911, prec=15), Equality(Integer(154), Symbol('pmt', integer=True))), ExprCondPair(Float(2353102.059, prec=15), Equality(Integer(155), Symbol('pmt', integer=True))), ExprCondPair(Float(3200178.266, prec=15), Equality(Integer(156), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((2270820.279, t<1502383532), (862976.774400/(1. + exp((t-1548248917)/27403449) ) + 1345240.504000 + 92873.549870/(1. + exp((t-1521043256)/4397) ) + 66727.575480/(1. + exp((t-1531425141)/4445) ), t>=1502383532)), Equality(Integer(157), Symbol('pmt', integer=True))), ExprCondPair(Float(4446703.885, prec=15), Equality(Integer(158), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((4114239.21, t<=1489337078), (3085148.615, t>1489337078)), Equality(Integer(159), Symbol('pmt', integer=True))),ExprCondPair(Float(2285591.61, prec=15), Equality(Integer(160), Symbol('pmt', integer=True))), ExprCondPair(Float(2344707.299, prec=15), Equality(Integer(161), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(162), Symbol('pmt', integer=True))), ExprCondPair(Float(2203878.513, prec=15), Equality(Integer(163), Symbol('pmt', integer=True))), ExprCondPair(Float(2259826.429, prec=15), Equality(Integer(164), Symbol('pmt', integer=True))), ExprCondPair(Float(2570436.9, prec=15), Equality(Integer(165), Symbol('pmt', integer=True))), ExprCondPair(Float(2345924.687, prec=15), Equality(Integer(166), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((0, t<=1525132800), (1636498.277, t>1525132800)), Equality(Integer(167), Symbol('pmt', integer=True))), ExprCondPair(34805.401790/(1. + exp((t-1483050146)/2921) ) + 2257235.257000, Equality(Integer(168), Symbol('pmt', integer=True))), ExprCondPair(Float(4504589.162, prec=15), Equality(Integer(169), Symbol('pmt', integer=True))), ExprCondPair(Float(4776809.848, prec=15), Equality(Integer(170), Symbol('pmt', integer=True))), ExprCondPair(Float(3289174.689, prec=15), Equality(Integer(171), Symbol('pmt', integer=True))), ExprCondPair(Float(3997409.092, prec=15), Equality(Integer(172), Symbol('pmt', integer=True))), ExprCondPair(Float(2330777.639, prec=15), Equality(Integer(173), Symbol('pmt', integer=True))), ExprCondPair(29981.636050/(1. + exp((t-1483013392)/3904) ) + 2206350.929000, Equality(Integer(174), Symbol('pmt', integer=True))), ExprCondPair(69696.934420/(1. + exp((t-1483011669)/7749) ) + 4289612.039000, Equality(Integer(175), Symbol('pmt', integer=True))), ExprCondPair(Float(2751969.25, prec=15), Equality(Integer(176), Symbol('pmt', integer=True))), ExprCondPair(Float(2925574.82, prec=15), Equality(Integer(177), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(178), Symbol('pmt', integer=True))), ExprCondPair(Float(2331405.89, prec=15), Equality(Integer(179), Symbol('pmt', integer=True))), ExprCondPair(Float(4786799.474, prec=15), Equality(Integer(180), Symbol('pmt', integer=True))), ExprCondPair(Float(4791040.533, prec=15), Equality(Integer(181), Symbol('pmt', integer=True))), ExprCondPair(Float(3256479.601, prec=15), Equality(Integer(182), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(183), Symbol('pmt', integer=True))), ExprCondPair(Float(2230084.596, prec=15), Equality(Integer(184), Symbol('pmt', integer=True))), ExprCondPair(Float(4228180.348, prec=15), Equality(Integer(185), Symbol('pmt', integer=True))), ExprCondPair(Float(3983937.85, prec=15), Equality(Integer(186), Symbol('pmt', integer=True))), ExprCondPair(Float(4066102.367, prec=15), Equality(Integer(187), Symbol('pmt', integer=True))), ExprCondPair(Float(2253493.386, prec=15), Equality(Integer(188), Symbol('pmt', integer=True))), ExprCondPair(Float(2249075.814, prec=15), Equality(Integer(189), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((4770523.746, t<=1484731748), (0, t<=1525132800), (4539537.353, t>1525132800)), Equality(Integer(190), Symbol('pmt', integer=True))),ExprCondPair(Float(2672274.462, prec=15), Equality(Integer(191), Symbol('pmt', integer=True))), ExprCondPair(Float(3527164.467, prec=15), Equality(Integer(192), Symbol('pmt', integer=True))), ExprCondPair(61042.211050/(1. + exp((t-1483043344)/1004) ) + 4599985.851000, Equality(Integer(193), Symbol('pmt', integer=True))), ExprCondPair(Float(3360105.439, prec=15), Equality(Integer(194), Symbol('pmt', integer=True))), ExprCondPair(Float(2253339.027, prec=15), Equality(Integer(195), Symbol('pmt', integer=True))), ExprCondPair(Float(2241082.721, prec=15), Equality(Integer(196), Symbol('pmt', integer=True))), ExprCondPair(Float(2224387.69, prec=15), Equality(Integer(197), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(198), Symbol('pmt', integer=True))), ExprCondPair(Float(3263106.192, prec=15), Equality(Integer(199), Symbol('pmt', integer=True))), ExprCondPair(Float(2136224.656, prec=15), Equality(Integer(200), Symbol('pmt', integer=True))), ExprCondPair(138563.309600/(1. + exp((t-1482919016)/78757) ) + 2950000.000000 + 153984.885300/(1. + exp((t-1490900000)/2135928) ) + 267541.326300/(1. + exp((t-1518000000)/4320454) ), Equality(Integer(201), Symbol('pmt', integer=True))), ExprCondPair(Float(2165282.33, prec=15), Equality(Integer(202), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(203), Symbol('pmt', integer=True))), ExprCondPair(Float(3894267.276, prec=15), Equality(Integer(204), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((1910643.005, t<=1490173263), (1460080.954, t>1490173263)), Equality(Integer(205), Symbol('pmt', integer=True))),ExprCondPair(Float('0.0', prec=15), Equality(Integer(206), Symbol('pmt', integer=True))), ExprCondPair(Float(3794553.86, prec=15), Equality(Integer(207), Symbol('pmt', integer=True))), ExprCondPair(Float(2433956.212, prec=15), Equality(Integer(208), Symbol('pmt', integer=True))), ExprCondPair(84837.821430/(1. + exp((t-1483800000)/1000000) ) + 1970121.067000, Equality(Integer(209), Symbol('pmt', integer=True))), ExprCondPair(Float(3343854.018, prec=15), Equality(Integer(210), Symbol('pmt', integer=True))), ExprCondPair(Float(3851690.466, prec=15), Equality(Integer(211), Symbol('pmt', integer=True))), ExprCondPair(Float(4242064.36, prec=15), Equality(Integer(212), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(213), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(214), Symbol('pmt', integer=True))), ExprCondPair(Float(4834082.954, prec=15), Equality(Integer(215), Symbol('pmt', integer=True))), ExprCondPair(Float(4104687.299, prec=15), Equality(Integer(216), Symbol('pmt', integer=True))), ExprCondPair(Piecewise((121957.708700/(1. + exp((t-1482881883)/59649) ) + 1802625.906000 + 170985.267400/(1. + exp((t-1491829602)/2230938) ), t<1502383532), (3400435.076000/(1. + exp((t-1495964899)/96575292) ) + 6904.355259 + 61269.844320/(1. + exp((t-1520771851)/1379) ) + 48463.241480/(1. + exp((t-1530939693)/7193) ), t>=1502383532)), Equality(Integer(217), Symbol('pmt', integer=True))), ExprCondPair(Float(4686745.044, prec=15), Equality(Integer(218), Symbol('pmt', integer=True))), ExprCondPair(Float(4661072.668, prec=15), Equality(Integer(219), Symbol('pmt', integer=True))), ExprCondPair(Float(2357301.334, prec=15), Equality(Integer(220), Symbol('pmt', integer=True))), ExprCondPair(Float(4781829.72, prec=15), Equality(Integer(221), Symbol('pmt', integer=True))), ExprCondPair(Float(3403911.445, prec=15), Equality(Integer(222), Symbol('pmt', integer=True))), ExprCondPair(Float(4762211.752, prec=15), Equality(Integer(223), Symbol('pmt', integer=True))), ExprCondPair(Float(3170752.993, prec=15), Equality(Integer(224), Symbol('pmt', integer=True))), ExprCondPair(Float(2374928.733, prec=15), Equality(Integer(225), Symbol('pmt', integer=True))), ExprCondPair(Float(4585408.392, prec=15), Equality(Integer(226), Symbol('pmt', integer=True))), ExprCondPair(Float(2758007.461, prec=15), Equality(Integer(227), Symbol('pmt', integer=True))), ExprCondPair(Float(2646862.902, prec=15), Equality(Integer(228), Symbol('pmt', integer=True))), ExprCondPair(Float(4639094.617, prec=15), Equality(Integer(229), Symbol('pmt', integer=True))), ExprCondPair(Float(2226133.115, prec=15), Equality(Integer(230), Symbol('pmt', integer=True))), ExprCondPair(Float(3744656.373, prec=15), Equality(Integer(231), Symbol('pmt', integer=True))), ExprCondPair(Float(2297378.692, prec=15), Equality(Integer(232), Symbol('pmt', integer=True))), ExprCondPair(Float(2540338.164, prec=15), Equality(Integer(233), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(234), Symbol('pmt', integer=True))), ExprCondPair(Float(4681585.178, prec=15), Equality(Integer(235), Symbol('pmt', integer=True))), ExprCondPair(Float(2288534.93, prec=15), Equality(Integer(236), Symbol('pmt', integer=True))), ExprCondPair(Float(2268280.583, prec=15), Equality(Integer(237), Symbol('pmt', integer=True))), ExprCondPair(Float(4692863.886, prec=15), Equality(Integer(238), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(239), Symbol('pmt', integer=True))), ExprCondPair(Float(2335985.492, prec=15), Equality(Integer(240), Symbol('pmt', integer=True))), ExprCondPair(Float(4223874.777, prec=15), Equality(Integer(241), Symbol('pmt', integer=True))), ExprCondPair(Float(4566435.895, prec=15), Equality(Integer(242), Symbol('pmt', integer=True))), ExprCondPair(Float(4286326.901, prec=15), Equality(Integer(243), Symbol('pmt', integer=True))), ExprCondPair(Float('0.0', prec=15), Equality(Integer(244), Symbol('pmt', integer=True))), ExprCondPair(Float(3995778.55, prec=15), Equality(Integer(245), Symbol('pmt', integer=True))), ExprCondPair(Float(3461287.708, prec=15), Equality(Integer(246), Symbol('pmt', integer=True))), ExprCondPair(Float(4526276.55, prec=15), Equality(Integer(247), Symbol('pmt', integer=True))), ExprCondPair(Float('80000.', prec=15), Equality(Integer(254), Symbol('pmt', integer=True))), ExprCondPair(Float('100000.', prec=15), Equality(Integer(255), Symbol('pmt', integer=True))), ExprCondPair(Float('100000.', prec=15), Equality(Integer(256), Symbol('pmt', integer=True))), ExprCondPair(Float('100000.', prec=15), Equality(Integer(257), Symbol('pmt', integer=True))), ExprCondPair(Float('100000.', prec=15), Equality(Integer(258), Symbol('pmt', integer=True))), ExprCondPair(Float('100000.', prec=15), Equality(Integer(259), Symbol('pmt', integer=True))), ExprCondPair(Float('2500000.0', prec=15), S.true))"
In [3]:
new_model = parse_expr(new_model_string)
new_model
Out[3]:
In [4]:
import pymongo
# Establish connection
password = 'PLEASE_PUT_CORRECT_PASSWORD'
c = pymongo.MongoClient("mongodb://shingo:%s@xenon1t-daq.lngs.infn.it:27017/run" % password)
# Connect to run database
db = c['run']
# Grab the collection storing gain models
collection = db['gains']
print("There are", collection.count(), "gain models currently available.")
In [5]:
def print_gain_models(collection):
"""Display high level information about each model."""
for doc in collection.find(sort=(('calculation_time', -1),)):
print('_id', doc['_id'])
print('\tModel calculated at:', doc['calculation_time'])
#print('\tVersion:', doc['version'])
print('\tComment:', doc['comment'])
In [6]:
print_gain_models(collection)
In [7]:
def display_latest(collection):
doc = collection.find_one(sort=(('calculation_time', -1),))
print('_id', doc['_id'])
print('\tModel calculated at:', doc['calculation_time'])
print('\tComment:', doc['comment'])
print('\tVersion:', doc['version'])
return parse_expr(doc['function'])
In [8]:
display_latest(collection)
Out[8]:
In [9]:
import datetime
new_model_document = {
"comment": "New gain model after SR1 updated using all the data until 180723",
"calculation_time": datetime.datetime.utcnow(),
"version": "5.0",
"function": new_model_string
}
In [10]:
collection.insert(new_model_document)
Out[10]:
In [11]:
print_gain_models(collection)
In [12]:
display_latest(collection)
Out[12]:
In [13]:
#####db['runs_new'].update_many({'detector': 'tpc', 'number' : {'$gt' : 11996}}, {'$unset' : {'processor.DEFAULT.gains':True}} )
Out[13]:
In [ ]: