Skip to content

Commit 7eaefa4

Browse files
committed
address review comments for generate_electrode_config_entry
1 parent 88ce139 commit 7eaefa4

File tree

1 file changed

+26
-29
lines changed

1 file changed

+26
-29
lines changed

element_array_ephys/ephys_no_curation.py

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -360,18 +360,14 @@ def make(self, key):
360360
for shank, shank_col, shank_row, _ in spikeglx_meta.shankmap["data"]
361361
] # recording session-specific electrode configuration
362362

363-
# Compute hash for the electrode config (hash of dict of all ElectrodeConfig.Electrode)
364-
electrode_config_hash = dict_to_uuid(
365-
{k["electrode"]: k for k in electrode_group_members}
366-
)
367-
electrode_config_name = generate_electrode_config_name(
363+
econfig_entry, econfig_electrodes = generate_electrode_config_entry(
368364
probe_type, electrode_group_members
369365
)
370366

371367
self.insert1(
372368
{
373369
**key,
374-
"electrode_config_hash": electrode_config_hash,
370+
"electrode_config_hash": econfig_entry["electrode_config_hash"],
375371
"acq_software": acq_software,
376372
"sampling_rate": spikeglx_meta.meta["imSampRate"],
377373
"recording_datetime": spikeglx_meta.recording_time,
@@ -398,7 +394,7 @@ def make(self, key):
398394
# Get channel and electrode-site mapping
399395
electrode_query = (
400396
probe.ProbeType.Electrode * probe.ElectrodeConfig.Electrode
401-
& {"electrode_config_hash": electrode_config_hash}
397+
& {"electrode_config_hash": econfig_entry["electrode_config_hash"]}
402398
)
403399

404400
probe_electrodes = {
@@ -453,18 +449,14 @@ def make(self, key):
453449
for channel_idx in probe_data.ap_meta["channels_indices"]
454450
] # recording session-specific electrode configuration
455451

456-
# Compute hash for the electrode config (hash of dict of all ElectrodeConfig.Electrode)
457-
electrode_config_hash = dict_to_uuid(
458-
{k["electrode"]: k for k in electrode_group_members}
459-
)
460-
electrode_config_name = generate_electrode_config_name(
452+
econfig_entry, econfig_electrodes = generate_electrode_config_entry(
461453
probe_type, electrode_group_members
462454
)
463455

464456
self.insert1(
465457
{
466458
**key,
467-
"electrode_config_hash": electrode_config_hash,
459+
"electrode_config_hash": econfig_entry["electrode_config_hash"],
468460
"acq_software": acq_software,
469461
"sampling_rate": probe_data.ap_meta["sample_rate"],
470462
"recording_datetime": probe_data.recording_info[
@@ -512,18 +504,11 @@ def make(self, key):
512504
)
513505

514506
# Insert into probe.ElectrodeConfig (recording configuration)
515-
if not probe.ElectrodeConfig & {"electrode_config_hash": electrode_config_hash}:
516-
probe.ElectrodeConfig.insert1(
517-
{
518-
"probe_type": probe_type,
519-
"electrode_config_hash": electrode_config_hash,
520-
"electrode_config_name": electrode_config_name,
521-
}
522-
)
523-
probe.ElectrodeConfig.Electrode.insert(
524-
{"electrode_config_hash": electrode_config_hash, **electrode}
525-
for electrode in electrode_group_members
526-
)
507+
if not probe.ElectrodeConfig & {
508+
"electrode_config_hash": econfig_entry["electrode_config_hash"]
509+
}:
510+
probe.ElectrodeConfig.insert1(econfig_entry)
511+
probe.ElectrodeConfig.Electrode.insert(econfig_electrodes)
527512

528513

529514
@schema
@@ -1794,16 +1779,19 @@ def get_recording_channels_details(ephys_recording_key: dict) -> np.array:
17941779
return channels_details
17951780

17961781

1797-
def generate_electrode_config_name(probe_type: str, electrode_keys: list) -> str:
1798-
"""Generate electrode config name.
1782+
def generate_electrode_config_entry(probe_type: str, electrode_keys: list) -> dict:
1783+
"""Generate and insert new ElectrodeConfig
17991784
18001785
Args:
18011786
probe_type (str): probe type (e.g. neuropixels 2.0 - SS)
18021787
electrode_keys (list): list of keys of the probe.ProbeType.Electrode table
18031788
18041789
Returns:
1805-
electrode_config_name (str)
1790+
dict: representing a key of the probe.ElectrodeConfig table
18061791
"""
1792+
# compute hash for the electrode config (hash of dict of all ElectrodeConfig.Electrode)
1793+
electrode_config_hash = dict_to_uuid({k["electrode"]: k for k in electrode_keys})
1794+
18071795
electrode_list = sorted([k["electrode"] for k in electrode_keys])
18081796
electrode_gaps = (
18091797
[-1]
@@ -1816,5 +1804,14 @@ def generate_electrode_config_name(probe_type: str, electrode_keys: list) -> str
18161804
for start, end in zip(electrode_gaps[:-1], electrode_gaps[1:])
18171805
]
18181806
)
1807+
electrode_config_key = {"electrode_config_hash": electrode_config_hash}
1808+
econfig_entry = {
1809+
**electrode_config_key,
1810+
"probe_type": probe_type,
1811+
"electrode_config_name": electrode_config_name,
1812+
}
1813+
econfig_electrodes = [
1814+
{**electrode, **electrode_config_key} for electrode in electrode_keys
1815+
]
18191816

1820-
return electrode_config_name
1817+
return econfig_entry, econfig_electrodes

0 commit comments

Comments
 (0)