pydata / pydata/xarray

API for reorganizing levels of a datatree

Open
#9,344 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

API design enhancement topic-DataTree
Dominant language
Python
Stars
4.2k
Forks
1.4k
Avg merge
2d 15h
Merged PRs (30d)
14

Description

What is your issue?

(Copied from https://github.com/xarray-contrib/datatree/issues/186 - there are a few more comments there)


@jbusecke and I were discussing API for reorganizing levels of a tree.

For example, say I have 2 models, each which ran 2 scenarios. Thats 4 data-containing leaves in my tree, but there are 2 equally-valid ways to organise this, either model-first or scenario-first.

The model-first tree has node paths:
/mod1/scen1
/mod2/scen1
/mod1/scen2
/mod2/scen2
whilst the scenario-first tree has node paths:
/scen1/mod1
/scen2/mod1
/scen1/mod2
/scen2/mod2

Either of these is equally valid, and one might be preferred sometimes over the other, so we should have a method than can rearrange one structure into the other.

The question is what the API to do this should look like so that it's general, intuitive, and powerful.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading this issue and the referenced datatree discussion at github.com/xarray-contrib/datatree/issues/186. Review the existing tree-reorganization APIs and decide how a general model-first/scenario-first rearrangement should be expressed. Done means an agreed intuitive API with behavior specified for the example and corresponding coverage in the project’s tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.