跳转到主要内容

xarray的分层树状数据结构

项目描述

datatree

CI GitHub Workflow Status Code Coverage Status pre-commit.ci status
Docs Documentation Status
Conda PyPI
许可证 License

Datatree是xarray的树状分层数据结构的一个原型实现。

Datatree是在xarray团队认识到需要对一个比单个xarray.Dataset对象更灵活的新的分层数据结构的需求后诞生的。最初的动机是将具有多个嵌套组的netCDF文件/Zarr存储表示为单个内存对象,但datatree.DataTree对象有其他许多用途。

安装

您可以通过pip安装datatree

pip install xarray-datatree

或通过conda-forge

conda install -c conda-forge xarray-datatree

为什么选择Datatree?

您可能希望使用datatree来

  • 组织许多相关数据集,例如具有不同参数的相同实验的结果或使用不同模型对同一系统进行的模拟,
  • 同时分析多个分辨率相似的数据,例如在进行收敛性研究时,
  • 比较异构但相关的数据,例如实验数据和理论数据,
  • 具有嵌套数据格式(如netCDF / Zarr组)的I/O。

2023年AMS-python会议上的Datatree演示文稿

功能

这里使用的方法基于benbovy的DatasetNode示例 - 基本思想是每个树节点封装一个xarray.Dataset。不同之处在于,这项工作

  • 为树使用受anytree启发的节点结构,
  • 实现了路径式的获取和设置,
  • 有映射用户提供的函数到树中每个节点的函数,
  • 自动将xarray.Dataset的API(如.isel)调度到树中的每个节点,
  • 有一系列测试,
  • 有一个可打印的表示,目前看起来是这样的
drawing

入门指南

您可以通过以下三种方式创建一个DataTree对象:

  1. 通过open_datatree()从具有组的netCDF文件(或Zarr存储)加载。
  2. 使用DataTree的初始化方法,该方法创建单个节点。然后,您可以通过设置.parent.children属性或通过__get/setitem__访问(例如dt['path/to/node'] = DataTree())来指定节点之间的关系。
  3. 使用DataTree.from_dict()从数据集的路径字典创建树。

开发路线图

Datatree目前位于与xarray主包分离的独立存储库中。这允许datatree的开发者更快地对其进行更改、实验和改进。

最终,我们计划将datatree完全集成到xarray的主代码库中,届时github.com/xarray-contrib/datatree存储库将被存档。这不应导致对依赖于datatree的代码造成太大的中断 - 您可能只需要更改导入行(即从from datatree import DataTree更改为from xarray import DataTree)。

然而,在完全集成之前,datatree的API不应被认为与xarray的稳定性相同

用户反馈

我们非常、非常、非常希望听到您对datatree的看法!在开发这个阶段,用户反馈对于我们创建满足每个人需求的产品至关重要。请在任何github问题跟踪器上提出任何想法、问题、建议或错误,无论大小。

项目详情


下载文件

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

源分布

xarray-datatree-0.0.14.tar.gz (90.1 kB 查看哈希值)

上传时间

构建分布

xarray_datatree-0.0.14-py3-none-any.whl (63.7 kB 查看哈希值)

上传于 Python 3

由以下支持