def automated_curation(*, firings, cluster_metrics, firings_out, opts={}):
    # Automated curation
    label_map = mlp.addProcess(
        'ms4alg.create_label_map',
        {
            'metrics': cluster_metrics
        },
        {
            'label_map_out': True
        },
        {},
        opts
    )['outputs']['label_map_out']
    return mlp.addProcess(
        'ms4alg.apply_label_map',
        {
            'label_map': label_map,
            'firings': firings
        },
        {
            'firings_out': firings_out
        },
        {},
        opts
    )
Пример #2
0
def gen_recording(templates, spiketrains, recording_out, params):
    #ml_mearec.gen_recording()(templates=templates,spiketrains=spiketrains,recording_out=recording_out,**params)
    mlp.addProcess('mearec.gen_recording',
                   inputs=dict(templates=templates, spiketrains=spiketrains),
                   outputs=dict(recording_out=recording_out),
                   parameters=params,
                   opts={})
Пример #3
0
def sort_dataset(dataset_dir, output_dir):
    if not os.path.exists(output_dir):
        os.mkdir(output_dir)

    # Dataset parameters
    ds_params = read_dataset_params(dataset_dir)

    detect_sign = 1
    if 'spike_sign' in ds_params:
        detect_sign = ds_params['spike_sign']
    if 'detect_sign' in ds_params:
        detect_sign = ds_params['detect_sign']

    mlp.addProcess(
        'ironclust.sort',
        {
            'timeseries': dataset_dir + '/raw.mda',
            'geom': dataset_dir + '/geom.csv',
        },
        {'firings_out': output_dir + '/firings.mda'},
        {
            'samplerate': ds_params['samplerate'],
            'detect_sign': detect_sign,
            'prm_template_name': 'tetrode_template.prm'
            #'should_cause_error':123
        },
        {})
Пример #4
0
def ms4alg_sort(*,
                timeseries,
                geom,
                firings_out,
                detect_sign,
                adjacency_radius,
                detect_threshold=3,
                opts={}):
    pp = {}
    pp['detect_sign'] = detect_sign
    pp['adjacency_radius'] = adjacency_radius
    pp['detect_threshold'] = detect_threshold
    mlp.addProcess('ms4alg.sort', {
        'timeseries': timeseries,
        'geom': geom
    }, {'firings_out': firings_out}, pp, opts)
def compute_cluster_metrics(*,
                            timeseries,
                            firings,
                            metrics_out,
                            samplerate,
                            opts={}):
    metrics1 = mlp.addProcess('ms3.cluster_metrics', {
        'timeseries': timeseries,
        'firings': firings
    }, {'cluster_metrics_out': True}, {'samplerate': samplerate},
                              opts)['outputs']['cluster_metrics_out']
    metrics2 = mlp.addProcess('ms3.isolation_metrics', {
        'timeseries': timeseries,
        'firings': firings
    }, {'metrics_out': True}, {'compute_bursting_parents': 'true'},
                              opts)['outputs']['metrics_out']
    return mlp.addProcess('ms3.combine_cluster_metrics',
                          {'metrics_list': [metrics1, metrics2]},
                          {'metrics_out': metrics_out}, {}, opts)
def out_artifacts(*,
                  timeseries,
                  threshold,
                  interval_size,
                  timeseries_out,
                  opts={}):
    return mlp.addProcess('ms3.mask_out_artifacts', {'timeseries': timeseries},
                          {'timeseries_out': timeseries_out}, {
                              'threshold': threshold,
                              'interval_size': interval_size
                          }, opts)
def whiten(*, timeseries, timeseries_out, opts={}):
    return mlp.addProcess(
        'ephys.whiten',
        {
            'timeseries': timeseries
        },
        {
            'timeseries_out': timeseries_out
        },
        {},
        opts
    )
Пример #8
0
def synthesize_dataset(dsdir, *, M, duration, average_snr, K=20):
    if not os.path.exists(dsdir):
        os.mkdir(dsdir)
    noise_level = 10
    average_peak_amplitude = 10 * average_snr
    upsamplefac = 13
    samplerate = 30000
    mlp.addProcess(
        'ephys.synthesize_random_waveforms', dict(),
        dict(waveforms_out=dsdir + '/waveforms_true.mda.prv',
             geometry_out=dsdir + '/geom.csv'),
        dict(upsamplefac=upsamplefac,
             M=M,
             K=K,
             average_peak_amplitude=average_peak_amplitude))
    mlp.addProcess('ephys.synthesize_random_firings', dict(),
                   dict(firings_out=dsdir + '/firings_true.mda.prv'),
                   dict(duration=duration, samplerate=samplerate, K=K))
    mlp.addProcess(
        'ephys.synthesize_timeseries',
        dict(firings=dsdir + '/firings_true.mda',
             waveforms=dsdir + '/waveforms_true.mda'),
        dict(timeseries_out=dsdir + '/raw.mda.prv'),
        dict(duration=duration,
             waveform_upsamplefac=upsamplefac,
             noise_level=noise_level,
             samplerate=samplerate))
    params = dict(samplerate=samplerate, spike_sign=1)
    with open(dsdir + '/params.json', 'w') as f:
        json.dump(params, f)
def synthesize_sample_dataset(*,
                              dataset_dir,
                              samplerate=30000,
                              duration=600,
                              num_channels=4,
                              opts={}):
    if not os.path.exists(dataset_dir):
        os.mkdir(dataset_dir)
    M = num_channels
    mlp.addProcess('ephys.synthesize_random_waveforms', {}, {
        'geometry_out': dataset_dir + '/geom.csv',
        'waveforms_out': dataset_dir + '/waveforms_true.mda'
    }, {
        'upsamplefac': 13,
        'M': M,
        'average_peak_amplitude': 100
    }, opts)
    mlp.addProcess('ephys.synthesize_random_firings', {},
                   {'firings_out': dataset_dir + '/firings_true.mda'},
                   {'duration': duration}, opts)
    mlp.addProcess(
        'ephys.synthesize_timeseries', {
            'firings': dataset_dir + '/firings_true.mda',
            'waveforms': dataset_dir + '/waveforms_true.mda'
        }, {'timeseries_out': dataset_dir + '/raw.mda.prv'}, {
            'duration': duration,
            'waveform_upsamplefac': 13,
            'noise_level': 10
        }, opts)
    params = {'samplerate': samplerate, 'spike_sign': 1}
    with open(dataset_dir + '/params.json', 'w') as outfile:
        json.dump(params, outfile, indent=4)
Пример #10
0
def compute_templates(*,timeseries,firings,templates_out,opts={}):
    return mlp.addProcess(
        'ephys.compute_templates',
        {
            'timeseries':timeseries,
            'firings':firings
        },
        {
            'templates_out':templates_out
        },
        {},
        opts
    )['outputs']['templates_out']
def compute_templates(*,timeseries,firings,templates_out=True,opts={}):
    return mlp.addProcess(
        'ephys.compute_templates',
        dict(
            firings=firings,
            timeseries=timeseries
        ),
        dict(
            templates_out=templates_out
        ),
        dict(),
        opts
    )['outputs']['templates_out']
def compare_ground_truth(*,firings,firings_true,json_out,opts={}):
    return mlp.addProcess(
        'ephys.compare_ground_truth',
        dict(
            firings=firings,
            firings_true=firings_true
        ),
        dict(
            json_out=json_out
        ),
        dict(),
        opts
    )['outputs']['json_out']
def bandpass_filter(*,
                    timeseries,
                    timeseries_out,
                    samplerate,
                    freq_min,
                    freq_max,
                    opts={}):
    return mlp.addProcess('ephys.bandpass_filter', {'timeseries': timeseries},
                          {'timeseries_out': timeseries_out}, {
                              'samplerate': samplerate,
                              'freq_min': freq_min,
                              'freq_max': freq_max
                          }, opts)
Пример #14
0
def gen_spiketrains(spiketrains_out, params):
    mlp.addProcess('mearec.gen_spiketrains',
                   inputs=dict(),
                   outputs=dict(spiketrains_out=spiketrains_out),
                   parameters=params,
                   opts={})