コード例 #1
0
def frap_pb_correction(pointer_pd: pd.DataFrame, ctrl_pd: pd.DataFrame):
    """
    Photobleaching correction for FRAP
    :param pointer_pd: pd.DataFrame, dataframe of all the bleach spots
    :param ctrl_pd: pd.DataFrame, dataframe of control spots
    :return:
    """
    # calculate photobleaching factor
    pb_factor = ana.get_pb_factor(ctrl_pd['bg_cor_int'])

    pointer_pd['pb_factor'] = [pb_factor] * len(pointer_pd)

    # pb_factor fitting with single exponential decay
    pb_fit = mat.fitting_single_exp_decay(np.arange(0, len(pb_factor), 1),
                                          pb_factor)
    pointer_pd = dat.add_columns(pointer_pd, [
        'pb_single_exp_decay_fit', 'pb_single_exp_decay_r2',
        'pb_single_exp_decay_a', 'pb_single_exp_decay_b',
        'pb_single_exp_decay_c'
    ], [[pb_fit[0]] * len(pointer_pd), [pb_fit[1]] * len(pointer_pd),
        [pb_fit[2]] * len(pointer_pd), [pb_fit[3]] * len(pointer_pd),
        [pb_fit[4]] * len(pointer_pd)])

    # photobleaching correction
    if np.isnan(pb_fit[2]):
        pb = pb_factor
    else:
        pb = pb_fit[0]
    pointer_pd['mean_int'] = ana.pb_correction(pointer_pd['bg_cor_int'], pb)
    return pointer_pd
        # link ctrl spots with corresponding organelle
        ctrl_pd['%s' % analyze_organelle] = obj.points_in_objects(
            label_organelle, ctrl_pd['x'], ctrl_pd['y'])

        print("### Image analysis: background correction ...")
        # background intensity measurement
        bg_int_tseries = ana.get_bg_int(pixels_tseries)
        pointer_pd['bg_int'] = [bg_int_tseries] * len(pointer_pd)

        # background intensity fitting
        bg_fit = mat.fitting_linear(np.arange(0, len(bg_int_tseries), 1),
                                    bg_int_tseries)
        pointer_pd = dat.add_columns(
            pointer_pd,
            ['bg_linear_fit', 'bg_linear_r2', 'bg_linear_a', 'bg_linear_b'],
            [[bg_fit[0]] * len(pointer_pd), [bg_fit[1]] * len(pointer_pd),
             [bg_fit[2]] * len(pointer_pd), [bg_fit[3]] * len(pointer_pd)])

        # background correction
        # use original measurement if fitting does not exist
        if np.isnan(bg_fit[2]):
            bg = bg_int_tseries
        else:
            bg = bg_fit[0]
        pointer_pd['bg_cor_int'] = ana.bg_correction(pointer_pd['raw_int'],
                                                     [bg] * len(pointer_pd))
        ctrl_pd['bg_cor_int'] = ana.bg_correction(ctrl_pd['raw_int'],
                                                  [bg] * len(ctrl_pd))

        # filter control traces
コード例 #3
0
ctrl_pd = pd.DataFrame({
    'ctrl_spots': np.arange(0, num_ctrl_spots, 1),
    'raw_int': ctrl_spots_int_tseries
})

print("### Image analysis: background correction ...")
# background intensity measurement
bg_int_tseries = ana.get_bg_int(pixels_tseries)
pointer_pd['bg_int'] = [bg_int_tseries] * len(pointer_pd)

# background intensity fitting
bg_fit = mat.fitting_linear(np.arange(0, len(bg_int_tseries), 1),
                            bg_int_tseries)
pointer_pd = dat.add_columns(
    pointer_pd,
    ['bg_linear_fit', 'bg_linear_r2', 'bg_linear_a', 'bg_linear_b'],
    [[bg_fit[0]] * len(pointer_pd), [bg_fit[1]] * len(pointer_pd),
     [bg_fit[2]] * len(pointer_pd), [bg_fit[3]] * len(pointer_pd)])

# background correction
# use original measurement if fitting does not exist
if np.isnan(bg_fit[2]):
    bg = bg_int_tseries
else:
    bg = bg_fit[0]
pointer_pd['bg_cor_int'] = ana.bg_correction(pointer_pd['raw_int'], bg)
ctrl_pd['bg_cor_int'] = ana.bg_correction(ctrl_pd['raw_int'], bg)

# filter control traces
filter_ctrl = []
for i in range(len(ctrl_pd)):