Note
Click here to download the full example code
Handling probe information¶
In order to properly spike sort, you may need to load information related to the probe you are using.
spikeinterface
internally uses probeinterface to handle
probe or probe groups for recordings.
Depending the dataset the Probe object can be already included or you needs to be set manually.
Here’s how!
import numpy as np
import spikeinterface.extractors as se
First, let’s create a toy example:
recording, sorting_true = se.toy_example(duration=10, num_channels=32, seed=0, num_segments=2)
print(recording)
Out:
NumpyRecording: 32 channels - 2 segments - 30.0kHz - 20.000s
This generator already contain a probe object that you can retrieve directly an plot:
probe = recording.get_probe()
print(probe)
from probeinterface.plotting import plot_probe
plot_probe(probe)
Out:
Probe - 32ch
(<matplotlib.collections.PolyCollection object at 0x7f0158dbaa00>, <matplotlib.collections.PolyCollection object at 0x7f0158d56d30>)
You can also overwrite the probe. In that case you need to manually make the wiring (e.g. virtually connect each electrode to the recording device). Let’s use a probe from Cambridge Neurotech with 32 channels:
from probeinterface import get_probe
other_probe = get_probe('cambridgeneurotech', 'ASSY-37-E-1')
print(other_probe)
other_probe.set_device_channel_indices(np.arange(32))
recording_2_shanks = recording.set_probe(other_probe, group_mode='by_shank')
plot_probe(recording_2_shanks.get_probe())
Out:
cambridgeneurotech - ASSY-37-E-1 - 32ch
(<matplotlib.collections.PolyCollection object at 0x7f0158e9c5b0>, <matplotlib.collections.PolyCollection object at 0x7f0158d33730>)
Now let’s check what we have loaded. The group_mode=’by_shank’ automatically seta the ‘group’ property depending on the shank id. We can use this information to split the recording in two sub recordings:
print(recording_2_shanks)
print(recording_2_shanks.get_property('group'))
rec0, rec1 = recording_2_shanks.split_by(property='group')
print(rec0)
print(rec1)
Out:
NumpyRecording: 32 channels - 2 segments - 30.0kHz - 20.000s
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
0
1
Note that some formats (MEArec, SpikeGLX) automatically handle the probe
geometry. For almost all other formats the probe and the wiring have
to be set manually using the probeinterface
library.
Total running time of the script: ( 0 minutes 3.444 seconds)