xarray的分层树状数据结构
项目描述
datatree
CI | |
---|---|
Docs | |
包 | |
许可证 |
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
)调度到树中的每个节点, - 有一系列测试,
- 有一个可打印的表示,目前看起来是这样的
入门指南
您可以通过以下三种方式创建一个DataTree
对象:
- 通过
open_datatree()
从具有组的netCDF文件(或Zarr存储)加载。 - 使用
DataTree
的初始化方法,该方法创建单个节点。然后,您可以通过设置.parent
和.children
属性或通过__get/setitem__
访问(例如dt['path/to/node'] = DataTree()
)来指定节点之间的关系。 - 使用
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问题跟踪器上提出任何想法、问题、建议或错误,无论大小。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。