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

Method find_matching_indexes

xarray/structure/alignment.py:289–327  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

287 return collected_indexes, collected_index_vars
288
289 def find_matching_indexes(self) -> None:
290 all_indexes: dict[MatchingIndexKey, list[Index]]
291 all_index_vars: dict[MatchingIndexKey, list[dict[Hashable, Variable]]]
292 all_indexes_dim_sizes: dict[MatchingIndexKey, dict[Hashable, set]]
293 objects_matching_indexes: list[dict[MatchingIndexKey, Index]]
294 objects_matching_index_vars: list[
295 dict[MatchingIndexKey, dict[Hashable, Variable]]
296 ]
297
298 all_indexes = defaultdict(list)
299 all_index_vars = defaultdict(list)
300 all_indexes_dim_sizes = defaultdict(lambda: defaultdict(set))
301 objects_matching_indexes = []
302 objects_matching_index_vars = []
303
304 for obj in self.objects:
305 obj_indexes, obj_index_vars = self._collect_indexes(obj.xindexes)
306 objects_matching_indexes.append(obj_indexes)
307 objects_matching_index_vars.append(obj_index_vars)
308 for key, idx in obj_indexes.items():
309 all_indexes[key].append(idx)
310 for key, index_vars in obj_index_vars.items():
311 all_index_vars[key].append(index_vars)
312 for dim, size in calculate_dimensions(index_vars).items():
313 all_indexes_dim_sizes[key][dim].add(size)
314
315 self.objects_matching_indexes = tuple(objects_matching_indexes)
316 self.objects_matching_index_vars = tuple(objects_matching_index_vars)
317 self.all_indexes = all_indexes
318 self.all_index_vars = all_index_vars
319
320 if self.join == "override":
321 for dim_sizes in all_indexes_dim_sizes.values():
322 for dim, sizes in dim_sizes.items():
323 if len(sizes) > 1:
324 raise AlignmentError(
325 "cannot align objects with join='override' with matching indexes "
326 f"along dimension {dim!r} that don't have the same size"
327 )
328
329 def find_matching_unindexed_dims(self) -> None:
330 unindexed_dim_sizes = defaultdict(set)

Callers 1

alignMethod · 0.95

Calls 6

_collect_indexesMethod · 0.95
calculate_dimensionsFunction · 0.90
AlignmentErrorClass · 0.85
itemsMethod · 0.80
addMethod · 0.45
valuesMethod · 0.45

Tested by

no test coverage detected