-
This repository features DataJoint pipeline design for extracellular array electrophysiology, with Neuropixels probe and Kilosort spike sorting method.
-
The pipeline presented here is not a complete pipeline by itself, but rather a modular design of tables and dependencies specific to the extracellular electrophysiology workflow.
-
This modular pipeline element can be flexibly attached downstream to any particular design of experiment session, thus assembling a fully functional ephys pipeline.
-
See the Element Array Electrophysiology documentation for the background information and development timeline.
-
For more information on the DataJoint Elements project, please visit https://elements.datajoint.org. This work is supported by the National Institutes of Health.
As the diagram depicts, the array ephys element starts immediately downstream from Session
,
and also requires some notion of Location
as a dependency for InsertionLocation
. We
provide an example workflow with a
pipeline script
that models (a) combining this Element with the corresponding Element-Session
, and (b) declaring a SkullReference
table to provide Location.
The probe
schema contains information regarding the Neuropixels probe and electrode configuration.
Click to expand details
-
ProbeType
- a lookup table specifying the type of Neuropixels probe (e.g. "neuropixels 1.0", "neuropixels 2.0 single-shank") -
ProbeType.Electrode
- all electrode and their properties for a particular probe type- An electrode here refers to one recordable electrode site on the Neuropixels probe (e.g. for Neuropixels 1.0, there are 960 sites per shank)
-
Probe
- record of an actual physical probe, identifiable by some unique ID (e.g. probe's serial number) -
ElectrodeConfig
- particular electrode configuration to be used for ephys recording -
ElectrodeConfig.Electrode
- corresponding electrodes inProbeType.Electrode
that are used for recording in this electrode configuration (e.g. for Neuropixels 1.0 or 2.0, there can be at most 384 electrodes usable for recording per probe)
The ephys
schema stores information regarding the recording from a probe for a given session.
Click to expand details
-
ProbeInsertion
- a surgical insertion of a probe in the brain. Every experimental session consists of one or more entries inProbeInsertion
with a correspondingInsertionLocation
each -
EphysRecording
- eachProbeInsertion
is accompanied by a correspondingEphysRecording
, specifying theElectrodeConfig
used for the recording from theProbe
defined in suchProbeInsertion
The ephys
schema features automatic ingestion of spike sorting results from the Kilosort
analysis method.
Click to expand details
-
Clustering
- specify instance(s) of clustering on anEphysRecording
, by someClusteringMethod
-
Curation
- specify instance(s) of curations performed on the output of a givenClustering
-
CuratedClustering
- set of results from a particular round of clustering/curationCuratedClustering.Unit
- Identified unit(s) from oneCuration
, and the associated properties (e.g. cluster quality, spike times, spike depths, etc.)WaveformSet
- A set of spike waveforms for units from a given CuratedClustering
Click to expand details
-
Install
element-array-ephys
pip install element-array-ephys
-
Upgrade
element-array-ephys
previously installed withpip
pip install --upgrade element-array-ephys
-
Install
element-interface
element-interface
is a dependency ofelement-array-ephys
, however it is not contained withinrequirements.txt
.
pip install "element-interface @ git+https://github.com/datajoint/element-interface"
When using this Element, one needs to run ephys.activate
to declare the schemas and tables on the database.
Click to expand details
To activate the element-array-ephys
, ones need to provide:
-
Schema names
- schema name for the probe module
- schema name for the ephys module
-
Upstream tables
- Session table: A set of keys identifying a recording session (see Element-Session).
- SkullReference table: A reference table for InsertionLocation, specifying the skull reference (see example pipeline).
-
Utility functions. See example definitions here
- get_ephys_root_data_dir(): Returns your root data directory.
- get_session_directory(): Returns the path of the session data relative to the root.
For more detail, check the docstring of the element-array-ephys
:
help(probe.activate)
help(ephys.activate)
See this project for an example usage of this Array Electrophysiology Element.
-
If your work uses DataJoint and DataJoint Elements, please cite the respective Research Resource Identifiers (RRIDs) and manuscripts.
-
DataJoint for Python or MATLAB
-
Yatsenko D, Reimer J, Ecker AS, Walker EY, Sinz F, Berens P, Hoenselaar A, Cotton RJ, Siapas AS, Tolias AS. DataJoint: managing big scientific data using MATLAB or Python. bioRxiv. 2015 Jan 1:031658. doi: https://doi.org/10.1101/031658
-
DataJoint (RRID:SCR_014543) - DataJoint for
<Select Python or MATLAB>
(version<Enter version number>
)
-
-
DataJoint Elements
-
Yatsenko D, Nguyen T, Shen S, Gunalan K, Turner CA, Guzman R, Sasaki M, Sitonic D, Reimer J, Walker EY, Tolias AS. DataJoint Elements: Data Workflows for Neurophysiology. bioRxiv. 2021 Jan 1. doi: https://doi.org/10.1101/2021.03.30.437358
-
DataJoint Elements (RRID:SCR_021894) - Element Array Electrophysiology (version
<Enter version number>
)
-