Example #1
0
def analyze_behavior(data_path, condition):
    res = analysis.load_all_cons(data_path)
    analysis.add_indices(res)
    analysis.add_time(res)
    lick_res = convert(res, condition)
    days_per_mouse = _get_days_per_condition(data_path, condition)
    last_day_per_mouse = np.array([x[-1] for x in days_per_mouse])
    plot_res = agglomerate_days(lick_res, condition,
                                condition.training_start_day,
                                last_day_per_mouse)
    add_odor_value(plot_res, condition)
    add_behavior_stats(plot_res, condition)
    return plot_res
Example #2
0
def get_licks_per_day(data_path, condition, return_raw=False):
    res = analysis.load_all_cons(data_path)
    analysis.add_indices(res)
    analysis.add_time(res)
    lick_res = convert(res, condition)
    lick_res['lick_boolean'] = np.array([y > 0 for y in lick_res['lick']])
    out = reduce.new_filter_reduce(lick_res, ['odor', 'day', 'mouse'],
                                   'lick_boolean')
    if return_raw:
        add_odor_value(lick_res, condition)
        return lick_res
    else:
        return out
Example #3
0
def custom_analyze_behavior(data_path, condition, start_time, end_time):
    import analysis
    from behavior import behavior_analysis
    res = analysis.load_all_cons(data_path)
    analysis.add_indices(res)
    analysis.add_time(res)
    lick_res = custom_convert(res, condition, start_time, end_time)
    days_per_mouse = behavior_analysis._get_days_per_condition(
        data_path, condition)
    last_day_per_mouse = np.array([x[-1] for x in days_per_mouse])
    plot_res = behavior_analysis.agglomerate_days(lick_res, condition,
                                                  condition.training_start_day,
                                                  last_day_per_mouse)
    analysis.add_odor_value(plot_res, condition)
    behavior_analysis.add_behavior_stats(plot_res, condition)
    return plot_res
Example #4
0
def _get_days_per_condition(data_path, condition, odor_valence=None):
    res = analysis.load_all_cons(data_path)
    analysis.add_indices(res)
    lick_res = convert(res, condition)
    if odor_valence is not None:
        add_odor_value(lick_res, condition)
        lick_res = filter.filter(lick_res, {'odor_valence': odor_valence})

    days = []
    list_of_dates = lick_res['day']
    list_of_mice = lick_res['mouse']
    _, mouse_ixs = np.unique(list_of_mice, return_inverse=True)
    for mouse_ix in np.unique(mouse_ixs):
        mouse_dates = list_of_dates[mouse_ixs == mouse_ix]
        counts = np.unique(mouse_dates)
        days.append(counts)
    return days
Example #5
0
                           condition.name)

# retrieving relevant days
learned_day_per_mouse, last_day_per_mouse = get_days_per_mouse(
    data_path, condition)

if condition_config.start_at_training and hasattr(condition,
                                                  'training_start_day'):
    start_days_per_mouse = condition.training_start_day
else:
    start_days_per_mouse = [0] * len(condition_config.condition.paths)
training_start_day_per_mouse = condition.training_start_day

#behavior
lick_res = behavior.behavior_analysis.get_licks_per_day(data_path, condition)
analysis.add_odor_value(lick_res, condition)
lick_res = filter.filter(lick_res, {'odor_valence': ['CS+', 'CS-', 'PT CS+']})
lick_res = reduce.new_filter_reduce(lick_res, ['odor_valence', 'day', 'mouse'],
                                    reduce_key='lick_boolean')
temp_res = behavior.behavior_analysis.analyze_behavior(data_path, condition)

if condition.name == 'OFC' or condition.name == 'BLA':
    if condition.name == 'OFC':
        last_day_per_mouse = [5, 5, 3, 4, 4]

    res = statistics.analyze.analyze_data(save_path,
                                          condition_config,
                                          m_threshold=0.04)

    # naive_config = statistics.analyze.OFC_LONGTERM_Config()
    # data_path_ = os.path.join(Config.LOCAL_DATA_PATH, Config.LOCAL_DATA_TIMEPOINT_FOLDER, naive_config.condition.name)
Example #6
0

def _rolling_window(a, window):
    shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)
    strides = a.strides + (a.strides[-1], )
    return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)


if __name__ == '__main__':
    config = psth.psth_helper.PSTHConfig()
    condition_config = PIR_NAIVE_Config()
    condition = condition_config.condition

    data_path = os.path.join(Config.LOCAL_DATA_PATH,
                             Config.LOCAL_DATA_TIMEPOINT_FOLDER,
                             condition.name)
    save_path = os.path.join(Config.LOCAL_EXPERIMENT_PATH, 'COUNTING',
                             condition.name)
    figure_path = os.path.join(Config.LOCAL_FIGURE_PATH, 'OTHER', 'PSTH',
                               condition.name, 'CELL')

    res = analysis.load_data(data_path)
    analysis.add_indices(res, arg_plane=True)
    analysis.add_time(res)
    odor_res = convert(res, condition_config)
    analysis.add_odor_value(odor_res, condition_config.condition)
    parse_data(odor_res, excitatory=False)

    # odor_res = fio.load_pickle(pickle_path=os.path.join(save_path,'dict_backup.pkl'))
    # analyze_data(odor_res, condition_config)