def load_aroc_res(res_dir, nrate, tstep, n_perm, offsets): """Load AROC results.""" fres = aroc_res_fname(res_dir, nrate, tstep, n_perm, offsets) aroc_res = util.read_objects(fres) return aroc_res
def plot_response(f_sealcombined, resp_plot_dir, plot_DR=True, plot_sel=True): """Plot basic unit activity figures.""" print('\nStarting plotting unit activity...') putil.inline_off() # Init folders. ftempl_dr = util.join([resp_plot_dir, 'direction_response', '{}.png']) ftempl_sel = util.join([resp_plot_dir, 'stimulus_selectivity', '{}.png']) # Read in Units. print(' Reading in UnitArray...') UA = util.read_objects(f_sealcombined, 'UnitArr') # Test stimulus response to all directions. if plot_DR: print(' Plotting direction response...') DR_plot(UA, ftempl_dr) # Plot feature selectivity summary plots. if plot_sel: print(' Plotting selectivity summary figures...') selectivity_summary(UA, ftempl_sel) # Re-enable inline plotting putil.inline_on()
def test_DS_frecs(frecs): """Test DS of list of recordings.""" print('Testing DS...') for frec in frecs: print(frec) UA = util.read_objects(frec, 'UnitArr') test_DS(UA) util.write_objects({'UnitArr': UA}, frec)
def create_UA_from_recs(frecs, ua_name='UA'): """Create combined UnitArray from multiple recordings.""" UA = unitarray.UnitArray(ua_name) for frec in frecs: rUA = util.read_objects(frec, 'UnitArr') UA.add_recording(rUA) return UA
def plot_ROC_mean(d_faroc, t1=None, t2=None, ylim=None, colors=None, ylab='AROC', ffig=None): """Plot mean ROC curves over given period.""" # Import results. d_aroc = {} for name, faroc in d_faroc.items(): aroc = util.read_objects(faroc, 'aroc') d_aroc[name] = aroc.unstack().T # Format results. laroc = pd.DataFrame(pd.concat(d_aroc), columns=['aroc']) laroc['task'] = laroc.index.get_level_values(0) laroc['time'] = laroc.index.get_level_values(1) laroc['unit'] = laroc.index.get_level_values(2) laroc.index = np.arange(len(laroc.index)) # Init figure. fig = putil.figure(figsize=(6, 6)) ax = sns.tsplot(laroc, time='time', value='aroc', unit='unit', condition='task', color=colors) # Highlight stimulus periods. putil.plot_periods(ax=ax) # Plot mean results. [ax.lines[i].set_linewidth(3) for i in range(len(ax.lines))] # Add chance level line. putil.add_chance_level(ax=ax, alpha=0.8, color='k') ax.lines[-1].set_linewidth(1.5) # Format plot. xlab = 'Time since S1 onset (ms)' putil.set_labels(ax, xlab, ylab) putil.set_limits(ax, [t1, t2], ylim) putil.set_spines(ax, bottom=True, left=True, top=False, right=False) putil.set_legend(ax, loc=0) # Save plot. putil.save_fig(ffig, fig, ytitle=1.05, w_pad=15)
def load_res(res_dir, list_n_most_DS=None, **par_kws): """Load decoding results.""" if list_n_most_DS is None: list_n_most_DS = [par_kws['n_most_DS']] # Load results for each number of units included. all_rt_res = {} for n_most_DS in list_n_most_DS: par_kws['n_most_DS'] = n_most_DS fres = res_fname(res_dir, 'results', **par_kws) rt_res = util.read_objects(fres, 'rt_res') all_rt_res[n_most_DS] = rt_res return all_rt_res
def quality_control(data_dir, proj_name, task_order, plot_qm=True, plot_stab=True, fselection=None): """Run quality control (SNR, rate drift, ISI, etc) on each recording.""" # Data directory with all recordings to be processed in subfolders. rec_data_dir = data_dir + 'recordings' # Init combined UnitArray object. combUA = unitarray.UnitArray(proj_name, task_order) print('\nStarting quality control...') putil.inline_off() for recording in sorted(os.listdir(rec_data_dir)): if recording[0] == '_': continue # Report progress. print(' ' + recording) # Init folder. rec_dir = util.join([rec_data_dir, recording]) qc_dir = util.join([rec_dir, 'quality_control']) # Read in Units. f_data = util.join([rec_dir, 'SealCells', recording + '.data']) UA = util.read_objects(f_data, 'UnitArr') # Test unit quality, save result figures, add stats to units and # exclude low quality trials and units. ftempl = util.join([qc_dir, 'QC_plots', '{}.png']) quality_test(UA, ftempl, plot_qm, fselection) # Report unit exclusion stats. report_unit_exclusion_stats(UA) # Test stability of recording session across tasks. if plot_stab: print(' Plotting recording stability...') fname = util.join([qc_dir, 'recording_stability.png']) test_stability.rec_stability_test(UA, fname) # Add to combined UA. combUA.add_recording(UA) # Add index to unit names. combUA.index_units() # Save Units with quality metrics added. print('\nExporting combined UnitArray...') fname = util.join([data_dir, 'all_recordings.data']) util.write_objects({'UnitArr': combUA}, fname) # Export unit and trial selection results. if fselection is None: print('Exporting automatic unit and trial selection results...') fname = util.joint([data_dir, 'unit_trial_selection.xlsx']) export.export_unit_trial_selection(combUA, fname) # Export unit list. print('Exporting combined unit list...') export.export_unit_list(combUA, util.join([data_dir, 'unit_list.xlsx'])) # Re-enable inline plotting putil.inline_on()