Tracking_Graph is a tool for track units across spike sorting solutions. This package is part of the PhD This project is part of my PhD research at [University Name]
Install Tracking_Graph using pip:
pip install tracking_graph
from tracking_graph import run_tg, get_tg_groups, EuclideanClassifier
# Create a classifier
modelcreator = EuclideanClassifier.creator(std_mult=3) # Classify spikes with length > 3 std
# Run Tracking_Graph
G = run_tg(
we_list, # List of WaveformExtractor objects
outputfile='/home/user/examplefolder/tg_data.hdf5',
max_len=2, # Maximum edge length, must be at least 1
modelcreator=modelcreator
)
# Compute results programmatically (can be replaced by the GUI)
groups, sG, discarded = get_tg_groups(
G,
mintrack=3, # Minimum number of segments for a cluster
merge=True # Apply criteria to merge splits
)
# Create a final results table
import pandas as pd
df = []
for gi, g in enumerate(groups):
for c in g:
df.append({'segment': c.segment,
'cluster': c.unit,
'tg_unit': gi})
results_table = pd.DataFrame(df)
Launch the graphical interface (Streamlit server) using:
tg_gui
Tracking_Graph provides a wrapper to load aligned waveforms from Wave_Clus clustering results, addressing limitations in SpikeInterface's waveform interpolation:
from tracking_graph.spikeinterface_addons import Waveclus_Waveforms
path_times_file = '/home/user/examplefolder/times_example.mat' # Full path to Wave_Clus result
we = Waveclus_Waveforms(path_times_file) # Object with basic WaveformExtractor interface
- Tracking_Graph requires
spikeinterface<=0.100
due to its dependency on theWaveformExtractor
class.
Contributions are welcome! Please feel free to submit a Pull Request.
For more projects and information, visit my GitHub profile: ferchaure