Skip to content

Commit 492f219

Browse files
authored
* implement filter * test filter * update readme with content from docs index page * features heading * whatsnew
1 parent 066e0fd commit 492f219

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

README.md

+32-2
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,23 @@
77
| **License** | [![License][license-badge]][repo-link] |
88

99

10-
WIP implementation of a tree-like hierarchical data structure for xarray.
10+
**Datatree is a prototype implementation of a tree-like hierarchical data structure for xarray.**
1111

12-
This aims to create the data structure discussed in [xarray issue #4118](https://github.com/pydata/xarray/issues/4118), and therefore extend xarray's data model to be able to [handle arbitrarily nested netCDF4 groups](https://github.com/pydata/xarray/issues/1092#issuecomment-868324949).
12+
Datatree was born after the xarray team recognised a [need for a new hierarchical data structure](https://github.com/pydata/xarray/issues/4118),
13+
that was more flexible than a single `xarray.Dataset` object.
14+
The initial motivation was to represent netCDF files / Zarr stores with multiple nested groups in a single in-memory object,
15+
but `datatree.DataTree` objects have many other uses.
1316

17+
### Why Datatree?
18+
19+
You might want to use datatree for:
20+
21+
- Organising many related datasets, e.g. results of the same experiment with different parameters, or simulations of the same system using different models,
22+
- Analysing similar data at multiple resolutions simultaneously, such as when doing a convergence study,
23+
- Comparing heterogenous but related data, such as experimental and theoretical data,
24+
- I/O with nested data formats such as netCDF / Zarr groups.
25+
26+
### Features
1427

1528
The approach used here is based on benbovy's [`DatasetNode` example](https://gist.github.com/benbovy/92e7c76220af1aaa4b3a0b65374e233a) - the basic idea is that each tree node wraps a up to a single `xarray.Dataset`. The differences are that this effort:
1629
- Uses a node structure inspired by [anytree](https://github.com/xarray-contrib/datatree/issues/7) for the tree,
@@ -21,13 +34,30 @@ The approach used here is based on benbovy's [`DatasetNode` example](https://gis
2134
- Has a printable representation that currently looks like this:
2235
<img src="https://user-images.githubusercontent.com/35968931/130657849-577faa00-1b8b-4e33-a45c-4f389ce325b2.png" alt="drawing" width="500"/>
2336

37+
### Get Started
38+
2439
You can create a `DataTree` object in 3 ways:
2540
1) Load from a netCDF file (or Zarr store) that has groups via `open_datatree()`.
2641
2) Using the init method of `DataTree`, which creates an individual node.
2742
You can then specify the nodes' relationships to one other, either by setting `.parent` and `.chlldren` attributes,
2843
or through `__get/setitem__` access, e.g. `dt['path/to/node'] = DataTree()`.
2944
3) Create a tree from a dictionary of paths to datasets using `DataTree.from_dict()`.
3045

46+
### Development Roadmap
47+
48+
Datatree currently lives in a separate repository to the main xarray package.
49+
This allows the datatree developers to make changes to it, experiment, and improve it faster.
50+
51+
Eventually we plan to fully integrate datatree upstream into xarray's main codebase, at which point the [github.com/xarray-contrib/datatree](https://github.com/xarray-contrib/datatree>) repository will be archived.
52+
This should not cause much disruption to code that depends on datatree - you will likely only have to change the import line (i.e. from ``from datatree import DataTree`` to ``from xarray import DataTree``).
53+
54+
However, until this full integration occurs, datatree's API should not be considered to have the same [level of stability as xarray's](https://docs.xarray.dev/en/stable/contributing.html#backwards-compatibility).
55+
56+
### User Feedback
57+
58+
We really really really want to hear your opinions on datatree!
59+
At this point in development, user feedback is critical to help us create something that will suit everyone's needs.
60+
Please raise any thoughts, issues, suggestions or bugs, no matter how small or large, on the [github issue tracker](https://github.com/xarray-contrib/datatree/issues).
3161

3262

3363
[github-ci-badge]: https://img.shields.io/github/workflow/status/xarray-contrib/datatree/CI?label=CI&logo=github

docs/source/whats-new.rst

+2
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ Documentation
6666
By `Tom Nicholas <https://github.com/TomNicholas>`_.
6767
- Added context content to ``Index`` page (:pull:`182`)
6868
By `Tom Nicholas <https://github.com/TomNicholas>`_.
69+
- Updated the README (:pull:`187`)
70+
By `Tom Nicholas <https://github.com/TomNicholas>`_.
6971

7072
Internal Changes
7173
~~~~~~~~~~~~~~~~

0 commit comments

Comments
 (0)