From 2b73a052b32d25660c91233bca0484b5494cd098 Mon Sep 17 00:00:00 2001 From: Kyu Hyun Lee Date: Fri, 8 Dec 2023 15:13:27 -0800 Subject: [PATCH 1/8] Update src/spyglass/spikesorting/v1/figurl_curation.py Co-authored-by: Chris Brozdowski --- .../spikesorting/v1/figurl_curation.py | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/src/spyglass/spikesorting/v1/figurl_curation.py b/src/spyglass/spikesorting/v1/figurl_curation.py index 01369d1ca..f210a4fff 100644 --- a/src/spyglass/spikesorting/v1/figurl_curation.py +++ b/src/spyglass/spikesorting/v1/figurl_curation.py @@ -82,30 +82,29 @@ def generate_curation_uri(key: Dict) -> str: unit_ids = [str(unit_id) for unit_id in unit_ids] - if labels: - labels_dict = { - unit_id: list(label) for unit_id, label in zip(unit_ids, labels) - } - else: - labels_dict = {} + labels_dict = ( + {unit_id: list(label) for unit_id, label in zip(unit_ids, labels)} + if labels + else {} + ) - if merge_groups: - merge_groups_dict = dict(zip(unit_ids, merge_groups)) - merge_groups_list = _merge_dict_to_list(merge_groups_dict) - merge_groups_list = [ + merge_groups_list = ( + [ [str(unit_id) for unit_id in merge_group] - for merge_group in merge_groups_list + for merge_group in _merge_dict_to_list( + dict(zip(unit_ids, merge_groups)) + ) ] - else: - merge_groups_list = [] - - curation_dict = { - "labelsByUnit": labels_dict, - "mergeGroups": merge_groups_list, - } - curation_uri = kcl.store_json(curation_dict) + if merge_groups + else [] + ) - return curation_uri + return kcl.store_json( + { + "labelsByUnit": labels_dict, + "mergeGroups": merge_groups_list, + } + ) @schema From 32254ecb00bd81ce9064e48e5dbcc9894cb3b1cd Mon Sep 17 00:00:00 2001 From: Kyu Hyun Lee Date: Fri, 8 Dec 2023 15:14:15 -0800 Subject: [PATCH 2/8] Update src/spyglass/spikesorting/v1/metric_curation.py Co-authored-by: Chris Brozdowski --- src/spyglass/spikesorting/v1/metric_curation.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/spyglass/spikesorting/v1/metric_curation.py b/src/spyglass/spikesorting/v1/metric_curation.py index 88e335008..86fa08ab2 100644 --- a/src/spyglass/spikesorting/v1/metric_curation.py +++ b/src/spyglass/spikesorting/v1/metric_curation.py @@ -575,12 +575,10 @@ def _write_metric_curation_to_nwb( ) if metrics is not None: for metric, metric_dict in metrics.items(): - metric_values = [] - for unit_id in unit_ids: - if unit_id not in metric_dict: - metric_values.append([]) - else: - metric_values.append(metric_dict[unit_id]) + metric_values = [ + metric_dict[unit_id] if unit_id in metric_dict else [] + for unit_id in unit_ids + ] nwbf.add_unit_column( name=metric, description=metric, From ee709d161d852965eef47e8785e6751ab2bdff31 Mon Sep 17 00:00:00 2001 From: Kyu Hyun Lee Date: Fri, 8 Dec 2023 15:15:08 -0800 Subject: [PATCH 3/8] Update src/spyglass/spikesorting/v1/artifact.py Co-authored-by: Chris Brozdowski --- src/spyglass/spikesorting/v1/artifact.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/spyglass/spikesorting/v1/artifact.py b/src/spyglass/spikesorting/v1/artifact.py index a80034fdb..fb54c4b8f 100644 --- a/src/spyglass/spikesorting/v1/artifact.py +++ b/src/spyglass/spikesorting/v1/artifact.py @@ -394,11 +394,10 @@ def _check_artifact_thresholds( ValueError: if signal thresholds are negative """ # amplitude or zscore thresholds should be negative, as they are applied to an absolute signal - signal_thresholds = [ - t for t in [amplitude_thresh_uV, zscore_thresh] if t is not None - ] - for t in signal_thresholds: - if t < 0: + def is_negative(value): + return value < 0 if value is not None else False + + if is_negative(amplitude_thresh_uV) or is_negative(zscore_thresh): raise ValueError( "Amplitude and Z-Score thresholds must be >= 0, or None" ) From 9d85e5d388686848e0dc6fcfebc9c0731ef3c3bd Mon Sep 17 00:00:00 2001 From: Kyu Hyun Lee Date: Fri, 8 Dec 2023 15:15:46 -0800 Subject: [PATCH 4/8] Update src/spyglass/spikesorting/v1/recording.py Co-authored-by: Chris Brozdowski --- src/spyglass/spikesorting/v1/recording.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spyglass/spikesorting/v1/recording.py b/src/spyglass/spikesorting/v1/recording.py index d134cea13..c9cc8a9e7 100644 --- a/src/spyglass/spikesorting/v1/recording.py +++ b/src/spyglass/spikesorting/v1/recording.py @@ -176,7 +176,7 @@ def set_group_by_shank( @schema class SpikeSortingPreprocessingParameters(dj.Lookup): definition = """ - # Parameters for denoising (filtering and referencing/whitening) a recording prior to spike sorting. + # Parameters for denoising a recording prior to spike sorting. preproc_param_name: varchar(200) --- preproc_params: blob From d7f0dbe68214522d8fb5d3cc842234030fa1ce2d Mon Sep 17 00:00:00 2001 From: Kyu Hyun Lee Date: Fri, 8 Dec 2023 15:17:00 -0800 Subject: [PATCH 5/8] Update src/spyglass/spikesorting/v1/figurl_curation.py Co-authored-by: Chris Brozdowski --- src/spyglass/spikesorting/v1/figurl_curation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spyglass/spikesorting/v1/figurl_curation.py b/src/spyglass/spikesorting/v1/figurl_curation.py index f210a4fff..db226d749 100644 --- a/src/spyglass/spikesorting/v1/figurl_curation.py +++ b/src/spyglass/spikesorting/v1/figurl_curation.py @@ -58,7 +58,7 @@ def insert_selection(cls, key: dict): @staticmethod def generate_curation_uri(key: Dict) -> str: - """Generates a kachery-cloud URI containing curation info from a row in CurationV1 table + """Generates a kachery-cloud URI from a row in CurationV1 table Parameters ---------- From 453460f01db9210c3bbcfc6fde65ae297e87ed95 Mon Sep 17 00:00:00 2001 From: Kyu Hyun Lee Date: Fri, 8 Dec 2023 15:18:15 -0800 Subject: [PATCH 6/8] Update src/spyglass/spikesorting/v1/metric_utils.py Co-authored-by: Chris Brozdowski --- src/spyglass/spikesorting/v1/metric_utils.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/spyglass/spikesorting/v1/metric_utils.py b/src/spyglass/spikesorting/v1/metric_utils.py index 37e939fe7..64ced9533 100644 --- a/src/spyglass/spikesorting/v1/metric_utils.py +++ b/src/spyglass/spikesorting/v1/metric_utils.py @@ -67,5 +67,4 @@ def get_peak_channel( def get_num_spikes(waveform_extractor: si.WaveformExtractor, this_unit_id: str): """Computes the number of spikes for each unit.""" - num_spikes = sq.compute_num_spikes(waveform_extractor) - return num_spikes[this_unit_id] + return sq.compute_num_spikes(waveform_extractor)[this_unit_id] From c17bf13c0ee069097b2ca03fbd9dd00715e10b06 Mon Sep 17 00:00:00 2001 From: Kyu Hyun Lee Date: Fri, 8 Dec 2023 15:19:48 -0800 Subject: [PATCH 7/8] Update src/spyglass/spikesorting/v1/metric_utils.py Co-authored-by: Chris Brozdowski --- src/spyglass/spikesorting/v1/metric_utils.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/spyglass/spikesorting/v1/metric_utils.py b/src/spyglass/spikesorting/v1/metric_utils.py index 64ced9533..ab440c3d9 100644 --- a/src/spyglass/spikesorting/v1/metric_utils.py +++ b/src/spyglass/spikesorting/v1/metric_utils.py @@ -61,8 +61,7 @@ def get_peak_channel( peak_sign=peak_sign, **metric_params, ) - peak_channel = {key: int(val) for key, val in peak_channel_dict.items()} - return peak_channel + return {key: int(val) for key, val in peak_channel_dict.items()} def get_num_spikes(waveform_extractor: si.WaveformExtractor, this_unit_id: str): From 996a8de782130fcd4379ec4655e8a036ec4e57d4 Mon Sep 17 00:00:00 2001 From: Kyu Hyun Lee Date: Fri, 8 Dec 2023 15:20:55 -0800 Subject: [PATCH 8/8] Update src/spyglass/spikesorting/v1/figurl_curation.py Co-authored-by: Chris Brozdowski --- src/spyglass/spikesorting/v1/figurl_curation.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/spyglass/spikesorting/v1/figurl_curation.py b/src/spyglass/spikesorting/v1/figurl_curation.py index db226d749..dcd9142c4 100644 --- a/src/spyglass/spikesorting/v1/figurl_curation.py +++ b/src/spyglass/spikesorting/v1/figurl_curation.py @@ -278,18 +278,16 @@ def _generate_figurl( def _reformat_metrics(metrics: Dict[str, Dict[str, float]]) -> List[Dict]: - for metric_name in metrics: - metrics[metric_name] = { - str(unit_id): metric_value - for unit_id, metric_value in metrics[metric_name].items() - } - new_external_metrics = [ + return [ { "name": metric_name, "label": metric_name, "tooltip": metric_name, - "data": metric, + "data": { + str(unit_id): metric_value + for unit_id, metric_value in metric.items() + }, } for metric_name, metric in metrics.items() ] - return new_external_metrics +