Пример #1
0
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
Пример #2
0
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()
Пример #3
0
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)
Пример #4
0
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
Пример #5
0
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)
Пример #6
0
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
Пример #7
0
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()