使用可移植的 JData 注释格式编码和解码 Python 数据结构
项目描述
JData for Python - 用于 Python 的轻量级和可序列化数据注释
- 版权所有:(C) 方倩倩 (2019-2022) <q.fang at neu.edu>
- 许可证:Apache 许可证,2.0 版
- 版本:0.5.1
- 网址:https ://github.com/NeuroJSON/pyjdata
JData 规范定义了一个轻量级的独立于语言的数据注释接口,旨在跨不同的编程语言(如 MATLAB、JavaScript、Python 等)存储和共享复杂的数据结构。使用 JData 格式,可以将复杂的 Python 数据结构编码为一个dict对象,即轻松序列化为 JSON/二进制 JSON 文件,并在不同语言的程序之间共享此类数据。
如何安装
- Github:从https://github.com/NeuroJSON/pyjdata下载
- PIP:运行
pip install jdata见https://pypi.org/project/jdata/
该软件包也可以通过以下方式安装在 Ubuntu 21.04 或 Debian Bullseye 上
sudo apt-get install python3-jdata
在较旧的 Ubuntu 或 Debian 版本上,您可以通过以下 PPA 安装 jdata:
sudo add-apt-repository ppa:fangq/ppa
sudo apt-get update
sudo apt-get install python3-jdata
依赖项:
- numpy : PIP: 运行
pip install numpy或sudo apt-get install python3-numpy - (可选) bjdata : PIP: run
pip install bjdataorsudo apt-get install python3-bjdata,见https://pypi.org/project/bjdata/,只需要读/写 BJData/UBJSON 文件 - (可选)lz4 : PIP: run
pip install lz4,仅在编码/解码 lz4 压缩数据时需要 - (可选)backports.lzma:PIP:运行
sudo apt-get install liblzma-dev和pip install backports.lzma(Python 2.7 需要),仅在编码/解码 lzma 压缩数据时需要 - (可选)blosc2 : PIP: run
pip install blosc2,仅在编码/解码 blosc2 压缩数据时需要
如果您使用的是 Python 3.x ,则替换pip为。pip3如果您的系统上存在pip或pip3
不存在,请运行
sudo apt-get install python3-pip
请注意,在某些操作系统版本(例如 Ubuntu 20.04)中,不再支持 python2.x 和 python-pip。
也可以从源代码安装此模块。为此,您首先从 Github 中查看最新代码的副本
git clone https://github.com/NeuroJSON/pyjdata.git
cd pyjdata
然后将模块安装到您的本地用户文件夹
python3 setup.py install --user
或者,如果您愿意,可以通过以下方式为所有用户安装到系统文件夹
sudo python3 setup.py install
如果您想为 Python 3.x 而不是 2.x 安装它,请替换python为。python3
除了安装模块,您还可以直接从本地副本导入 jdata 模块,方法是 cd 解压缩的 pyjdata 包的根文件夹,然后运行
import jdata as jd
如何使用
PyJData 模块易于使用。您可以使用这些encode()/decode()函数将 Python 数据编码为 JData 注释格式,或将 JData 结构解码为原生 Python 数据,例如
import jdata as jd
import numpy as np
a={'str':'test','num':1.2,'list':[1.1,[2.1]],'nan':float('nan'),'np':np.arange(1,5,dtype=np.uint8)}
jd.encode(a)
jd.decode(jd.encode(a))
d1=jd.encode(a,{'compression':'zlib','base64':1})
d1
jd.decode(d1,{'base64':1})
可以使用该函数进一步将 JData 注释数据保存为 JSON 或二进制 JSON (UBJSON) 文件jdata.save,或使用该函数将 JData 格式的数据加载到 Pythonjdata.load
import jdata as jd
import numpy as np
a={'str':'test','num':1.2,'list':[1.1,[2.1]],'nan':float('nan'),'np':np.arange(1,5,dtype=np.uint8)}
jd.save(a,'test.json')
newdata=jd.load('test.json')
newdata
PyJData 支持多种 ND 阵列数据压缩/解压缩方法(即编解码器),类似于 HDF5 过滤器。当前支持的编解码器包括zlib, gzip, lz4,lzma和base64各种
blosc2压缩方法,包括blosc2blosclz, blosc2lz4, blosc2lz4hc, blosc2zlib,
blosc2zstd. 要应用选定的压缩方法,只需将其设置{'compression':'method'}为选项jdata.encode或jdata.save功能;jdata.load或根据数据中存在的注释jdata.decode自动解压数据。_ArrayZipType_只有blosc2
压缩方法支持多线程。要设置线程号,应该nthread
在选项 ( opt) 中为编码和解码定义一个值。
效用
可以使用命令从基于 JSON 的数据文件 ( .json, .jdt, .jnii, .jmsh, .jnirs) 转换为基于二进制 JData 的二进制文件 ( .bjd, .jdb, .bnii, .bmsh, .bnirs),反之亦然
python3 -mjdata /path/to/text/json/file.json # convert to /path/to/text/json/file.jdb
python3 -mjdata /path/to/text/json/file.jdb # convert to /path/to/text/json/file.json
python3 -mjdata -h # show help info
测试
要查看其他数据类型支持,请使用以下命令运行内置测试
python3 -m unittest discover -v test
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。