예제 #1
0
def objective_fn(position):
    """return the value of the objective function"""
    objective = []
    for k in conditions.keys():
        ysim = solve.simulate(position, observables=True, initial_conc=conditions[k])
        PARP_MLKL_signals   = ct.extract_records(ysim, ['Obs_cPARP', 'Obs_MLKL'])
        
        if (k == 'BidKO'):
            if max(PARP_MLKL_signals[0]>0):
                td_PARP = ct.calculate_time_delay(PARP_MLKL_signals[:,0], sims.tspan)
                td_MLKL = ct.calculate_time_delay(PARP_MLKL_signals[:,1], sims.tspan)
                if td_PARP < td_MLKL:
                    objective.append(abs(td_PARP - td_MLKL))
    
        else:
            ysim_array = ct.extract_records(ysim, ynorm[k][1])
            ysim_norm  = ct.normalize(ysim_array, option = 1)
            ysim_tp    = ct.cubic_spline(solve.options.tspan, ysim_norm, ynorm[k][0][:,0]*3600)
        
            if (k == 'Necr1'):
                objective.append(np.sum((ynorm[k][0][:,1] - ysim_tp) ** 2 / (2 * ynorm[k][0][:,2])))
        
            else:
                td_PARP = ct.calculate_time_delay(PARP_MLKL_signals[:,0], sims.tspan)
                td_MLKL = ct.calculate_time_delay(PARP_MLKL_signals[:,1], sims.tspan)
                if td_MLKL < td_PARP:
                    objective.append(np.sum((ynorm[k][0][:,1] - ysim_tp) ** 2 / (2 * ynorm[k][0][:,2]))+abs(td_PARP - td_MLKL))
                else:
                    objective.append(np.sum((ynorm[k][0][:,1] - ysim_tp) ** 2 / (2 * ynorm[k][0][:,2])))

    return np.sum(objective)
예제 #2
0
def objective_fn(position):
    """return the value of the objective function"""
    ysim_norm = []
    for k in conditions.keys():
        ysim = solve.simulate(position,
                              observables=True,
                              initial_conc=conditions[k])
        ysim_array = ct.extract_records(ysim, ynorm[k][1])
        ysim_norm.append(ct.normalize(ysim_array, option=1))

    objective = []
    timepoints = [0, 21600, 43200, 86400]
    keys = conditions.keys()
    for i in range(len(ysim_norm)):
        ysim_tp = ct.cubic_spline(solve.options.tspan, ysim_norm[i],
                                  timepoints)  #ysim(t = expe. timepoints)

        # Modifiying the objective function to penalize, when an apoptotic cell behaves necrotically, and vice versa. I consider a cell apoptotic when the time-delay (i.e. the time at which the signal is at 50% maximum) of the apoptotic signal is less than that of the necrotic signal. This aproach works so long as the gain of the signals is not as senstive to conditions at the time-delay.

        PARP_MLKL_signals = ct.extract_records(ysim, ['Obs_cPARP', 'Obs_MLKL'])
        td_PARP = calculate_time_delay(PARP_MLKL_signals[:, 0])
        td_MLKL = calculate_time_delay(PARP_MLKL_signals[:, 1])

        if ((keys[i] == 'TKO') & (td_PARP < td_MLKL)
            ):  # | ((keys[i] == 'WT') & (td_PARP > td_MLKL)):
            objective.append(
                np.sum((ynorm[keys[i]][0][:, 1] - ysim_tp)**2 /
                       (2 * ynorm[keys[i]][0][:, 2])) + abs(td_PARP - td_MLKL))
        else:
            objective.append(
                np.sum((ynorm[keys[i]][0][:, 1] - ysim_tp)**2 /
                       (2 * ynorm[keys[i]][0][:, 2])))

    return np.sum(objective)
예제 #3
0
파일: datatools.py 프로젝트: LoLab-VU/anrm
 def assign_obs_values(self):
     #Chect to see that ysims, xsims not None
     self.signal = ct.extract_records(self.ysim, [i.strip() for i in self.observable.split(',')])
     if self.normalize:
         self.signal = ct.normalize(self.signal, option = self.normalize)
 
     if self.obs_func_input:
         if self.type == 'Quantitative':
             print max(self.signal)
         return self.obs_func(self.signal, self.obs_func_input, self.tspan)
     else:
         return self.obs_func(self.signal, self.tspan)
예제 #4
0
파일: fit_3_0.py 프로젝트: clopezx/anrm
def objective_fn(position):
    """return the value of the objective function"""
    objective = []
    for k in conditions.keys():
        ysim = solve.simulate(position, observables=True, initial_conc=conditions[k])
        ysim_array = ct.extract_records(ysim, ynorm[k][1])
        ysim_norm  = ct.normalize(ysim_array, option = 1)
        ysim_tp    = ct.cubic_spline(solve.options.tspan, ysim_norm, ynorm[k][0][:,0]*3600)
        
        objective.append(np.sum((ynorm[k][0][:,1] - ysim_tp) ** 2 / (2 * ynorm[k][0][:,2])))

    return np.sum(objective)
예제 #5
0
파일: fit_3_0.py 프로젝트: clopezx/anrm
def objective_fn(position):
    """return the value of the objective function"""
    objective = []
    for k in conditions.keys():
        ysim = solve.simulate(position,
                              observables=True,
                              initial_conc=conditions[k])
        ysim_array = ct.extract_records(ysim, ynorm[k][1])
        ysim_norm = ct.normalize(ysim_array, option=1)
        ysim_tp = ct.cubic_spline(solve.options.tspan, ysim_norm,
                                  ynorm[k][0][:, 0] * 3600)

        objective.append(
            np.sum((ynorm[k][0][:, 1] - ysim_tp)**2 / (2 * ynorm[k][0][:, 2])))

    return np.sum(objective)
예제 #6
0
#-----------Simulator Settings--------------------------
sims = sim.Settings()
sims.model = model
sims.tspan = np.linspace(0,10000,100) #24hrs converted to seconds (1000 timepoints)
sims.estimate_params = model.parameters_rules()
sims.rtol = 1e-4
sims.atol = 1e-8

solve = sim.Solver(sims)
solve.run()

#-----------Initial Conditions--------------------------
ic_params  = model.parameters_initial_conditions()
conditions = ct.initial_conditions([], [], ic_params)
ysim = solve.simulate(position = None, observables=True, initial_conc = conditions)

yout = ct.extract_records(ysim, ['Obs_cPARP', 'Obs_MLKL'])

PARP_MLKL_signals   = yout
td_PARP = ct.calculate_time_delay(PARP_MLKL_signals[:,0], sims.tspan)
td_MLKL = ct.calculate_time_delay(PARP_MLKL_signals[:,1], sims.tspan)
print td_PARP, td_MLKL

p.ion()
p.plot(sims.tspan, yout[:,0], label = 'Cleaved Parp')
p.plot(sims.tspan, yout[:,1], label = 'MLKL')

p.xlabel('time [sec]')
p.ylabel('PARP and MLKL concentration [molecules per cell]')
p.legend()
예제 #7
0
from pysb.integrate  import odesolve

#-----------Calibrated Parameters-----------------------
position = pickle.load(open('CompII_Hypthesis_123_addeddata_4run_v41_Position.pkl'))

#-----------Simulator Settings--------------------------
sims = sim.Settings()
sims.model = model
sims.tspan = np.linspace(0,20000,1000)
sims.estimate_params = model.parameters_rules()
sims.rtol = 1e-3
sims.atol = 1e-6

solve = sim.Solver(sims)
solve.run()

#-----------Initial Conditions--------------------------
ic_params  = model.parameters_initial_conditions()
conditions = ct.initial_conditions(['Bak_0', 'Bax_0', 'Bid_0', 'zVad_0'], [0.2e5, 40165, 0, 0], ic_params)
#20uM zVad == 9.6e6 zVad per cell for a cell volume of 8e-13m3
ysim = solve.simulate(position, observables=True, initial_conc = conditions)

yout = ct.extract_records(ysim, ['Obs_cPARP', 'Obs_MLKL','Obs_TNFa','Obs_NFkB', 'ComplexI','ComplexI_ub', 'ComplexI_TRAF', 'TRADD_RIP1', 'TRADD_RIP1_2','Obs_FADD_Sole', 'ComplexII','Bid_Trunc', 'Bid_PO4','Obs_RIP1', 'RIP1_Trunc', 'RIP3_Trunc', 'Necrosome','Obs_proC8', 'Obs_C8', 'Obs_C3ub', 'Obs_C3', 'Obs_pC3', 'RIP1_FADD','Obs_cPARP', 'Obs_PARP', 'Obs_MLKL','Obs_CytoC'])

p.ion()
p.plot(sims.tspan, yout[:,0], label = 'Cleaved Parp')
p.plot(sims.tspan, yout[:,1], label = 'MLKL')

p.xlabel('time [sec]')
p.ylabel('PARP and MLKL concentration [molecules per cell]')
p.legend()
예제 #8
0
#-----------Simulator Settings--------------------------
sims = sim.Settings()
sims.model = model
sims.tspan = np.linspace(0, 10000,
                         100)  #24hrs converted to seconds (1000 timepoints)
sims.estimate_params = model.parameters_rules()
sims.rtol = 1e-4
sims.atol = 1e-8

solve = sim.Solver(sims)
solve.run()

#-----------Initial Conditions--------------------------
ic_params = model.parameters_initial_conditions()
conditions = ct.initial_conditions([], [], ic_params)
ysim = solve.simulate(position=None, observables=True, initial_conc=conditions)

yout = ct.extract_records(ysim, ['Obs_cPARP', 'Obs_MLKL'])

PARP_MLKL_signals = yout
td_PARP = ct.calculate_time_delay(PARP_MLKL_signals[:, 0], sims.tspan)
td_MLKL = ct.calculate_time_delay(PARP_MLKL_signals[:, 1], sims.tspan)
print td_PARP, td_MLKL

p.ion()
p.plot(sims.tspan, yout[:, 0], label='Cleaved Parp')
p.plot(sims.tspan, yout[:, 1], label='MLKL')

p.xlabel('time [sec]')
p.ylabel('PARP and MLKL concentration [molecules per cell]')
p.legend()
예제 #9
0
delta_td = []
apopt_td = []
necro_td = []

condition_variable = 'RIP1_0'
graph_name = 'RIP1'
rangecv = range_RIP1

for i in rangecv:
    #-----------Initial Conditions--------------------------
    ic_params  = model.parameters_initial_conditions()
    conditions = ct.initial_conditions([condition_variable], [i], ic_params)
    ysim = solve.simulate(position = position, observables=True, initial_conc = conditions)

    #-----------Calculate Time Delays-----------------------
    PARP_MLKL_signals   = ct.extract_records(ysim, ['Obs_cPARP', 'Obs_MLKL'])
    td_PARP = ct.calculate_time_delay(PARP_MLKL_signals[:,0], sims.tspan)
    td_MLKL = ct.calculate_time_delay(PARP_MLKL_signals[:,1], sims.tspan)

    #-----------Time Delay vs. procaspase 8-----------------
    if (td_PARP is not None) & (td_MLKL is not None):
        delta_td.append(td_MLKL[0] - td_PARP[0])
        apopt_td.append(td_PARP[0])
        necro_td.append(td_MLKL[0])

#------------Plot Results--------------------------------
pl.ion()
pl.figure('Cell Death Signals')
pl.plot(rangecv, apopt_td)
pl.plot(rangecv, necro_td)
pl.xlabel('%s [molecules/cell]' % graph_name)
예제 #10
0
파일: fit_3_0.py 프로젝트: clopezx/anrm
fitted_values = solve.cur_params(mcmc.position)[solve.estimate_idx]
for param, new_value in zip(sims.estimate_params, fitted_values):
    change = np.log10(new_value / param.value)
    values = (param.name, param.value, new_value, change)
    print '%-10s %-12.2g %-12.2g %-+6.2f' % values

#plot data
plt.ion()
tspan = sims.tspan/3600
initial_params = [p.value for p in sims.estimate_params]
ii = 0
colors = ['b', 'g', 'r', 'c']
for k in conditions.keys():
    plt.errorbar(ynorm[k][0][:,0], ynorm[k][0][:,1], yerr = ynorm[k][0][:,2], fmt = '%s.' % colors[ii], label = '%s data' % k)

    yinitial = ct.normalize(ct.extract_records(solve.simulate(np.log10(initial_params), observables = True, initial_conc = conditions[k]), ynorm[k][1]), option = 1)
    plt.plot(tspan, yinitial, '%s--' % colors[ii], label = 'initial %s' % k)

    yfinal = ct.normalize(ct.extract_records(solve.simulate(mcmc.position, observables=True, initial_conc=conditions[k]),ynorm[k][1]), option = 1)
    plt.plot(tspan, yfinal, '%s-' % colors[ii], label = 'final %s' % k)

    ii = ii+1

plt.xlabel('time [hrs]')
plt.title('Apoptotic and Necrotic Signals')
plt.legend(loc = 'lower left', bbox_to_anchor = (1.0, -0.02))


"""
TODO
예제 #11
0
mcmc.run()

# print some information about the maximum-likelihood estimate parameter set
print
print '%-10s %-12s %-12s %s' % ('parameter', 'actual', 'fitted', 'log10(fit/actual)')
fitted_values = solve.cur_params(mcmc.position)[solve.estimate_idx]
for param, new_value in zip(sims.estimate_params, fitted_values):
    change = np.log10(new_value / param.value)
    values = (param.name, param.value, new_value, change)
    print '%-10s %-12.2g %-12.2g %-+6.2f' % values

# save data
initial_params = [p.value for p in sims.estimate_params]

for k in ydata.keys():
    yinitial = ct.normalize(ct.extract_records(solve.simulate(np.log10(initial_params), observables = True, initial_conc = conditions[k]), ynorm[k][1]), option = 1)
    pickle.dump(yinitial, open('%s_Initial_Values_%s.pkl' % (Exp_name, k), 'wb'))
    
    yfinal = ct.normalize(ct.extract_records(solve.simulate(mcmc.position, observables=True, initial_conc=conditions[k]),ynorm[k][1]), option = 1)
    pickle.dump(yfinal, open('%s_Final_Values_%s.pkl' % (Exp_name, k), 'wb'))

pickle.dump(mcmc.position, open('%s_Position.pkl' % Exp_name, 'wb'))


"""# plot data
plt.ion()
tspan = sims.tspan/3600
initial_params = [p.value for p in sims.estimate_params]
ii = 0
colors = ['b', 'g', 'r', 'c']
예제 #12
0
solve = sim.Solver(sims)
solve.run()

delta_td = []
apopt_td = []
necro_td = []

p.ion()
yout = []

condition_variable = 'BidK_0'
observable = 'Obs_MLKL'
graph_name = 'BidK'
rangecv = range_BidK

for i in rangecv:
    #-----------Initial Conditions--------------------------
    ic_params  = model.parameters_initial_conditions()
    conditions = ct.initial_conditions([condition_variable], [i], ic_params)
    ysim = solve.simulate(position = position, observables=True, initial_conc = conditions)
    
    #-----------Plot Parp and MLKL--------------------------
    yout.append(ct.extract_records(ysim, [observable]))

for j in range(len(rangecv)):
    p.plot(sims.tspan, yout[j], label = '%s %s per cell' % (rangecv[j], graph_name))

p.title('MLKL activation in cells with varying initial %s concentrations' % graph_name)
p.xlabel('time [sec]')
p.ylabel('PARP concentration [molecules per cell]')
p.legend(loc = 'upper left')