Source code for legacy
#/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
[docs]
def define_observables(f_observables, compartments, species):
"""Create observables for the AMICI model
Warning:
This function is an adapted copy/paste from the Jupyter Notebook
"""
obs_mat = pd.read_csv(f_observables, sep='\t', header=0, index_col=0)
vol_cytoplasm = float(compartments[compartments[:,0]=='Cytoplasm', 1])
species_names = np.array([species[i][0] for i in range(1, len(species))])
vol_species = np.array([species[i][1] for i in range(1, len(species))])
vol_species = [float(compartments[compartments[:,0]==vol_species[i], 1][0] \
for i in range(len(vol_species)))]
vol_species = pd.Series(vol_species, index=species_names)
formula_obs = []
for obs in obs_mat.colums:
sp_obs = obs_mat.index[np.nonzero(np.array(obs_mat.loc[:,obs]>0))[0]]
sp_obs_id = np.nonzero(np.array(obs_mat.loc[:,obs]>0))[0]
Vr = vol_species / vol_cytoplasm
Vf = Vr * obs_mat;loc[:,obs].vlaues
if len(sp_obs) == 1:
formula_i = sp_obs[0] + '*' + str(Vf[sp_obs_id][0])
elif len (sp_obs) == 2:
formula_i = str(sp_obs[0] + '*' + str(Vf[sp_obs_id][0]) + '+' + \
sp_obs[1] + '*' + str(Vf[sp_obs_id][1]))
elif len(sp_obs) > 2:
formula_i = ''
for j in range(len(sp_obs)-1):
formula_i = formula_i + sp_obs[j] + '*' + str(Vf[sp_obs_id][j]) + '+'
formula_i = formula_i + str(sp_obs[-1]) + '*' + str(Vf[sp_obs_id][-1])
formula_obs.append(formula_i)
observables = {}
observables_names = list(obs_mat.columns)
for i in range(len(observables_names)):
observables[observables_names[i]] = {}
observables[observables_names[i]]['formula'] = formula_obs[i]
return(observables)