def threshold_amplitude_cutoffs(sorting, recording, threshold, threshold_sign, recording_params=get_recording_params(), amplitude_params=get_amplitude_params(), feature_params=get_feature_params(), save_as_property=True, seed=AmplitudeCutoff.params['seed'], verbose=AmplitudeCutoff.params['verbose']): """ Computes and thresholds the amplitude cutoffs in the sorted dataset with the given sign and value. Parameters ---------- sorting: SortingExtractor The sorting result to be evaluated. recording: RecordingExtractor The given recording extractor threshold: int or float The threshold for the given metric. threshold_sign: str If 'less', will threshold any metric less than the given threshold. If 'less_or_equal', will threshold any metric less than or equal to the given threshold. If 'greater', will threshold any metric greater than the given threshold. If 'greater_or_equal', will threshold any metric greater than or equal to the given threshold. amplitude_params: dict This dictionary should contain any subset of the following parameters: amp_method: str If 'absolute' (default), amplitudes are absolute amplitudes in uV are returned. If 'relative', amplitudes are returned as ratios between waveform amplitudes and template amplitudes. amp_peak: str If maximum channel has to be found among negative peaks ('neg'), positive ('pos') or both ('both' - default) amp_frames_before: int Frames before peak to compute amplitude. amp_frames_after: int Frames after peak to compute amplitude. recording_params: dict This dictionary should contain any subset of the following parameters: apply_filter: bool If True, recording is bandpass-filtered. freq_min: float High-pass frequency for optional filter (default 300 Hz). freq_max: float Low-pass frequency for optional filter (default 6000 Hz). feature_params: dict This dictionary should contain any subset of the following parameters: save_features_props: bool If true, it will save features in the sorting extractor. recompute_info: bool If True, waveforms are recomputed max_spikes_per_unit: int The maximum number of spikes to extract per unit. save_as_property: bool If True, the metric is saved as sorting property seed: int Random seed for reproducibility verbose: bool If True, will be verbose in metric computation. Returns ---------- threshold sorting extractor """ rp_dict, ap_dict, fp_dict = update_param_dicts( recording_params=recording_params, amplitude_params=amplitude_params, feature_params=feature_params) md = MetricData(sorting=sorting, sampling_frequency=recording.get_sampling_frequency(), recording=recording, apply_filter=rp_dict["apply_filter"], freq_min=rp_dict["freq_min"], freq_max=rp_dict["freq_max"], unit_ids=None, epoch_tuples=None, epoch_names=None, verbose=verbose) md.compute_amplitudes( amp_method=ap_dict["amp_method"], amp_peak=ap_dict["amp_peak"], amp_frames_before=ap_dict["amp_frames_before"], amp_frames_after=ap_dict["amp_frames_after"], max_spikes_per_unit=fp_dict["max_spikes_per_unit"], save_features_props=fp_dict['save_features_props'], recompute_info=fp_dict['recompute_info'], seed=seed, ) ac = AmplitudeCutoff(metric_data=md) threshold_sorting = ac.threshold_metric(threshold, threshold_sign, save_as_property) return threshold_sorting
def threshold_amplitude_cutoffs( sorting, recording, threshold, threshold_sign, **kwargs ): """ Computes and thresholds the amplitude cutoffs in the sorted dataset with the given sign and value. Parameters ---------- sorting: SortingExtractor The sorting result to be evaluated recording: RecordingExtractor The given recording extractor threshold: int or float The threshold for the given metric threshold_sign: str If 'less', will threshold any metric less than the given threshold If 'less_or_equal', will threshold any metric less than or equal to the given threshold If 'greater', will threshold any metric greater than the given threshold If 'greater_or_equal', will threshold any metric greater than or equal to the given threshold **kwargs: keyword arguments Keyword arguments among the following: method: str If 'absolute' (default), amplitudes are absolute amplitudes in uV are returned If 'relative', amplitudes are returned as ratios between waveform amplitudes and template amplitudes peak: str If maximum channel has to be found among negative peaks ('neg'), positive ('pos') or both ('both' - default) frames_before: int Frames before peak to compute amplitude frames_after: int Frames after peak to compute amplitude apply_filter: bool If True, recording is bandpass-filtered freq_min: float High-pass frequency for optional filter (default 300 Hz) freq_max: float Low-pass frequency for optional filter (default 6000 Hz) save_property_or_features: bool If true, it will save features in the sorting extractor recompute_info: bool If True, waveforms are recomputed max_spikes_per_unit: int The maximum number of spikes to extract per unit Returns ---------- threshold sorting extractor """ params_dict = update_all_param_dicts_with_kwargs(kwargs) md = MetricData(sorting=sorting, sampling_frequency=recording.get_sampling_frequency(), recording=recording, apply_filter=params_dict["apply_filter"], freq_min=params_dict["freq_min"], duration_in_frames=None, freq_max=params_dict["freq_max"], unit_ids=None, verbose=params_dict['verbose']) md.compute_amplitudes(**kwargs) ac = AmplitudeCutoff(metric_data=md) threshold_sorting = ac.threshold_metric(threshold, threshold_sign, **kwargs) return threshold_sorting