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
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
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
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
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)
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)