In [1]:
import sciligpy_utils as lig
import constants as const
import numpy as np
import gen_ODE_scipy as gos

In [ ]:
species_IC = 'Pseudotsuga_menziesii'
T_rate = 2.7+273.15

In [ ]:
reactionlist, rateconstantlist, compositionlist = lig.set_paths()
y_list = lig.get_specieslist(reactionlist)
speciesindices, indices_to_species = lig.get_speciesindices(y_list)
kmatrix = lig.build_k_matrix(rateconstantlist)
rate_list = lig.build_rates_list_kexp(rateconstantlist, reactionlist, speciesindices, indices_to_species)
species_rxns = lig.build_species_rxns_dict(reactionlist)
dydt_expressions = lig.build_dydt_list(rate_list, y_list, species_rxns)
PLIGC_0, PLIGH_0, PLIGO_0 = lig.define_initial_composition(compositionlist, species_IC)

In [ ]:
with open('solve_ODEs_%s.py' %species_IC, 'w') as f:
    beginning = "#!/usr/bin/pythons\n" \
            "# -*- coding: utf-8 -*-\n\n" \
            "from scipy.integrate import odeint\n" \
            "import numpy as np\n\n\n" \
            "def ODEs(y, t, p):\n"
    f.write(beginning)
   
    y = '\tT'
    for spec in y_list:
        y += (', ' + spec)
    y += ' = y'
    f.write(y + '\n')
    
    parameters = '\talpha, R, A0, n0, E0'
    for i in range(1, len(kmatrix)):
        parameters += ', A%s, n%s, E%s' % (i, i, i)
    parameters += ' = p\n'
    f.write(parameters)

    dydt = '\tdydt = [alpha'
    for ODE in dydt_expressions:
        dydt += (', \n\t\t\t' + ODE.split('=')[1][1:-2])
    dydt += ']'
    f.write(dydt + '\n')
    f.write('\treturn dydt\n\n')
    
    f.write('alpha = %s\nR = %s\n' %(T_rate, const.GAS_CONST))
    f.write('# A, n, E values\n')
    for i in range(len(kmatrix)):
        f.write('A%s = %s\nn%s = %s\nE%s = %s\n' %(i, kmatrix[i][0], i, kmatrix[i][1], i, kmatrix[i][2]))
        
    f.write('\n# Initial conditions\n')
    f.write('T0 = 298.15\n')
    f.write('PLIGC = %s\nPLIGH = %s\nPLIGO = %s\n' %(PLIGC_0, PLIGH_0, PLIGO_0))
    IC = ''
    for i in y_list:
        if i == 'PLIGC' or i == 'PLIGH' or i == 'PLIGO':
            continue
        else:
            IC += ('%s = ' %i)
    IC += '0'
    f.write(IC + '\n\n')
    
    f.write('# ODE solver parameters\n')
    f.write('abserr = %s\n' %const.ABSOLUTE_TOLERANCE)
    f.write('relerr = %s\n' %const.RELATIVE_TOLERANCE)
    f.write('stoptime = 2000\n')
    f.write('numpoints = 10000\n\n')
    
    f.write('t = [stoptime * float(i) / (numpoints - 1) for i in range(numpoints)]\n')
    y0 = 'y0 = [T0'
    for spec in y_list:
        y0 += ', %s' %spec
    y0 += ']\n'
    f.write(y0)
    
    p = 'p = [alpha, R'
    for i in range(len(kmatrix)):
        p += ', A%s, n%s, E%s' %(i, i, i)
    p += ']\n'
    f.write(p)
    
    f.write('\nysol = odeint(ODEs, y0, t, args=(p,), atol=abserr, rtol=relerr)\n\n')
    
    f.write("with open('sol_%s.dat', 'w') as f:\n" %(species_IC))
    
    ysol = ''
    for i in range(len(y_list)+1):
        ysol += 'yy[%s], ' %i
    f.write('\tfor tt, yy in zip(t, ysol):\n')
    f.write('\t\tprint(tt, %sfile=f)\n' %ysol)

In [ ]:
len(kmatrix)

In [ ]:
np.exp(0)

In [ ]:
rate_list

In [ ]:
dydt_expressions

In [ ]:
kmatrix

In [ ]:
-1*2

In [ ]:
a=1; b=2

In [ ]:
a

In [ ]:
b

In [2]:
gos.heating()

In [ ]:
gos.isothermal()

In [ ]:
def func(a, b, c, d):
    return a, b, c, d

In [ ]:
a, b, c , d= func(2, 4, 6, 8)

In [ ]:
round(3.14)

In [ ]:
a = [3, 4, 5, 6]
print('3', end='\t')
[print(a[i], end='\t') for i in [1, 2, 3]]

In [ ]:
print(3, "\t".join(str(x) for x in a), sep='\t')

In [ ]:
a = np.array([3, -4, 5, 6])

In [ ]:
a = a.clip(min=0)

In [ ]:
a

In [ ]:


In [ ]: