4
4
import numpy as np
5
5
import inspect
6
6
import importlib
7
- import element_data_loader .utils
7
+ from element_data_loader .utils import find_root_directory , find_full_path , dict_to_uuid
8
8
9
9
from .readers import spikeglx , kilosort , openephys
10
10
from . import probe
@@ -143,8 +143,8 @@ class EphysFile(dj.Part):
143
143
"""
144
144
145
145
def make (self , key ):
146
- session_dir = element_data_loader . utils . find_full_path (get_ephys_root_data_dir (),
147
- get_session_directory (key ))
146
+ session_dir = find_full_path (get_ephys_root_data_dir (),
147
+ get_session_directory (key ))
148
148
149
149
inserted_probe_serial_number = (ProbeInsertion * probe .Probe & key ).fetch1 ('probe' )
150
150
@@ -191,9 +191,8 @@ def make(self, key):
191
191
'acq_software' : acq_software ,
192
192
'sampling_rate' : spikeglx_meta .meta ['imSampRate' ]})
193
193
194
- root_dir = element_data_loader .utils .find_root_directory (
195
- get_ephys_root_data_dir (),
196
- meta_filepath )
194
+ root_dir = find_root_directory (get_ephys_root_data_dir (),
195
+ meta_filepath )
197
196
self .EphysFile .insert1 ({
198
197
** key ,
199
198
'file_path' : meta_filepath .relative_to (root_dir ).as_posix ()})
@@ -226,9 +225,8 @@ def make(self, key):
226
225
'acq_software' : acq_software ,
227
226
'sampling_rate' : probe_data .ap_meta ['sample_rate' ]})
228
227
229
- root_dir = element_data_loader .utils .find_root_directory (
230
- get_ephys_root_data_dir (),
231
- probe_data .recording_info ['recording_files' ][0 ])
228
+ root_dir = find_root_directory (get_ephys_root_data_dir (),
229
+ probe_data .recording_info ['recording_files' ][0 ])
232
230
self .EphysFile .insert ([{** key ,
233
231
'file_path' : fp .relative_to (root_dir ).as_posix ()}
234
232
for fp in probe_data .recording_info ['recording_files' ]])
@@ -296,9 +294,8 @@ def make(self, key):
296
294
shank , shank_col , shank_row , _ = spikeglx_recording .apmeta .shankmap ['data' ][recorded_site ]
297
295
electrode_keys .append (probe_electrodes [(shank , shank_col , shank_row )])
298
296
elif acq_software == 'Open Ephys' :
299
- session_dir = element_data_loader .utils .find_full_path (
300
- get_ephys_root_data_dir (),
301
- get_session_directory (key ))
297
+ session_dir = find_full_path (get_ephys_root_data_dir (),
298
+ get_session_directory (key ))
302
299
loaded_oe = openephys .OpenEphys (session_dir )
303
300
oe_probe = loaded_oe .probes [probe_sn ]
304
301
@@ -366,7 +363,7 @@ def insert_new_params(cls, processing_method: str, paramset_idx: int,
366
363
'paramset_idx' : paramset_idx ,
367
364
'paramset_desc' : paramset_desc ,
368
365
'params' : params ,
369
- 'param_set_hash' : element_data_loader . utils . dict_to_uuid (params )}
366
+ 'param_set_hash' : dict_to_uuid (params )}
370
367
param_query = cls & {'param_set_hash' : param_dict ['param_set_hash' ]}
371
368
372
369
if param_query : # If the specified param-set already exists
@@ -428,7 +425,7 @@ class Clustering(dj.Imported):
428
425
def make (self , key ):
429
426
task_mode , output_dir = (ClusteringTask & key ).fetch1 (
430
427
'task_mode' , 'clustering_output_dir' )
431
- kilosort_dir = element_data_loader . utils . find_full_path (get_ephys_root_data_dir (), output_dir )
428
+ kilosort_dir = find_full_path (get_ephys_root_data_dir (), output_dir )
432
429
433
430
if task_mode == 'load' :
434
431
kilosort_dataset = kilosort .Kilosort (kilosort_dir ) # check if the directory is a valid Kilosort output
@@ -467,7 +464,7 @@ def create1_from_clustering_task(self, key, curation_note=''):
467
464
468
465
task_mode , output_dir = (ClusteringTask & key ).fetch1 (
469
466
'task_mode' , 'clustering_output_dir' )
470
- kilosort_dir = element_data_loader . utils . find_full_path (get_ephys_root_data_dir (), output_dir )
467
+ kilosort_dir = find_full_path (get_ephys_root_data_dir (), output_dir )
471
468
472
469
creation_time , is_curated , is_qc = kilosort .extract_clustering_info (kilosort_dir )
473
470
# Synthesize curation_id
@@ -501,7 +498,7 @@ class Unit(dj.Part):
501
498
502
499
def make (self , key ):
503
500
output_dir = (Curation & key ).fetch1 ('curation_output_dir' )
504
- kilosort_dir = element_data_loader . utils . find_full_path (get_ephys_root_data_dir (), output_dir )
501
+ kilosort_dir = find_full_path (get_ephys_root_data_dir (), output_dir )
505
502
506
503
kilosort_dataset = kilosort .Kilosort (kilosort_dir )
507
504
acq_software = (EphysRecording & key ).fetch1 ('acq_software' )
@@ -579,9 +576,7 @@ class Waveform(dj.Part):
579
576
580
577
def make (self , key ):
581
578
output_dir = (Curation & key ).fetch1 ('curation_output_dir' )
582
- kilosort_dir = element_data_loader .utils .find_full_path (
583
- get_ephys_root_data_dir (),
584
- output_dir )
579
+ kilosort_dir = find_full_path (get_ephys_root_data_dir (), output_dir )
585
580
586
581
kilosort_dataset = kilosort .Kilosort (kilosort_dir )
587
582
@@ -623,9 +618,8 @@ def yield_unit_waveforms():
623
618
spikeglx_meta_filepath = get_spikeglx_meta_filepath (key )
624
619
neuropixels_recording = spikeglx .SpikeGLX (spikeglx_meta_filepath .parent )
625
620
elif acq_software == 'Open Ephys' :
626
- session_dir = element_data_loader .utils .find_full_path (
627
- get_ephys_root_data_dir (),
628
- get_session_directory (key ))
621
+ session_dir = find_full_path (get_ephys_root_data_dir (),
622
+ get_session_directory (key ))
629
623
openephys_dataset = openephys .OpenEphys (session_dir )
630
624
neuropixels_recording = openephys_dataset .probes [probe_serial_number ]
631
625
@@ -666,15 +660,14 @@ def get_spikeglx_meta_filepath(ephys_recording_key):
666
660
& 'file_path LIKE "%.ap.meta"' ).fetch1 ('file_path' )
667
661
668
662
try :
669
- spikeglx_meta_filepath = element_data_loader .utils .find_full_path (
670
- get_ephys_root_data_dir (),
671
- spikeglx_meta_filepath )
663
+ spikeglx_meta_filepath = find_full_path (get_ephys_root_data_dir (),
664
+ spikeglx_meta_filepath )
672
665
except FileNotFoundError :
673
666
# if not found, search in session_dir again
674
667
if not spikeglx_meta_filepath .exists ():
675
- session_dir = element_data_loader . utils . find_full_path (
676
- get_ephys_root_data_dir (),
677
- get_session_directory ( ephys_recording_key ))
668
+ session_dir = find_full_path (get_ephys_root_data_dir (),
669
+ get_session_directory (
670
+ ephys_recording_key ))
678
671
inserted_probe_serial_number = (ProbeInsertion * probe .Probe
679
672
& ephys_recording_key ).fetch1 ('probe' )
680
673
@@ -712,9 +705,8 @@ def get_neuropixels_channel2electrode_map(ephys_recording_key, acq_software):
712
705
for recorded_site , (shank , shank_col , shank_row , _ ) in enumerate (
713
706
spikeglx_meta .shankmap ['data' ])}
714
707
elif acq_software == 'Open Ephys' :
715
- session_dir = element_data_loader .utils .find_full_path (
716
- get_ephys_root_data_dir (),
717
- get_session_directory (ephys_recording_key ))
708
+ session_dir = find_full_path (get_ephys_root_data_dir (),
709
+ get_session_directory (ephys_recording_key ))
718
710
openephys_dataset = openephys .OpenEphys (session_dir )
719
711
probe_serial_number = (ProbeInsertion & ephys_recording_key ).fetch1 ('probe' )
720
712
probe_dataset = openephys_dataset .probes [probe_serial_number ]
@@ -741,8 +733,7 @@ def generate_electrode_config(probe_type: str, electrodes: list):
741
733
:return: a dict representing a key of the probe.ElectrodeConfig table
742
734
"""
743
735
# compute hash for the electrode config (hash of dict of all ElectrodeConfig.Electrode)
744
- electrode_config_hash = element_data_loader .utils .dict_to_uuid (
745
- {k ['electrode' ]: k for k in electrodes })
736
+ electrode_config_hash = dict_to_uuid ({k ['electrode' ]: k for k in electrodes })
746
737
747
738
electrode_list = sorted ([k ['electrode' ] for k in electrodes ])
748
739
electrode_gaps = ([- 1 ]
0 commit comments