flatironinstitute / mountainsort5

MountainSort spike sorting algorithm, version 5
Apache License 2.0
34 stars 8 forks source link

Error with Mountainsort5 compilation error #41

Open kshtjkumar opened 5 months ago

kshtjkumar commented 5 months ago
recording_ecog = spre.bandpass_filter(recording, freq_min=300, freq_max =
6000 ) #bandpass filter
recording_notch_ecog = spre.notch_filter(recording_ecog,q = 50) 
#notch_filter
rec_ecog_ref = spre.common_reference(recording_notch_ecog,
operator="median", reference="global")  #rereferencing the data

sorting_rec = ss.run_sorter("mountainsort5", rec_ecog_ref,
output_folder='mountainsort5_output_441' )
print("Sorter found", len(sorting_rec.get_unit_ids()), "units")
sorting_rec = sorting_rec.remove_empty_units()
print("Sorter found", len(sorting_rec.get_unit_ids()), "non empty units")

recording_resampled_ecog.annotate(is_filtered=True) # since we filtered
the rec

we = si.extract_waveforms(recording_resampled_ecog, sorting_rec,
folder="waveforms_kshtj0494416596", load_if_exists=False,
overwrite=True,sparse=False)
spost.compute_spike_amplitudes(we)

sw.plot_amplitudes(we, plot_histograms=True)

---------------------------------------------------------------------------
SpikeSortingError                         Traceback (most recent call last)
Cell In[29], line 6
      3 recording_notch_ecog = spre.notch_filter(recording_ecog,q = 50) 
#notch_filter
      4 rec_ecog_ref = spre.common_reference(recording_notch_ecog,
operator="median", reference="global")  #rereferencing the data
----> 6 sorting_rec = ss.run_sorter("mountainsort5", rec_ecog_ref,
output_folder='mountainsort5_output_441' )
      7 print("Sorter found", len(sorting_rec.get_unit_ids()), "units")
      8 sorting_rec = sorting_rec.remove_empty_units()

File
~\.conda\envs\spike\lib\site-packages\spikeinterface\sorters\runsorter.py:174,
in run_sorter(sorter_name, recording, output_folder,
remove_existing_folder, delete_output_folder, verbose, raise_error,
docker_image, singularity_image, delete_container_files, with_output,
**sorter_params)
    167             container_image = singularity_image
    168     return run_sorter_container(
    169         container_image=container_image,
    170         mode=mode,
    171         **common_kwargs,
    172     )
--> 174 return run_sorter_local(**common_kwargs)

File
~\.conda\envs\spike\lib\site-packages\spikeinterface\sorters\runsorter.py:224,
in run_sorter_local(sorter_name, recording, output_folder,
remove_existing_folder, delete_output_folder, verbose, raise_error,
with_output, **sorter_params)
    222 SorterClass.set_params_to_folder(recording, output_folder,
sorter_params, verbose)
    223 SorterClass.setup_recording(recording, output_folder,
verbose=verbose)
--> 224 SorterClass.run_from_folder(output_folder, raise_error, verbose)
    225 if with_output:
    226     sorting = SorterClass.get_result_from_folder(output_folder,
register_recording=True, sorting_info=True)

File
~\.conda\envs\spike\lib\site-packages\spikeinterface\sorters\basesorter.py:293,
in BaseSorter.run_from_folder(cls, output_folder, raise_error, verbose)
    290         print(f"{sorter_name} run time {run_time:0.2f}s")
    292 if has_error and raise_error:
--> 293     raise SpikeSortingError(
    294         f"Spike sorting error trace:\n{log['error_trace']}\n"
    295         f"Spike sorting failed. You can inspect the runtime trace
in {output_folder}/spikeinterface_log.json."
    296     )
    298 return run_time

SpikeSortingError: Spike sorting error trace:
Traceback (most recent call last):
  File
"C:\Users\garim\.conda\envs\spike\lib\site-packages\spikeinterface\sorters\external\mountainsort5.py",
line 191, in _run_from_folder
    recording_cached = create_cached_recording(
  File
"C:\Users\garim\.conda\envs\spike\lib\site-packages\mountainsort5\util\create_cached_recording.py",
line 32, in create_cached_recording
    ret.set_channel_locations(recording.get_channel_locations())
  File
"C:\Users\garim\.conda\envs\spike\lib\site-packages\spikeinterface\core\baserecordingsnippets.py",
line 345, in get_channel_locations
    raise Exception("There are no channel locations")
Exception: There are no channel locations

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\garim\.conda\envs\spike\lib\shutil.py", line 618, in
_rmtree_unsafe
    os.unlink(fullname)
PermissionError: [WinError 32] The process cannot access the file because
it is being used by another process:
'C:\\Users\\garim\\AppData\\Local\\Temp\\tmpvh9aan8x\\recording.dat'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\garim\.conda\envs\spike\lib\tempfile.py", line 843, in
onerror
    _os.unlink(path)
PermissionError: [WinError 32] The process cannot access the file because
it is being used by another process:
'C:\\Users\\garim\\AppData\\Local\\Temp\\tmpvh9aan8x\\recording.dat'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File
"C:\Users\garim\.conda\envs\spike\lib\site-packages\spikeinterface\sorters\basesorter.py",
line 258, in run_from_folder
    SorterClass._run_from_folder(sorter_output_folder, sorter_params,
verbose)
  File
"C:\Users\garim\.conda\envs\spike\lib\site-packages\spikeinterface\sorters\external\mountainsort5.py",
line 189, in _run_from_folder
    with TemporaryDirectory(dir=p["temporary_base_dir"]) as tmpdir:
  File "C:\Users\garim\.conda\envs\spike\lib\tempfile.py", line 869, in
__exit__
    self.cleanup()
  File "C:\Users\garim\.conda\envs\spike\lib\tempfile.py", line 873, in
cleanup
    self._rmtree(self.name, ignore_errors=self._ignore_cleanup_errors)
  File "C:\Users\garim\.conda\envs\spike\lib\tempfile.py", line 855, in
_rmtree
    _shutil.rmtree(name, onerror=onerror)
  File "C:\Users\garim\.conda\envs\spike\lib\shutil.py", line 750, in rmtree
    return _rmtree_unsafe(path, onerror)
  File "C:\Users\garim\.conda\envs\spike\lib\shutil.py", line 620, in
_rmtree_unsafe
    onerror(os.unlink, fullname, sys.exc_info())
  File "C:\Users\garim\.conda\envs\spike\lib\tempfile.py", line 846, in
onerror
    cls._rmtree(path, ignore_errors=ignore_errors)
  File "C:\Users\garim\.conda\envs\spike\lib\tempfile.py", line 855, in
_rmtree
    _shutil.rmtree(name, onerror=onerror)
  File "C:\Users\garim\.conda\envs\spike\lib\shutil.py", line 750, in rmtree
    return _rmtree_unsafe(path, onerror)
  File "C:\Users\garim\.conda\envs\spike\lib\shutil.py", line 601, in
_rmtree_unsafe
    onerror(os.scandir, path, sys.exc_info())
  File "C:\Users\garim\.conda\envs\spike\lib\shutil.py", line 598, in
_rmtree_unsafe
    with os.scandir(path) as scandir_it:
NotADirectoryError: [WinError 267] The directory name is invalid:
'C:\\Users\\garim\\AppData\\Local\\Temp\\tmpvh9aan8x\\recording.dat'

Spike sorting failed. You can inspect the runtime trace in
C:\Users\garim\mountainsort5_output_441/spikeinterface_log.json.
kshtjkumar commented 5 months ago

reinstalled spikeinterface from source and then this is the error I get :

SpikeSortingError                         Traceback (most recent call last)
Cell In[43], line 7
      3 recording_notch_ecog = spre.notch_filter(recording_ecog,q = 50) 
#notch_filter
      4 rec_ecog_ref = spre.common_reference(recording_notch_ecog,
operator="median", reference="global")  #rereferencing the data
----> 7 sorting_rec = ss.run_sorter("mountainsort5", rec_ecog_ref,
output_folder='mountainsort5_output_222', verbose = False )
      8 print("Sorter found", len(sorting_rec.get_unit_ids()), "units")
      9 sorting_rec = sorting_rec.remove_empty_units()

File
~\.conda\envs\spike\lib\site-packages\spikeinterface\sorters\runsorter.py:174,
in run_sorter(sorter_name, recording, output_folder,
remove_existing_folder, delete_output_folder, verbose, raise_error,
docker_image, singularity_image, delete_container_files, with_output,
**sorter_params)
    167             container_image = singularity_image
    168     return run_sorter_container(
    169         container_image=container_image,
    170         mode=mode,
    171         **common_kwargs,
    172     )
--> 174 return run_sorter_local(**common_kwargs)

File
~\.conda\envs\spike\lib\site-packages\spikeinterface\sorters\runsorter.py:224,
in run_sorter_local(sorter_name, recording, output_folder,
remove_existing_folder, delete_output_folder, verbose, raise_error,
with_output, **sorter_params)
    222 SorterClass.set_params_to_folder(recording, output_folder,
sorter_params, verbose)
    223 SorterClass.setup_recording(recording, output_folder,
verbose=verbose)
--> 224 SorterClass.run_from_folder(output_folder, raise_error, verbose)
    225 if with_output:
    226     sorting = SorterClass.get_result_from_folder(output_folder,
register_recording=True, sorting_info=True)

File
~\.conda\envs\spike\lib\site-packages\spikeinterface\sorters\basesorter.py:293,
in BaseSorter.run_from_folder(cls, output_folder, raise_error, verbose)
    290         print(f"{sorter_name} run time {run_time:0.2f}s")
    292 if has_error and raise_error:
--> 293     raise SpikeSortingError(
    294         f"Spike sorting error trace:\n{log['error_trace']}\n"
    295         f"Spike sorting failed. You can inspect the runtime trace
in {output_folder}/spikeinterface_log.json."
    296     )
    298 return run_time

SpikeSortingError: Spike sorting error trace:
Traceback (most recent call last):
  File
"C:\Users\garim\.conda\envs\spike\lib\site-packages\spikeinterface\sorters\basesorter.py",
line 258, in run_from_folder
  File
"C:\Users\garim\.conda\envs\spike\lib\site-packages\spikeinterface\sorters\external\mountainsort5.py",
line 191, in _run_from_folder
  File
"C:\Users\garim\.conda\envs\spike\lib\site-packages\mountainsort5\util\create_cached_recording.py",
line 18, in create_cached_recording
    si.BinaryRecordingExtractor.write_recording(
  File
"C:\Users\garim\.conda\envs\spike\lib\site-packages\spikeinterface\core\binaryrecordingextractor.py",
line 148, in write_recording
  File
"C:\Users\garim\.conda\envs\spike\lib\site-packages\spikeinterface\core\recording_tools.py",
line 137, in write_binary_recording
  File
"C:\Users\garim\.conda\envs\spike\lib\site-packages\spikeinterface\core\job_tools.py",
line 380, in run
  File
"C:\Users\garim\.conda\envs\spike\lib\concurrent\futures\process.py",
line 766, in map
    results = super().map(partial(_process_chunk, fn),
  File "C:\Users\garim\.conda\envs\spike\lib\concurrent\futures\_base.py",
line 610, in map
    fs = [self.submit(fn, *args) for args in zip(*iterables)]
  File "C:\Users\garim\.conda\envs\spike\lib\concurrent\futures\_base.py",
line 610, in <listcomp>
    fs = [self.submit(fn, *args) for args in zip(*iterables)]
  File
"C:\Users\garim\.conda\envs\spike\lib\concurrent\futures\process.py",
line 720, in submit
    raise BrokenProcessPool(self._broken)
concurrent.futures.process.BrokenProcessPool: A child process terminated
abruptly, the process pool is not usable anymore

Spike sorting failed. You can inspect the runtime trace in
C:\Users\garim\mountainsort5_output_222/spikeinterface_log.json.