SpikeInterface / spikeinterface

A Python-based module for creating flexible and robust spike sorting pipelines.
https://spikeinterface.readthedocs.io
MIT License
533 stars 187 forks source link

tridesclous and spikeinterface have conflicting dependencies #1778

Closed RikkelBob closed 1 year ago

RikkelBob commented 1 year ago

The newest (git) version of spikeinterface seems to be incompatible with tridesclous because of a numpy conflict

From pipdeptree:

tridesclous==1.6.6.1
   numpy [required: <1.23, installed: 1.24.0]

sortingview==0.11.15
   pynwb
      pandas [required: >=1.1.5, installed: 2.0.3]
         numpy [required: >=1.23.2, installed: 1.24.0]
alejoe91 commented 1 year ago

@RikkelBob

Have you tried to use the docker image?

https://spikeinterface.readthedocs.io/en/latest/modules/sorters.html#running-sorters-in-docker-singularity-containers

RikkelBob commented 1 year ago

@alejoe91 Yes the docker image works fine, but trying to load sorting results afterwards still requires tridesclous to be installed locally

alejoe91 commented 1 year ago

I see! @RikkelBob I recommend using the save() function to simplify the pipeline:

sorting_tdc = ss.run_sorter("tridesclous", recording, docker_image=True)
sorting_tdc = sorting_tdc.save(folder="tdc_output")

# in another session
sorting_tdc = si.load_extractor("tdc_output")

This way you can foget about tridesclous and its dependencies ;)

samuelgarcia commented 1 year ago

Hi @RikkelBob. I will try to make a release on tridesclous to change the dependencies constrains.

RikkelBob commented 1 year ago

@alejoe91 Perfect, that works! In the guide, saving is done in a different way. Might be worth it to mention this way of saving too.

sorting = si.run_sorter('kilosort2_5', rec, output_folder=base_folder / 'kilosort2.5_output',
                        docker_image=True, verbose=True, **params_kilosort2_5)

@samuelgarcia Thanks!

alejoe91 commented 1 year ago

good idea @RikkelBob! I'll add the save step to the how to guide :)