phy: interactive visualization and manual spike sorting of large-scale ephys data
phy is an open-source Python library providing a graphical user interface for visualization and manual curation of large-scale electrophysiological data. It is optimized for high-density multielectrode arrays containing hundreds to thousands of recording sites (mostly Neuropixels probes).
Phy provides two GUIs:
- Template GUI (recommended): for datasets sorted with KiloSort and Spyking Circus,
- Kwik GUI (legacy): for datasets sorted with klusta and klustakwik2.
- [7 Sep 2021] Release of phy 2.0 beta 5, with some install and bug fixes
- [7 Feb 2020] Release of phy 2.0 beta 1, with many new views, new features, various improvements and bug fixes...
Phy requires a recent GPU and an SSD for storing your data (the GUI may be slow if the data is on an HDD).
You need a recent Python distribution.
Open a terminal and type:
pip install phy --pre --upgrade # If you plan to use the Kwik GUI, type the following without the leading hash # character: # pip install klusta klustakwik2
- Phy should now be installed. Open the GUI on a dataset as follows (the phy2 environment should still be activated):
cd path/to/my/spikesorting/output phy template-gui params.py
For your information, here are the Python dependencies of phy (as found in
phylib mtscomp numpy matplotlib scipy h5py dask cython pillow colorcet pyopengl requests qtconsole tqdm joblib click mkdocs PyQtWebEngine
Dealing with the error
ModuleNotFoundError: No module named 'PyQt5.QtWebEngineWidget
In some environments, you might get an error message related to QtWebEngineWidget. Run the command
pip install PyQtWebEngine and try launching phy again. This command should not run if the error message doesn't appear, as it could break the PyQt5 installation.
Upgrading from phy 1 to phy 2
- Do not install phy 1 and phy 2 in the same Python environment.
- It is recommended to delete
To install the development version of phy in a fresh environment, do:
git clone firstname.lastname@example.org:cortex-lab/phy.git cd phy pip install -r requirements.txt pip install -r requirements-dev.txt pip install -e . cd .. git clone email@example.com:cortex-lab/phylib.git cd phylib pip install -e . --upgrade
Running phy from a Python script
In addition to launching phy from the terminal with the
phy command, you can also launch it from a Python script or an IPython terminal. This may be useful when debugging or profiling. Here's a code example to copy-paste in a new
launch.py text file within your data directory:
from phy.apps.template import template_gui template_gui("params.py")
phy is developed and maintained by Cyrille Rossant.
Contributors to the repository are: