跳转到主要内容

用于读取和写入AxoGraph数据文件的Python包

项目描述

PyPI project GitHub source code Launch a demo in Binder

axographio 是一个Python包,它使得读取和写入AxoGraph文件格式的二进制数据文件变得简单。

AxoGraph 是一个广泛用于电生理学研究的数据采集和分析的商业软件包。虽然它可以读取和写入文本格式的文件,但其二进制格式更小,加载和保存速度更快;因此,许多用户优先选择使用此格式。公司随附了文件格式的详细信息以及用于读取和写入这些文件的第三方软件(如本Python包)的示例C++代码。

Python 是一种功能强大且易于使用的通用编程语言。许多用于科学数据分析和数据可视化的 Python 库可供使用,例如 SciPy、Matplotlib 和 Mayavi。

此包提供了一种简单的方法,将 AxoGraph 数据文件加载到 Python 程序或交互会话中。如果您想使用基于 Python 的工具分析在 AxoGraph 中记录的数据,此包提供了您需要的粘合代码。您还可以将数据写入 AxoGraph 二进制格式,以便在 AxoGraph 中查看和分析。

获取 axographio

axographio 与 Python 2 和 Python 3 都兼容。

获取 axographio 的最简单方法是使用 pip 安装最新稳定版本,但您也可以从源代码构建它。

安装最新稳定版本

安装和运行 axographio 的要求

  • NumPy 包(《pip install numpy》)

axographio 包含必须编译的 C++ 代码。PyPI(https://pypi.ac.cn/project/axographio/)存储了常见平台(例如,64 位 Windows 上的 Python 3)的预编译包副本,您可以使用 pip 安装这些包。

要安装最新稳定版本,请尝试以下操作

pip install axographio

如果 PyPI 上有适用于您平台的预编译包,pip 应该会快速下载并安装它。如果没有,pip 将自动尝试从源代码构建包。构建包需要额外的要求。如果在构建过程中 pip 失败,请继续阅读。

从源代码构建

如果您需要构建包,因为 PyPI 上还没有为您的平台提供预编译版本,或者您只是想尝试从源代码构建,您需要满足额外的要求。

从源代码构建 axographio 的要求

  • NumPy 包(《pip install numpy》)

  • Cython 包,版本 0.19 或更高版本(《pip install cython>=0.19》)

  • C++ 编译器(例如,在 Windows 系统上,Microsoft 的 Visual C++ Build Tools,或在 Mac 系统上的 Xcode)

如果从源代码构建时 pip 失败,请确保您满足这些要求并再次尝试。

如果您想使用来自 GitHub 的最新开发源代码进行构建和安装,请尝试以下操作

pip install git+https://github.com/CWRUChielLab/axographio

此命令需要 git。如果您没有 git,您可以从 GitHub 手动下载源代码,并从您的本地目录安装

pip install C:\wherever-you-put-the-source-code

用法

尝试 Binder 演示,这是一个无需安装或烦恼的交互式 Python 会话。您现在就可以开始编码了!

加载数据文件就像调用 read 一样简单

>>> import axographio
>>>
>>> f = axographio.read('AxoGraph X File.axgx')

此时,变量 f 将包含一个 file_contents 对象,其中包含文件中的列名和数据。例如,您现在可以使用 Matplotlib 绘制前两列

>>> import matplotlib.pyplot as plt
>>>
>>> plt.plot(f.data[0], f.data[1])
>>> plt.xlabel(f.names[0])
>>> plt.ylabel(f.names[1])
>>> plt.show()  # may be optional depending on your OS

当然,您可能不仅仅想绘制数据。列数据支持标准的序列接口(即索引、迭代等),可以使用这些包中的 asarray 函数将其转换为 NumPy 或 SciPy 数组,例如。

>>> import numpy as np
>>>
>>> times = np.asarray(f.data[0])

写入文件相对简单。您只需创建一个新的 file_contents 对象(或使用您之前加载的一个),然后调用 write。例如,以下代码在当前目录中创建一个名为‘my60Hz.axgx’的文件,包含两个60 Hz的正弦波通道

>>> import axographio
>>> import numpy as np
>>>
>>> times = np.arange(0, 10, 0.0001)
>>> column1 = np.sin(2*np.pi * 60 * times)
>>> column2 = np.cos(2*np.pi * 60 * times)
>>> f = axographio.file_contents(
...    ['time (s)', 'my recording (V)', 'your recording (V)'],
...    [times, column1, column2])
>>> f.write('my60Hz.axgx') # created in the current directory

问题和支持

请将任何问题、问题、评论或建议发布在 GitHub问题跟踪器 上。

更改

0.3.2

  • 重新发布0.3.1版本,版本升级以解决 问题#8

0.3.1

  • 仅在运行测试时修改NumPy的全局打印设置

0.3.0

  • 可以使用 axographio.tests.run() 运行包测试套件

  • 可以使用 axographio.__version__ 访问包版本

  • 在源存储库中添加了示例Jupyter笔记本(不包括在安装中)

  • 更新了安装说明

  • 改进了文档

  • 重新组织了源代码文件结构

  • 修复了NumPy < 1.14的doctests

0.2.0

  • 增加了与Python 3的兼容性

0.1.1

  • 修复了一个四舍五入错误,该错误可能在时间列中创建一个额外的数据点

0.1.0

  • 首次发布

致谢

本项目最初在凯斯西储大学的Chiel实验室编写,得到了NIH资助项目NS047073、俄亥俄州创新激励奖奖学金和凯斯西储大学MSTP(NIH T32 GM007250)的支持。本项目建立在许多其他开源项目之上,包括Python、C++ AxoGraph文件输入/输出代码(置于公有领域;项目源代码中包含修改版本)、Cython等。还要感谢Hillel Chiel博士提供测试和有益的建议。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定该选择哪一个,请了解更多关于 安装包 的信息。

源分布

axographio-0.3.2.tar.gz (63.4 kB 查看散列值)

上传时间

构建分布

axographio-0.3.2-cp39-cp39-win_amd64.whl (100.4 kB 查看散列值)

上传时间 CPython 3.9 Windows x86-64

由以下组织支持