用于分析开放式Ephys数据的Python包。

pyopenephys的Python项目详细描述


Build StatusProject Status: Active - The project has reached a stable, usable state and is being actively developed.codecov

pyopenephys

用于Open Ephys的python阅读器。

安装

要安装pyopenephys软件包,请打开一个终端并运行:

pip install pyopenephys

如果要从源安装并获取最新更新,请克隆repo并在本地安装:

git clone https://github.com/CINPLA/pyopenephys
cd pyopenephys
python setup.py install 
# use 'python setup.py develop' to install fixed bugs 

基本用法

pyopenephys允许用户加载用Open Ephys记录的数据。目前,只支持binary(推荐)和openphys(在将来的版本中将不再支持此格式)。

第一步是创建一个File对象。它只需要将paht传递到记录文件夹。

importpyopenephysfile=pyopenephys.File("path-to-recording-folder")

文件对象包含不同的实验(对应于不同的设置文件),每个实验包含一组记录。

# all experimentsexperiments=file.experimentsprint(len(experiments))# recordings of first experimentexperiment=experiments[0]recordings=experiment.recordingsprint(len(experiments))# access first recordingrecording=recordings[0]

实验存储一些有用的信息:

  • experiment.datetime包含创建实验的开始日期和时间
  • experiment.sig_chain是包含信号链中的处理器和节点的字典
  • experiment.settings是一个字典,其中包含已分析的setting.xml文件
  • experiment.acquisition_system包含用于输入连续数据的系统(例如,“节奏fpga”)

录制包含实际数据:

  • recording.duration是录制的持续时间(秒)
  • recording.sample_rate是采样频率(赫兹)
  • recording.analog_signalsAnalogSignal对象的列表,这些对象依次具有signaltimes(在s中)和channel_id字段。
  • recording.eventsEventData对象的列表,这些对象依次有times(s)、channelschannel_statesfull_wordsprocessornode_idmetadata字段。
  • recording.trackingTrackingData对象的列表,这些对象依次有times(s)、xywidthheightchannelsmetadata字段。跟踪数据用Tracking插件(https://github.com/CINPLA/tracking-plugin)记录,并仅以binary格式保存(不以openphys格式保存)。
  • recording.spiketrainsSpikeTrain对象的列表,这些对象依次有timeswaveformselectrode_indicesclustersmetadata字段。通过开放式Ephys图形用户界面中的Spike Viewer接收器,结合Spike DetectorSpike Viewer来保存峰值序列。

只需几行代码,数据和相关信息就可以轻松解析和访问:

importpyopenephysimportmatplotlib.pylabaspltfile=pyopenephys.File("path-to-recording-folder")# experiment 1 (0 in Python)experiment=file.experiments[0]# recording 1 recording=experiment.recordings[0]print('Duration: ',recording.duration)print('Sampling Rate: ',recording.sample_rate)analog_signals=recording.analog_signalsevents_data=recording.eventsspiketrains=recording.spiketrains# tracking_data are accessible only using binary formattracking_data=recording.tracking# plot analog signal of channel 4signals=analog_signals[0]fig_an,ax_an=plt.subplots()ax_an.plot(signals.times,signals.signal[3])# plot raster for spike trainsfig_sp,ax_sp=plt.subplots()fori_s,spinenumerate(spiketrains):ax_sp.plot(sp.times,i_s*np.ones(len(sp.times)),'|')plt.show()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java调用Python函数作为TEID中的UDF   java Android。支持v4导入不工作   java如何影响具有静态属性的类   java如何在从glTexImage2D()分配后编辑纹理的像素颜色   javaspringboot+rediscache+@Cacheable适用于某些方法,而不适用于其他方法   java无法将动态Web模块方面从3.0更改为2.5   java如何在新选项卡中显示打印的文档?   java Google Cloud Endpoints API方法仅在删除用户参数时成功调用   java为什么我可以使用Stack<Double>但不能使用Stack<Double>?   java JDBC PreparedStatement似乎忽略了占位符   java如何设置JInternalFrame的标准图标化位置?   Java文件。copy()不复制文件   基于另一个类的java显示arraylist?   java Android Studio:错误:非法字符:'\u2028'   对象(Java)无法实例化类型映像?   javascript错误:飞行前响应的HTTP状态代码401无效   java确保泛型vararg参数具有相同的类型