Skip to main content

使用可移植的 JData 注释格式编码和解码 Python 数据结构

项目描述

JData for Python - 用于 Python 的轻量级和可序列化数据注释

构建状态

JData 规范定义了一个轻量级的独立于语言的数据注释接口,旨在跨不同的编程语言(如 MATLAB、JavaScript、Python 等)存储和共享复杂的数据结构。使用 JData 格式,可以将复杂的 Python 数据结构编码为一个dict对象,即轻松序列化为 JSON/二进制 JSON 文件,并在不同语言的程序之间共享此类数据。

如何安装

该软件包也可以通过以下方式安装在 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 numpysudo apt-get install python3-numpy
  • (可选) bjdata : PIP: run pip install bjdataor sudo 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-devpip install backports.lzma(Python 2.7 需要),仅在编码/解码 lzma 压缩数据时需要
  • (可选)blosc2 : PIP: run pip install blosc2,仅在编码/解码 blosc2 压缩数据时需要

如果您使用的是 Python 3.x ,则替换pip为。pip3如果您的系统上存在pippip3 不存在,请运行

    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,lzmabase64各种 blosc2压缩方法,包括blosc2blosclz, blosc2lz4, blosc2lz4hc, blosc2zlib, blosc2zstd. 要应用选定的压缩方法,只需将其设置{'compression':'method'}为选项jdata.encodejdata.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

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

jdata-0.5.1.tar.gz (15.9 kB 查看哈希

已上传 source

内置分布

jdata-0.5.1-py2.py3-none-any.whl (14.1 kB 查看哈希

已上传 py2 py3