catalystneuro / mease-lab-to-nwb

MIT License
3 stars 2 forks source link

Running Kilosort2 with bat Script #31

Closed FilippoHei closed 2 years ago

FilippoHei commented 3 years ago

So when trying to run Kilosort2 after having converted the Intan rhd files into binary files, the command prompt shows following error message:

DEBUG:root:Reading tsync 1.2 file: Z:\Filippo\Animals\Cohort04_1,2,4,5\#4\2021-01-16\P3.2_50%reward_session63\intan-signals\0142_data.tsync
RUNNING SHELL SCRIPT: Z:\Filippo\Animals\Cohort04_1,2,4,5\#4\2021-01-16\P3.2_50%reward_session63\intan-signals\spikeinterface\kilosort2\0\run_kilosort2.bat

The command "Z:\Filippo\Animals\Cohort04_1" is either misspelled or could not be found.

Accordingly, the following error results in the Jupyter Notebook:

FileNotFoundError                         Traceback (most recent call last)
<ipython-input-29-1a3545997771> in <module>
      1 # Run Kilsort2 with grouping
      2 print("Running Kilosort2")
----> 3 sorting_KL = ss.run_kilosort2(recording_processed, output_folder=working_folder / 'kilosort2',
      4                         grouping_property='group', parallel=True, n_jobs=8, verbose=True,
      5                         raise_error=False, **sorter_params['kilosort2'])

c:\users\groh\anaconda3\envs\measelab\lib\site-packages\spikesorters\sorterlist.py in run_kilosort2(*args, **kwargs)
    448         The spike sorted data
    449     """
--> 450     return run_sorter('kilosort2', *args, **kwargs)
    451 
    452 def run_kilosort2_5(*args, **kwargs):

c:\users\groh\anaconda3\envs\measelab\lib\site-packages\spikesorters\sorterlist.py in run_sorter(sorter_name_or_class, recording, output_folder, delete_output_folder, grouping_property, parallel, verbose, raise_error, n_jobs, joblib_backend, **params)
     89     sorter.set_params(**params)
     90     sorter.run(raise_error=raise_error, parallel=parallel, n_jobs=n_jobs, joblib_backend=joblib_backend)
---> 91     sortingextractor = sorter.get_result()
     92 
     93     return sortingextractor

c:\users\groh\anaconda3\envs\measelab\lib\site-packages\spikesorters\basesorter.py in get_result(self)
    234 
    235     def get_result(self):
--> 236         sorting_list = self.get_result_list()
    237         if len(sorting_list) == 1:
    238             sorting = sorting_list[0]

c:\users\groh\anaconda3\envs\measelab\lib\site-packages\spikesorters\basesorter.py in get_result_list(self)
    229         sorting_list = []
    230         for i, _ in enumerate(self.recording_list):
--> 231             sorting = self.get_result_from_folder(self.output_folders[i])
    232             sorting_list.append(sorting)
    233         return sorting_list

c:\users\groh\anaconda3\envs\measelab\lib\site-packages\spikesorters\kilosort2\kilosort2.py in get_result_from_folder(output_folder)
    222         with (output_folder / 'spikeinterface_params.json').open('r') as f:
    223             sorter_params = json.load(f)['sorter_params']
--> 224         sorting = se.KiloSortSortingExtractor(folder_path=output_folder, keep_good_only=sorter_params['keep_good_only'])
    225         return sorting

c:\users\groh\anaconda3\envs\measelab\lib\site-packages\spikeextractors\extractors\kilosortextractors\kilosortextractors.py in __init__(self, folder_path, exclude_cluster_groups, load_waveforms, keep_good_only, verbose)
     24     def __init__(self, folder_path, exclude_cluster_groups=None, load_waveforms=False, keep_good_only=False,
     25                  verbose=False):
---> 26         PhySortingExtractor.__init__(self, folder_path, exclude_cluster_groups, load_waveforms, verbose)
     27         self._keep_good_only = keep_good_only
     28         self._good_units = []

c:\users\groh\anaconda3\envs\measelab\lib\site-packages\spikeextractors\extractors\phyextractors\phyextractors.py in __init__(self, folder_path, exclude_cluster_groups, load_waveforms, verbose)
     59         phy_folder = Path(folder_path)
     60 
---> 61         spike_times = np.load(phy_folder / 'spike_times.npy')
     62         spike_templates = np.load(phy_folder / 'spike_templates.npy')
     63 

c:\users\groh\anaconda3\envs\measelab\lib\site-packages\numpy\lib\npyio.py in load(file, mmap_mode, allow_pickle, fix_imports, encoding)
    414             own_fid = False
    415         else:
--> 416             fid = stack.enter_context(open(os_fspath(file), "rb"))
    417             own_fid = True
    418 

FileNotFoundError: [Errno 2] No such file or directory: 'Z:\\Filippo\\Animals\\Cohort04_1,2,4,5\\#4\\2021-01-16\\P3.2_50%reward_session63\\intan-signals\\spikeinterface\\kilosort2\\0\\spike_times.npy'

I assume that this is a simple Windows Path error, since the bat script doesn't recognize the correct command to run Kilosort2 and interpretes the comma in the file name as a separation marker. Could you help me out with that?

Thanks a lot in advance!

alejoe91 commented 3 years ago

@FilippoHei I think that in general commas in the file names should be avoided. Can you try to rename the file and run it again?