MCPcopy Create free account
hub / github.com/dask/dask / _cull_dependencies

Method _cull_dependencies

dask/blockwise.py:657–711  ·  view source on GitHub ↗

Determine the necessary dependencies to produce `output_blocks`. This method does not require graph materialization.

(self, output_blocks)

Source from the content-addressed store, hash-verified

655 return hasattr(self, "_cached_dict")
656
657 def _cull_dependencies(self, output_blocks):
658 """Determine the necessary dependencies to produce `output_blocks`.
659
660 This method does not require graph materialization.
661 """
662
663 # Check `concatenate` option
664 concatenate = None
665 if self.concatenate is True:
666 from dask.array.core import concatenate_axes as concatenate
667
668 # Generate coordinate map
669 coord_maps, concat_axes, dummies = _get_coord_mapping(
670 self.dims,
671 self.output_indices,
672 self.numblocks,
673 self.indices,
674 concatenate,
675 )
676
677 # Gather constant dependencies (for all output keys)
678 const_deps = set()
679 for arg, _ in self.indices:
680 if isinstance(arg, TaskRef):
681 const_deps.add(arg.key)
682
683 # Get dependencies for each output block
684 key_deps = {}
685 for out_coords in output_blocks:
686 deps = set()
687 coords = out_coords + dummies
688 for cmap, axes, (arg, ind) in zip(coord_maps, concat_axes, self.indices):
689 if ind is not None and arg not in self.io_deps:
690 arg_coords = tuple(coords[c] for c in cmap)
691 if axes:
692 tups = _lol_product((arg,), arg_coords)
693 deps.update(flatten(tups))
694 if concatenate:
695 tups = (concatenate, tups, axes)
696 else:
697 tups = (arg,) + arg_coords
698 deps.add(tups)
699 key_deps[(self.output,) + out_coords] = deps | const_deps
700
701 # Add valid-key dependencies from io_deps
702 for key, io_dep in self.io_deps.items():
703 if io_dep.produces_keys:
704 for out_coords in output_blocks:
705 key = (self.output,) + out_coords
706 valid_key_dep = io_dep[out_coords]
707 if isinstance(valid_key_dep, TaskRef):
708 valid_key_dep = valid_key_dep.key
709 key_deps[key] |= {valid_key_dep}
710
711 return key_deps
712
713 def _cull(self, output_blocks):
714 return Blockwise(

Callers 1

cullMethod · 0.95

Calls 6

flattenFunction · 0.90
_get_coord_mappingFunction · 0.85
setClass · 0.85
_lol_productFunction · 0.85
addMethod · 0.45
itemsMethod · 0.45

Tested by

no test coverage detected