예제 #1
0
def automated_curation(*,firings,cluster_metrics,firings_out,opts={}):
    # Automated curation
    label_map=mlp.runProcess(
        'ms4alg.create_label_map',
        {
            'metrics':cluster_metrics
        },
        {
            'label_map_out':True
        },
        {},
        opts
    )['label_map_out']
    return mlp.runProcess(
        'ms4alg.apply_label_map',
        {
            'label_map':label_map,
            'firings':firings
        },
        {
            'firings_out':firings_out
        },
        {},
        opts
    )
예제 #2
0
def ms4alg_sort(*,
                timeseries,
                geom,
                firings_out,
                detect_sign,
                adjacency_radius,
                detect_threshold,
                detect_interval,
                clip_size,
                num_features=10,
                max_num_clips_for_pca=1000,
                num_workers=os.cpu_count(),
                opts={}):
    pp = {}
    pp['detect_sign'] = detect_sign
    pp['adjacency_radius'] = adjacency_radius
    pp['detect_threshold'] = detect_threshold
    pp['clip_size'] = clip_size
    pp['detect_interval'] = detect_interval
    pp['num_workers'] = num_workers
    pp['num_features'] = num_features
    pp['max_num_clips_for_pca'] = max_num_clips_for_pca

    inputs = {'timeseries': timeseries}
    if geom is not None:
        inputs['geom'] = geom

    mlp.runProcess('ms4alg.sort', inputs, {'firings_out': firings_out}, pp,
                   opts)
예제 #3
0
def gen_recording_old(templates, spiketrains, recording_out, params):
    #ml_mearec.gen_recording()(templates=templates,spiketrains=spiketrains,recording_out=recording_out,**params)
    mlp.runProcess('mearec.gen_recording',
                   inputs=dict(templates=templates, spiketrains=spiketrains),
                   outputs=dict(recording_out=recording_out),
                   parameters=params,
                   opts={})
예제 #4
0
def compute_cluster_metrics(timeseries, firings, metrics_out, samplerate,
                            opts=None):
    '''

    Parameters
    ----------
    timeseries : str
        Filepath to `pre.mda.prv` file
    firings : str
        Filepath to `firings_raw.mda` file
    metrics_out : str
        Filepath to the output metrics file
    samplerate : float
    opts : None or dict, optional

    '''
    if opts is None:
        opts = {}
    metrics1 = mlp.runProcess(
        'ms3.cluster_metrics',
        {
            'timeseries': timeseries,
            'firings': firings
        },
        {
            'cluster_metrics_out': True
        },
        {
            'samplerate': samplerate
        },
        opts
    )['cluster_metrics_out']

    metrics2 = mlp.runProcess(
        'ms3.isolation_metrics',
        {
            'timeseries': timeseries,
            'firings': firings
        },
        {
            'metrics_out': True
        },
        {
            'compute_bursting_parents': 'true'
        },
        opts
    )['metrics_out']

    return mlp.runProcess(
        'ms3.combine_cluster_metrics',
        {
            'metrics_list': [metrics1, metrics2]
        },
        {
            'metrics_out': metrics_out  # True
        },
        {},
        opts
    )
예제 #5
0
def gen_spiketrains_old(spiketrains_out, params):
    mlp.runProcess(
        'mearec.gen_spiketrains',
        inputs=dict(
        ),
        outputs=dict(
            spiketrains_out=spiketrains_out
        ),
        parameters=params,
        opts={}
    )
예제 #6
0
def mask_out_artifacts(timeseries,
                       timeseries_out,
                       threshold,
                       interval_size,
                       opts=None):
    '''

    Parameters
    ----------
    timeseries : str
        Filepath to filt.mda.prv file
    timeseries_out : str
        Filepath to filt.mda.prv file
    threshold : float
    interval_size : int
    opts : None or dict, optional

    '''
    if opts is None:
        opts = {}
    return mlp.runProcess('ms3.mask_out_artifacts', {'timeseries': timeseries},
                          {'timeseries_out': timeseries_out}, {
                              'threshold': threshold,
                              'interval_size': interval_size
                          }, opts)
예제 #7
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.runProcess('ms4alg.sort', {
        'timeseries': timeseries,
        'geom': geom
    }, {'firings_out': 'output/firings.mda'}, pp, opts)
예제 #8
0
def bandpass_filter(timeseries,
                    timeseries_out,
                    samplerate,
                    freq_min,
                    freq_max,
                    opts=None):
    '''

    Parameters
    ----------
    timeseries : str
        Filepath to .mda file
    timeseries_out : str
        Filepath to filt.mda.prv file
    samplerate : float
    freq_min : float
    freq_max : float
    opts : None or dict, optional

    '''
    if opts is None:
        opts = {}
    return mlp.runProcess('ephys.bandpass_filter', {'timeseries': timeseries},
                          {'timeseries_out': timeseries_out}, {
                              'samplerate': samplerate,
                              'freq_min': freq_min,
                              'freq_max': freq_max
                          }, opts)
예제 #9
0
def tagged_curation(cluster_metrics,
                    metrics_tagged,
                    firing_rate_thresh=0.01,
                    isolation_thresh=0.95,
                    noise_overlap_thresh=0.03,
                    peak_snr_thresh=1.5,
                    mv2file='',
                    opts=None):
    '''
    Parameters
    ----------
    cluster_metrics : str
        Filepath
    metrics_tagged : str
        Filepath
    firing_rate_thresh : float, optional
    isolation_thresh : float, optional
    noise_overlap_thresh : float, optional
    peak_snr_thresh : float, optional
    mv2file : str, optional
    opts : None or dict, optional
    '''
    if opts is None:
        opts = {}
    return mlp.runProcess('pyms.add_curation_tags',
                          {'metrics': cluster_metrics},
                          {'metrics_tagged': metrics_tagged}, {
                              'firing_rate_thresh': firing_rate_thresh,
                              'isolation_thresh': isolation_thresh,
                              'noise_overlap_thresh': noise_overlap_thresh,
                              'peak_snr_thresh': peak_snr_thresh,
                              'mv2file': mv2file,
                          }, opts)
예제 #10
0
def ms4alg(timeseries,
           geom,
           firings_out,
           detect_sign,
           adjacency_radius,
           detect_threshold,
           detect_interval,
           num_workers,
           opts=None):
    '''
    Parameters
    ----------
    timeseries : str
        Filepath to `pre.mda.prv` file
    geom : list
    firings_out : str
        Filepath to `firings_raw.mda`
    detect_sign : int
    detect_threshold : float
    opts : None or dict, optional

    '''
    if opts is None:
        opts = {}
    pp = {
        'detect_sign': detect_sign,
        'adjacency_radius': adjacency_radius,
        'detect_interval': detect_interval,
        'detect_threshold': detect_threshold,
        'num_workers': num_workers,
    }
    return mlp.runProcess('ms4alg.sort', {
        'timeseries': timeseries,
        'geom': geom
    }, {'firings_out': firings_out}, pp, opts)
예제 #11
0
def pyms_extract_clips(timeseries, firings, clips_out, opts=None):
    '''

    Parameters
    ----------
    timeseries : str
        Filepath to `pre.mda.prv` file
    firings : str
        Filepath to `firings_raw.mda` file
    clips_out : str
        Filepath to `clips.mda` file
    opts : None or dict, optional

    '''
    if opts is None:
        opts = {}
    return mlp.runProcess(
        'pyms.extract_clips',
        {
            'timeseries': timeseries,
            'firings': firings
        },
        {
            'clips_out': clips_out
        },
        opts
    )
예제 #12
0
def whiten(timeseries, timeseries_out, opts=None):
    '''

    Parameters
    ----------
    timeseries : str
        Filepath to 'filt.mda.prv' file
    timeseries_out : str
        Filepath to 'pre.mda.prv' file
    opts : None or dict, optional

    '''
    if opts is None:
        opts = {}
    return mlp.runProcess(
        'ephys.whiten',
        {
            'timeseries': timeseries
        },
        {
            'timeseries_out': timeseries_out
        },
        {},
        opts
    )
예제 #13
0
def add_curation_tags(*,
                      cluster_metrics,
                      output_filename,
                      firing_rate_thresh=0.05,
                      isolation_thresh=0.95,
                      noise_overlap_thresh=0.03,
                      peak_snr_thresh=1.5,
                      opts={}):
    # Automated curation
    mlp.runProcess('pyms.add_curation_tags', {'metrics': cluster_metrics},
                   {'metrics_tagged': output_filename}, {
                       'firing_rate_thresh': firing_rate_thresh,
                       'isolation_thresh': isolation_thresh,
                       'noise_overlap_thresh': noise_overlap_thresh,
                       'peak_snr_thresh': peak_snr_thresh
                   }, opts)
예제 #14
0
def pyms_extract_segment(timeseries, timeseries_out, t1, t2, opts=None):
    '''

    Parameters
    ----------
    timeseries : str
        Filepath
    timeseries_out : str
        Filepath
    t1 : float
    t2 : float
    opts : None or dict, optional

    '''
    if opts is None:
        opts = {}

    return mlp.runProcess(
        'pyms.extract_timeseries',
        {
            'timeseries': timeseries
        },
        {
            'timeseries_out': timeseries_out
        },
        {
            't1': t1,
            't2': t2
        },
        opts
    )
예제 #15
0
def pyms_merge_burst_parents(firings, metrics, firings_out, opts=None):
    '''

    Parameters
    ----------
    firings : str
        Filepath to `firings_raw.mda`
    metrics : str
        Filepath to `metrics_raw`
    firings_out : str
        Filepath to `firings_burst_merged.mda`
    opts : None or dict, optional

    '''
    if opts is None:
        opts = {}
    return mlp.runProcess(
        'pyms.merge_burst_parents',
        {
            'firings': firings,
            'metrics': metrics
        },
        {
            'firings_out': firings_out
        },
        opts
    )
예제 #16
0
def pyms_extract_marks(timeseries,
                       firings,
                       marks_out,
                       markstimes_out,
                       opts=None):
    '''

    Parameters
    ----------
    timeseries : str
        Filepath to `pre.mda.prv`
    firings : str
        Filepath to `firings_raw.mda`
    marks_out : str
        Filepath to `marks.mda`
    markstimes_out : str
        Filepath
    opts : None or dict, optional
    '''
    if opts is None:
        opts = {}
    return mlp.runProcess('pyms.extract_marks', {
        'timeseries': timeseries,
        'firings': firings
    }, {
        'marks_out': marks_out,
        'markstimes_out': markstimes_out
    }, opts)
예제 #17
0
def compute_cluster_metrics(*,
                            timeseries,
                            firings,
                            metrics_out,
                            samplerate,
                            opts={}):
    metrics1 = mlp.runProcess('ms3.cluster_metrics', {
        'timeseries': timeseries,
        'firings': firings
    }, {'cluster_metrics_out': True}, {'samplerate': samplerate},
                              opts)['cluster_metrics_out']
    metrics2 = mlp.runProcess('ms3.isolation_metrics', {
        'timeseries': timeseries,
        'firings': firings
    }, {'metrics_out': True}, {'compute_bursting_parents': 'true'},
                              opts)['metrics_out']
    return mlp.runProcess('ms3.combine_cluster_metrics',
                          {'metrics_list': [metrics1, metrics2]},
                          {'metrics_out': metrics_out}, {}, opts)
예제 #18
0
def whiten(*,timeseries,timeseries_out,opts={}):
    return mlp.runProcess(
        'ephys.whiten',
        {
            'timeseries':timeseries
        },
        {
            'timeseries_out':timeseries_out
        },
        {},
        opts
    )
예제 #19
0
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.runProcess('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.runProcess('ephys.synthesize_random_firings', {},
                   {'firings_out': dataset_dir + '/firings_true.mda'},
                   {'duration': duration}, opts)
    mlp.runProcess(
        '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)
예제 #20
0
def bandpass_filter(*,
                    timeseries,
                    timeseries_out,
                    samplerate,
                    freq_min,
                    freq_max,
                    opts={}):
    return mlp.runProcess('ephys.bandpass_filter', {'timeseries': timeseries},
                          {'timeseries_out': timeseries_out}, {
                              'samplerate': samplerate,
                              'freq_min': freq_min,
                              'freq_max': freq_max
                          }, opts)
예제 #21
0
def automated_curation(firings, cluster_metrics, firings_out, opts=None):
    '''

    Parameters
    ----------
    firings : str
        Filepath
    cluster_metrics : str
        Filepath
    firings_out : str
        Filepath
    '''
    if opts is None:
        opts = {}
    label_map = mlp.runProcess('ms4alg.create_label_map',
                               {'metrics': cluster_metrics},
                               {'label_map_out': True}, {},
                               opts)['label_map_out']
    return mlp.runProcess('ms4alg.apply_label_map', {
        'label_map': label_map,
        'firings': firings
    }, {'firings_out': firings_out}, {}, opts)
예제 #22
0
def _mask_artifacts(*,
                    timeseries,
                    timeseries_out,
                    threshold=6,
                    chunk_size=2000,
                    num_write_chunks=150,
                    opts={}):
    return mlp.runProcess('ephys.mask_out_artifacts',
                          {'timeseries': timeseries},
                          {'timeseries_out': timeseries_out}, {
                              'threshold': threshold,
                              'chunk_size': chunk_size,
                              'num_write_chunks': num_write_chunks,
                          }, opts)
def pyms_anneal_segs(*,timeseries_list, firings_list, firings_out, dmatrix_out, k1_dmatrix_out, k2_dmatrix_out, dmatrix_templates_out, time_offsets, opts={}):

    return mlp.runProcess(
        'pyms.anneal_segments',
        {
            'timeseries_list':timeseries_list,
            'firings_list':firings_list
        },
        {
            'firings_out':firings_out,
            'dmatrix_out':dmatrix_out,
            'k1_dmatrix_out':k1_dmatrix_out,
            'k2_dmatrix_out':k2_dmatrix_out,
            'dmatrix_templates_out':dmatrix_templates_out
        },
        {
            'time_offsets':time_offsets
        },
        opts
    )
예제 #24
0
def pyms_anneal_segs(timeseries_list, firings_list, firings_out,
                     dmatrix_out, k1_dmatrix_out, k2_dmatrix_out,
                     dmatrix_templates_out, time_offsets, opts=None):
    '''

    Parameters
    ----------
    timeseries_list : list of str
        Filepaths
    firings_list : list of str
        Filepaths
    firings_out : list of str
        Filepaths
    dmatrix_out : list
    k1_dmatrix_out : list
    k2_dmatrix_out : list
    time_offsets : str
    opts : None or dict, optional

    '''
    if opts is None:
        opts = {}

    return mlp.runProcess(
        'pyms.anneal_segments',
        {
            'timeseries_list': timeseries_list,
            'firings_list': firings_list
        },
        {
            'firings_out': firings_out,
            'dmatrix_out': dmatrix_out,
            'k1_dmatrix_out': k1_dmatrix_out,
            'k2_dmatrix_out': k2_dmatrix_out,
            'dmatrix_templates_out': dmatrix_templates_out
        },
        {
            'time_offsets': time_offsets
        },
        opts
    )
예제 #25
0
def synthesize_sample_dataset(dataset_dir,
                              samplerate=30000,
                              duration=600,
                              num_channels=4,
                              opts=None):
    '''

    Parameters
    ----------
    dataset_dir : str
    samplerate : float
    duration : float
    num_channels : int
    opts : None or dict, optional

    '''
    if opts is None:
        opts = {}
    if not os.path.exists(dataset_dir):
        os.mkdir(dataset_dir)
    M = num_channels
    mlp.runProcess(
        'ephys.synthesize_random_waveforms', {}, {
            'geometry_out': os.path.join(dataset_dir, 'geom.csv'),
            'waveforms_out': os.path.join(dataset_dir, 'waveforms_true.mda')
        }, {
            'upsamplefac': 13,
            'M': M,
            'average_peak_amplitude': 100
        }, opts)
    mlp.runProcess(
        'ephys.synthesize_random_firings', {},
        {'firings_out': os.path.join(dataset_dir, 'firings_true.mda')},
        {'duration': duration}, opts)
    mlp.runProcess(
        'ephys.synthesize_timeseries', {
            'firings': os.path.join(dataset_dir, 'firings_true.mda'),
            'waveforms': os.path.join(dataset_dir, 'waveforms_true.mda')
        }, {'timeseries_out': os.path.join(dataset_dir, 'raw.mda.prv')}, {
            'duration': duration,
            'waveform_upsamplefac': 13,
            'noise_level': 10
        }, opts)
    params = {'samplerate': samplerate, 'spike_sign': 1}
    with open(os.path.join(dataset_dir, 'params.json'), 'w') as outfile:
        json.dump(params, outfile, indent=4)
def compute_templates(*, timeseries, firings, templates_out):
    opts = {}
    return mlp.runProcess('ephys.compute_templates', {
        'timeseries': timeseries,
        'firings': firings
    }, {'templates_out': templates_out}, {}, opts)['templates_out']