satpy.dependency_tree module
Implementation of a dependency tree.
- class satpy.dependency_tree.DependencyTree(readers, compositors=None, modifiers=None, available_only=False)[source]
Bases:
Tree
Structure to discover and store Dataset dependencies.
Used primarily by the Scene object to organize dependency finding. Dependencies are stored used a series of Node objects which this class is a subclass of.
Collect Dataset generating information.
Collect the objects that generate and have information about Datasets including objects that may depend on certain Datasets being generated. This includes readers, compositors, and modifiers.
Composites and modifiers are defined per-sensor. If multiple sensors are available, compositors and modifiers are searched for in sensor alphabetical order.
- Parameters:
readers (dict) – Reader name -> Reader Object
compositors (dict) – Sensor name -> Composite ID -> Composite Object. Empty dictionary by default.
modifiers (dict) – Sensor name -> Modifier name -> (Modifier Class, modifier options). Empty dictionary by default.
available_only (bool) – Whether only reader’s available/loadable datasets should be used when searching for dependencies (True) or use all known/configured datasets regardless of whether the necessary files were provided to the reader (False). Note that when
False
loadable variations of a dataset will have priority over other known variations. Default isFalse
.
- _create_optional_subtrees(parent, prereqs, query=None)[source]
Determine optional prerequisite Nodes for a composite.
- Parameters:
parent (Node) – Compositor node to add these prerequisites under
prereqs (sequence) – Strings (names), floats (wavelengths), or DataQuerys to analyze.
- _create_prerequisite_subtrees(parent, prereqs, query=None)[source]
Determine prerequisite Nodes for a composite.
- Parameters:
parent (Node) – Compositor node to add these prerequisites under
prereqs (sequence) – Strings (names), floats (wavelengths), DataQuerys or Nodes to analyze.
- _create_required_subtrees(parent, prereqs, query=None)[source]
Determine required prerequisite Nodes for a composite.
- Parameters:
parent (Node) – Compositor node to add these prerequisites under
prereqs (sequence) – Strings (names), floats (wavelengths), DataQuerys or Nodes to analyze.
- _get_unique_matching_id(matching_ids, dataset_key, query)[source]
Get unique matching id from matching_ids, for a given dataset_key and some optional query.
- _promote_query_to_modified_dataid(query, dep_key)[source]
Promote a query to an id based on the dataset it will modify (dep).
Typical use case is requesting a modified dataset (query). This modified dataset most likely depends on a less-modified dataset (dep_key). The less-modified dataset must come from a reader (at least for now) or will eventually depend on a reader dataset. The original request key may be limited like (wavelength=0.67, modifiers=(‘a’, ‘b’)) while the reader-based key should have all of its properties specified. This method updates the original request key so it is fully specified and should reduce the chance of Node’s not being unique.
- copy()[source]
Copy this node tree.
Note all references to readers are removed. This is meant to avoid tree copies accessing readers that would return incompatible (Area) data. Theoretically it should be possible for tree copies to request compositor or modifier information as long as they don’t depend on any datasets not already existing in the dependency tree.
- class satpy.dependency_tree.Tree[source]
Bases:
object
A tree implementation.
Set up the tree.
- empty_node = <Node ('__EMPTY_LEAF_SENTINEL__')>
- leaves(limit_nodes_to: Iterable[DataID] | None = None, unique: bool = True) list[satpy.node.Node] [source]
Get the leaves of the tree starting at the root.
- Parameters:
limit_nodes_to – Limit leaves to Nodes with the names (DataIDs) specified.
unique – Only include individual leaf nodes once.
- Returns:
list of leaf nodes
- trunk(limit_nodes_to: Iterable[DataID] | None = None, unique: bool = True, limit_children_to: Container[DataID] | None = None) list[satpy.node.Node] [source]
Get the trunk nodes of the tree starting at this root.
- Parameters:
limit_nodes_to – Limit searching to trunk nodes with the names (DataIDs) specified and the children of these nodes.
unique – Only include individual trunk nodes once
limit_children_to – Limit searching to the children with the specified names. These child nodes will be included in the result, but not their children.
- Returns:
list of trunk nodes
- class satpy.dependency_tree._DataIDContainer[source]
Bases:
dict
Special dictionary object that can handle dict operations based on dataset name, wavelength, or DataID.
Note: Internal dictionary keys are DataID objects.