event_std_thr=event_std_thr, peri_event_dur=peri_event_dur, corr_len_thr=corr_len_thr, corr_abs_thr=corr_abs_thr, corr_std_thr=corr_std_thr, is_cosine_similarity=is_cosine_similarity, distance_metric=distance_metric, linkage_method=linkage_method, distance_thr=distance_thr) for nwb_fi, nwb_fn in enumerate(nwb_fns): print('processing {}, {}/{}'.format(nwb_fn, nwb_fi + 1, len(nwb_fns))) nwb_f = h5py.File(os.path.join(nwb_folder, nwb_fn), 'r') plane_ns = dt.get_plane_ns(nwb_f=nwb_f) plane_ns.sort() for plane_i, plane_n in enumerate(plane_ns): print('\n\t{}, {}/{}'.format(plane_n, plane_i + 1, len(plane_ns))) bc.process_plane(nwb_f=nwb_f, save_folder=save_folder, plane_n=plane_n, trace_type=trace_type, trace_window=trace_window) nwb_f.close()
def process_one_nwb_for_multi_thread(inputs): nwb_path, df_folder, clu_folder, params, columns, save_folder, t0, nwb_i, nwb_f_num, is_overwrite = inputs nwb_fn = os.path.splitext(os.path.split(nwb_path)[1])[0] date, mid, _, _ = nwb_fn.split('_') nwb_f = h5py.File(nwb_path, 'r') plane_ns = dt.get_plane_ns(nwb_f=nwb_f) plane_ns.sort() for plane_n in plane_ns: print('\tt: {:5.0f} minutes, processing {}, {} / {}, {} ...'.format( (time.time() - t0) / 60., nwb_fn, nwb_i + 1, nwb_f_num, plane_n)) roi_df_fn = '{}_{}_{}.csv'.format(date, mid, plane_n) roi_df = pd.read_csv(os.path.join(df_folder, roi_df_fn)) clu_fn = '{}_{}_{}_axon_grouping.hdf5'.format(date, mid, plane_n) clu_f = h5py.File(os.path.join(clu_folder, clu_fn), 'r') axon_ns = clu_f['axons'].keys() axon_ns.sort() axon_df = pd.DataFrame(np.nan, index=range(len(axon_ns)), columns=columns) for axon_i, axon_n in enumerate(axon_ns): roi_lst = clu_f['axons/{}'.format(axon_n)].value if len(roi_lst) == 1: curr_roi_df = roi_df[roi_df['roi_n'] == roi_lst[0]].reset_index() for col in columns: axon_df.loc[axon_i, col] = curr_roi_df.loc[0, col] axon_df.loc[axon_i, 'roi_n'] = axon_n else: axon_properties, _, _, _, _, _, _, _, _, _, _, _, _, _ = \ dt.get_everything_from_axon(nwb_f=nwb_f, clu_f=clu_f, plane_n=plane_n, axon_n=axon_n, params=params, verbose=False) for rp_name, rp_value in axon_properties.items(): axon_df.loc[axon_i, rp_name] = rp_value save_path = os.path.join(save_folder, '{}_{}_{}.csv'.format(date, mid, plane_n)) if os.path.isfile(save_path): if is_overwrite: os.remove(save_path) axon_df.to_csv(save_path) else: raise IOError( 'Axon dataframe file already exists. \npath: {}'.format( save_path)) else: axon_df.to_csv(save_path)