Пример #1
0
def plot_fits():
    params_dict = {'c0_to_c1_k': 2e-2,
                   'c1_scaling': 20.,
                   'c1_to_c2_k': 1e-4,
                   'c2_scaling': 6.,
                   'c1_to_c2_k': 1e-3,
                   'c3_scaling': 0.5}

    builder = Builder(params_dict=params_dict)
    builder.build_model_multiconf(3, data_dict['c126_nbd'][0],
                                  normalized_data=True,
                                  reversible=False)

    """
    k1 = builder.model.parameters['c0_to_c1_k']
    k2 = builder.model.parameters['c1_to_c2_k']
    k1_index = builder.model.parameters.index(k1)
    k2_index = builder.model.parameters.index(k2)
    k1_est_index = builder.estimate_params.index(k1)
    k2_est_index = builder.estimate_params.index(k2)
    """

    pysb_fit = fitting.fit_pysb_builder(builder, 'NBD', data_dict['c126_nbd_time'],
                                        data_dict['c126_nbd'])

    plt.figure()
    plt.plot(data_dict['c126_nbd_time'], data_dict['c126_nbd'], linestyle='', marker='.')
    plt.plot(data_dict['c126_nbd_time'], pysb_fit.ypred)
    plt.xlabel('Time (sec)')
def plot_2conf_fits(activator):
    plt.ion()
    #nbd_sites = ['15']
    nbd_sites = ['3', '5', '15', '36', '47', '54', '62', '68', '79', '120',
                 '122', '126', '138', '151', '175', '179', '184', '188']
    replicates = range(1, 4)
    count = 0
    fit_results = []

    plt.figure("Fitted k1")
    for nbd_index, nbd_site in enumerate(nbd_sites):
        k1_means = []
        k1_sds = []

        for rep_index in replicates:
            nt = df[(activator, 'NBD', nbd_site, rep_index, 'TIME')].values
            ny = df[(activator, 'NBD', nbd_site, rep_index, 'VALUE')].values

            plt.figure('%s, NBD-%s-Bax Fits' % (activator, nbd_site),
                       figsize=(6, 5))

            builder = Builder(params_dict=params_dict)
            builder.build_model_multiconf(2, ny[0], normalized_data=True)

            pysb_fit = fitting.fit_pysb_builder(builder, 'NBD', nt, ny)
            plt.plot(nt, ny, linestyle='', marker='.',
                    color=rep_colors[rep_index])
            plt.plot(nt, pysb_fit.ypred,
                     label='%s Rep %d' % (activator, rep_index),
                     color=rep_colors[rep_index])
            plt.xlabel('Time (sec)')
            plt.ylabel('$F/F_0$')
            plt.title('NBD $F/F_0$ fits, NBD-%s-Bax' % nbd_site)
            plt.legend(loc='lower right')
            # Calculate stderr of parameters (doesn't account for covariance)
            (k1_mean, k1_sd) = _mean_sd('c0_to_c1_k', builder, pysb_fit)
            k1_means.append(k1_mean)
            k1_sds.append(k1_sd)
            (c1_mean, c1_sd) = _mean_sd('c1_scaling', builder, pysb_fit)

            fit_results.append(FitResult(builder, activator, nbd_site,
                                         rep_index, 'NBD', 'c0_to_c1_k',
                                         k1_mean, k1_sd))
            fit_results.append(FitResult(builder, activator, nbd_site,
                                         rep_index, 'NBD', 'c1_scaling',
                                         c1_mean, c1_sd))
            count += 1

        plt.figure('%s, NBD-%s-Bax Fits' % (activator, nbd_site))
        plt.tight_layout()

        plt.figure("Fitted k1")
        plt.bar(range(nbd_index*4, (nbd_index*4) + 3), k1_means,
                yerr=k1_sds, width=1, color='r', ecolor='k')

    num_sites = len(nbd_sites)
    plt.figure("Fitted k1")
    plt.ylabel('Fitted k1 ($sec^{-1}$)')
    ax = plt.gca()
    ax.set_xticks(np.arange(1.5, 1.5 + num_sites * 4, 4))
    ax.set_xticklabels(nbd_sites)

    return fit_results
Пример #3
0
    a = fitting.Parameter(1e-3)
    b = fitting.Parameter(1e-4)
    c = fitting.Parameter(1e-4)
    def gompertz(t):
        return a() * np.exp(-b() * np.exp(-c()* t))
    fitting.fit(gompertz, [a, b, c], rp, rt)
    plt.plot(rt, gompertz(rt))

    plt.figure()
    plt.plot(rt, ry, color='r')
    plt.title('Release')




    #t = np.linspace(0, 10000, 10000)
    t = rt
    solver = Solver(builder.model, t)
    solver.run()
    plt.figure()
    plt.plot(rt, ry, color='r')
    plt.plot(t, solver.yexpr['Release'])
    plt.plot(t, solver.yexpr['iBax_frac'])
    plt.plot(t, solver.yexpr['cBax_frac'])

    pysb_fit = fitting.fit_pysb_builder(builder, 'Release', rt, ry)
    plt.figure()
    plt.plot(rt, ry, color='r')
    plt.plot(rt, pysb_fit.ypred)

def plot_3conf_fits(activator):
    plt.ion()
    #nbd_sites = ['15']
    nbd_sites = ['3', '5', '15', '36', '47', '54', '62', '68', '79', '120',
                 '122', '126', '138', '151', '175', '179', '184', '188']
    replicates = range(1, 4)
    count = 0
    fit_results = []
    plt.figure("Fitted k1/k2")
    for nbd_index, nbd_site in enumerate(nbd_sites):
        k1_means = []
        k2_means = []
        k1_sds = []
        k2_sds = []

        for rep_index in replicates:
            rt = df[(activator, 'Release', nbd_site, rep_index, 'TIME')].values
            ry = df[(activator, 'Release', nbd_site, rep_index, 'VALUE')].values
            nt = df[(activator, 'NBD', nbd_site, rep_index, 'TIME')].values
            ny = df[(activator, 'NBD', nbd_site, rep_index, 'VALUE')].values

            """
            plt.figure()
            plt.plot(rt, ry)
            plt.figure()
            plt.plot(nt, ny)
            plt.figure()
            plt.plot(nt, ry / ny)

            ry_norm = (ry - np.min(ry)) / (np.max(ry) - np.min(ry))
            ny_norm = (ny - np.min(ny)) / (np.max(ny) - np.min(ny))

            plt.figure()
            plt.plot(rt, ry_norm, color='g')
            plt.plot(rt, ny_norm, color='b')
            """
            plt.figure('%s, NBD-%s-Bax Fits' % (activator, nbd_site),
                       figsize=(12, 5))
            plt.subplot(1, 2, 1)
            plt.plot(rt, ry,
                     linestyle='', marker='.',
                     color=rep_colors[rep_index])
            twoexp = tf.TwoExpLinear()
            #twoexp = tf.TwoExp()
            params = twoexp.fit_timecourse(rt, ry)
            plt.plot(rt, twoexp.fit_func(rt, params),
                     label='%s Rep %d' % (activator, rep_index),
                     color=rep_colors[rep_index])
            plt.xlabel('Time (sec)')
            plt.ylabel('% Tb release')
            plt.title('%% Tb release fits, NBD-%s-Bax' % nbd_site)
            plt.legend(loc='lower right')

            builder = Builder(params_dict=params_dict)
            builder.build_model_multiconf(3, ny[0], normalized_data=True)

            pysb_fit = fitting.fit_pysb_builder(builder, 'NBD', nt, ny)
            plt.subplot(1, 2, 2)
            plt.plot(nt, ny, linestyle='', marker='.',
                    color=rep_colors[rep_index])
            plt.plot(nt, pysb_fit.ypred,
                     label='%s Rep %d' % (activator, rep_index),
                     color=rep_colors[rep_index])
            plt.xlabel('Time (sec)')
            plt.ylabel('$F/F_0$')
            plt.title('NBD $F/F_0$ fits, NBD-%s-Bax' % nbd_site)
            plt.legend(loc='lower right')
            # Calculate stderr of parameters (doesn't account for covariance)
            (k1_mean, k1_sd) = _mean_sd('c0_to_c1_k', builder, pysb_fit)
            (k2_mean, k2_sd) = _mean_sd('c1_to_c2_k', builder, pysb_fit)
            (c1_mean, c1_sd) = _mean_sd('c1_scaling', builder, pysb_fit)
            (c2_mean, c2_sd) = _mean_sd('c2_scaling', builder, pysb_fit)

            fit_results.append(FitResult(builder, activator, nbd_site,
                                         rep_index, 'NBD', 'c0_to_c1_k',
                                         k1_mean, k1_sd))
            fit_results.append(FitResult(builder, activator, nbd_site,
                                         rep_index, 'NBD', 'c1_scaling',
                                         c1_mean, c1_sd))
            fit_results.append(FitResult(builder, activator, nbd_site,
                                         rep_index, 'NBD', 'c1_to_c2_k',
                                         k2_mean, k2_sd))
            fit_results.append(FitResult(builder, activator, nbd_site,
                                         rep_index, 'NBD', 'c2_scaling',
                                         c2_mean, c2_sd))

            k1_means.append(k1_mean)
            k2_means.append(k2_mean)
            k1_sds.append(k1_sd)
            k2_sds.append(k2_sd)

            """
            plt.figure()
            s = Solver(builder.model, nt)
            s.run(param_values=pysb_fit.params)
            plt.plot(nt, s.yobs['Bax_c0'])
            plt.plot(nt, s.yobs['Bax_c1'])
            plt.plot(nt, s.yobs['Bax_c2'])
            """
            count += 1
        #plt.title(nbd_site)
        #plt.xlabel('Time (sec)')
        #plt.ylabel('$F/F_0$')
        plt.figure('%s, NBD-%s-Bax Fits' % (activator, nbd_site))
        plt.tight_layout()

        plt.figure("Fitted k1/k2")
        plt.bar(range(nbd_index*7, (nbd_index*7) + 3), k1_means,
                yerr=k1_sds, width=1, color='r', ecolor='k')
        plt.bar(range(nbd_index*7+3, (nbd_index*7) + 6), k2_means,
                yerr=k2_sds, width=1, color='g', ecolor='k')

    num_sites = len(nbd_sites)
    plt.figure("Fitted k1/k2")
    plt.ylabel('Fitted k1/k2 ($sec^{-1}$)')
    ax = plt.gca()
    ax.set_xticks(np.arange(3, 3 + num_sites * 7, 7))
    ax.set_xticklabels(nbd_sites)

    return fit_results