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()
Esempio n. 2
0
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)