Python package for parsing Open Ephys data.
Python reader for Open Ephys (www.open-ephys.org).
In order to install the pyopenephys package, open a terminal and run:
pip install pyopenephys
If you want to install from sources and get the latest updates, clone the repo and install locally:
git clone https://github.com/CINPLA/py-open-ephys cd py-open-ephys python setup.py install (or develop)
Pyopenephys allows the user to load data recorded with the Open Ephys. Currently, only the binary (recommended) and openephys (support for this format will be dropped in future releases) are supported.
The first step is creating a
File object. It only requires to pass the paht to the recording folder.
import pyopenephys file = pyopenephys.File("path-to-recording-folder")
The file object contains the different experiments (corresponding to different settings files) and each experiment contains a set of recordings.
# all experiments experiments = file.experiments print(len(experiments)) # recordings of first experiment experiment = experiments recordings = experiment1.recordings print(len(experiments)) # access first recording recording = recordings
Experiments store some useful information:
experiment.datetimecontains the starting date and time of the experiment creation
experiment.sig_chainis a dictionary containing the processors and nodeIds in the signal chain
experiment.settingsis a dictionary woth the parsed setting.xml file
experiment.acquisition_systemcontains the system used to input continuous data (e.g. 'Rhythm FPGA')
Recordings contain the actual data:
recording.durationis the duration of the recording (in seconds)
recording.sample_rateis the sampling frequency (in Hz)
recording.analog_signalsis list of
AnalogSignalobjects, which in turn have a
times(in s), and
recording.eventsis list of
EventDataobjects, which in turn have a
recording.trackingis list of
TrackingDataobjects , which in turn have a
metadatafields. Tracking data are recorded with the
Trackingplugin (https://github.com/CINPLA/tracking-plugin) and are save in binary format only (not in openephys format).
recording.spiketrainsis list of
SpikeTrainobjects, which in turn have a
metadatafields. Spiketrains are saved by the
Spike Viewersink in the Open Ephys GUI, in combination with either the
With a few lines of code, the data and relevant information can be easily parsed and accessed:
import pyopenephys import matplotlib.pylab as plt file = pyopenephys.File("path-to-recording-folder") # experiment 1 (0 in Python) experiment = file.experiments # recording 1 recording = experiment.recordings print('Duration: ', recoridng.duration) print('Sampling Rate: ', recoridng.sample_rate) analog_signals = recording.analog_signals events_data = recording.events spiketrains = recording.spiketrains # tracking_data are accessible only using binary format tracking_data = recording.tracking # plot analog signal of channel 4 signals = analog_signals fig_an, ax_an = plt.subplots() ax_an.plot(signals.times, signals.signal) # plot raster for spike trains fig_sp, ax_sp = plt.subplots() for i_s, sp in enumerate(spiketrains): ax_sp.plot(sp.times, i_s*np.ones(len(sp.times)), '|') plt.show()