spyglass
spyglass copied to clipboard
merged_sorting_extractor not found
In the v0 spikesorting pipeline, the call Waveforms().load_waveforms(key) appears to no longer work.
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[6], line 1
----> 1 BrainRegionUnits().populate()
File ~/mambaforge/envs/spyglass/lib/python3.9/site-packages/datajoint/autopopulate.py:241, in AutoPopulate.populate(self, suppress_errors, return_exception_objects, reserve_jobs, order, limit, max_calls, display_progress, processes, make_kwargs, *restrictions)
237 if processes == 1:
238 for key in (
239 tqdm(keys, desc=self.__class__.__name__) if display_progress else keys
240 ):
--> 241 error = self._populate1(key, jobs, **populate_kwargs)
242 if error is not None:
243 error_list.append(error)
File ~/mambaforge/envs/spyglass/lib/python3.9/site-packages/datajoint/autopopulate.py:292, in AutoPopulate._populate1(self, key, jobs, suppress_errors, return_exception_objects, make_kwargs)
290 self.__class__._allow_insert = True
291 try:
--> 292 make(dict(key), **(make_kwargs or {}))
293 except (KeyboardInterrupt, SystemExit, Exception) as error:
294 try:
File ~/Src/jguides_2024/src/jguides_2024/spikes/jguidera_unit.py:653, in BrainRegionUnits.make(self, key)
651 # Update units to be those within valid range from probe tip to edge of target region
652 for sort_group_id, unit_ids in sort_group_unit_ids_map.items():
--> 653 peak_ch_map = get_peak_ch_map(key["nwb_file_name"], sort_group_id) # map from unit id to peak ch
654 valid_unit_ids = [unit_id for unit_id, peak_ch in peak_ch_map.items() if peak_ch in valid_chs]
655 sort_group_unit_ids_map[sort_group_id] = [x for x in unit_ids if x in valid_unit_ids]
File ~/Src/jguides_2024/src/jguides_2024/spike_sorting_curation/spikesorting_helpers.py:96, in get_peak_ch_map(nwb_file_name, sort_group_id, sort_interval_name, curation_id, peak_sign)
94 # Get waveform extractor
95 from spyglass.spikesorting.v0.spikesorting_curation import _get_peak_channel, Waveforms
---> 96 waveform_extractor = Waveforms().load_waveforms(key)
97 return _get_peak_channel(waveform_extractor, peak_sign)
File ~/Src/spyglass/src/spyglass/spikesorting/v0/spikesorting_curation.py:377, in Waveforms.load_waveforms(self, key)
364 """Returns a spikeinterface waveform extractor specified by key
365
366 Parameters
(...)
374 we : spikeinterface.WaveformExtractor
375 """
376 we_path = (self & key).fetch1("waveform_extractor_path")
--> 377 we = si.WaveformExtractor.load_from_folder(we_path)
378 return we
File ~/mambaforge/envs/spyglass/lib/python3.9/site-packages/spikeinterface/core/waveform_extractor.py:178, in WaveformExtractor.load_from_folder(cls, folder, with_recording, sorting)
176 if sorting is None:
177 if (folder / "sorting.json").exists():
--> 178 sorting = load_extractor(folder / "sorting.json", base_folder=folder)
179 elif (folder / "sorting.pickle").exists():
180 sorting = load_extractor(folder / "sorting.pickle", base_folder=folder)
File ~/mambaforge/envs/spyglass/lib/python3.9/site-packages/spikeinterface/core/base.py:1105, in load_extractor(file_or_folder_or_dict, base_folder)
1103 return BaseExtractor.from_dict(file_or_folder_or_dict, base_folder=base_folder)
1104 else:
-> 1105 return BaseExtractor.load(file_or_folder_or_dict, base_folder=base_folder)
File ~/mambaforge/envs/spyglass/lib/python3.9/site-packages/spikeinterface/core/base.py:689, in BaseExtractor.load(file_path, base_folder)
687 print("The extractor was not serializable to file")
688 return None
--> 689 extractor = BaseExtractor.from_dict(d, base_folder=base_folder)
690 return extractor
692 elif file_path.is_dir():
693 # case from a folder after a calling extractor.save(...)
File ~/mambaforge/envs/spyglass/lib/python3.9/site-packages/spikeinterface/core/base.py:436, in BaseExtractor.from_dict(dictionary, base_folder)
434 assert base_folder is not None, "When relative_paths=True, need to provide base_folder"
435 dictionary = _make_paths_absolute(dictionary, base_folder)
--> 436 extractor = _load_extractor_from_dict(dictionary)
437 folder_metadata = dictionary.get("folder_metadata", None)
438 if folder_metadata is not None:
File ~/mambaforge/envs/spyglass/lib/python3.9/site-packages/spikeinterface/core/base.py:1034, in _load_extractor_from_dict(dic)
1031 new_kwargs[name] = value
1033 class_name = dic["class"]
-> 1034 extractor_class = _get_class_from_string(class_name)
1036 assert extractor_class is not None and class_name is not None, "Could not load spikeinterface class"
1037 if not _check_same_version(class_name, dic["version"]):
File ~/mambaforge/envs/spyglass/lib/python3.9/site-packages/spikeinterface/core/base.py:1056, in _get_class_from_string(class_string)
1054 class_name = class_string.split(".")[-1]
1055 module = ".".join(class_string.split(".")[:-1])
-> 1056 imported_module = importlib.import_module(module)
1058 try:
1059 imported_class = getattr(imported_module, class_name)
File ~/mambaforge/envs/spyglass/lib/python3.9/importlib/__init__.py:127, in import_module(name, package)
125 break
126 level += 1
--> 127 return _bootstrap._gcd_import(name[level:], package, level)
File <frozen importlib._bootstrap>:1030, in _gcd_import(name, package, level)
File <frozen importlib._bootstrap>:1007, in _find_and_load(name, import_)
File <frozen importlib._bootstrap>:984, in _find_and_load_unlocked(name, import_)
ModuleNotFoundError: No module named 'spyglass.spikesorting.merged_sorting_extractor'