MCPcopy
hub / github.com/pydata/xarray / merge_trees

Function merge_trees

xarray/structure/merge.py:803–851  ·  view source on GitHub ↗

Merge specialized to DataTree objects.

(
    trees: Sequence[DataTree],
    compat: CompatOptions | CombineKwargDefault = _COMPAT_DEFAULT,
    join: JoinOptions | CombineKwargDefault = _JOIN_DEFAULT,
    fill_value: object = dtypes.NA,
    combine_attrs: CombineAttrsOptions = "override",
)

Source from the content-addressed store, hash-verified

801
802
803def merge_trees(
804 trees: Sequence[DataTree],
805 compat: CompatOptions | CombineKwargDefault = _COMPAT_DEFAULT,
806 join: JoinOptions | CombineKwargDefault = _JOIN_DEFAULT,
807 fill_value: object = dtypes.NA,
808 combine_attrs: CombineAttrsOptions = "override",
809) -> DataTree:
810 """Merge specialized to DataTree objects."""
811 from xarray.core.dataset import Dataset
812 from xarray.core.datatree import DataTree
813 from xarray.core.datatree_mapping import add_path_context_to_errors
814
815 if fill_value is not dtypes.NA:
816 # fill_value support dicts, which probably should be mapped to sub-groups?
817 raise NotImplementedError(
818 "fill_value is not yet supported for DataTree objects in merge"
819 )
820
821 node_lists: defaultdict[str, list[DataTree]] = defaultdict(list)
822 for tree in trees:
823 for key, node in tree.subtree_with_keys:
824 node_lists[key].append(node)
825
826 root_datasets = [node.dataset for node in node_lists.pop(".")]
827 with add_path_context_to_errors("."):
828 root_ds = merge(
829 root_datasets, compat=compat, join=join, combine_attrs=combine_attrs
830 )
831 result = DataTree(dataset=root_ds)
832
833 def level(kv):
834 # all trees with the same path have the same level
835 _, trees = kv
836 return trees[0].level
837
838 for key, nodes in sorted(node_lists.items(), key=level):
839 # Merge datasets, including inherited indexes to ensure alignment.
840 datasets = [node.dataset for node in nodes]
841 with add_path_context_to_errors(key):
842 merge_result = merge_core(
843 datasets,
844 compat=compat,
845 join=join,
846 combine_attrs=combine_attrs,
847 )
848 merged_ds = Dataset._construct_direct(**merge_result._asdict())
849 result[key] = DataTree(dataset=merged_ds)
850
851 return result
852
853
854@overload

Callers 1

mergeFunction · 0.85

Calls 6

DataTreeClass · 0.90
mergeFunction · 0.85
merge_coreFunction · 0.85
itemsMethod · 0.80
_construct_directMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…