hpcflow.sdk.core.loop_cache.LoopCache#
- class hpcflow.sdk.core.loop_cache.LoopCache(element_dependents, elements, zeroth_iters, data_idx, iterations, task_iterations, run_meta, task_element_IDs, element_iteration_IDs, iteration_run_IDs, run_data_idx, run_pending, param_EAR_ID)#
Bases:
objectClass to store a cache for use in
Workflow.add_empty_loop()andWorkflowLoop.add_iterations(). Usebuild()to get a new instance.- Parameters:
element_dependents (dict[int, dict[int, DependentDescriptor]]) – Keys are element IDs, values are dicts whose keys are element IDs that depend on the key element ID (via Element.get_dependent_elements_recursively), and whose values are dicts with keys: group_names, which is a tuple of the string group names associated with the dependent element’s element set.
elements (dict[int, ElementDescriptor]) – Keys are element IDs, values are dicts with keys: input_statuses, input_sources, and task_insert_ID.
zeroth_iters (dict[int, tuple[int, DataIndex]]) – Keys are element IDs, values are data associated with the zeroth iteration of that element, namely a tuple of iteration ID and ElementIteration.data_idx.
data_idx (dict[int, dict[LoopIndex[str, int], DataIndex]]) – Keys are element IDs, values are data associated with all iterations of that element, namely a dict whose keys are the iteration loop index as a tuple, and whose values are data indices via ElementIteration.get_data_idx().
iterations (dict[int, tuple[int, int]]) – Keys are iteration IDs, values are tuples of element ID and iteration index within that element.
task_iterations (dict[int, list[int]]) – Keys are task insert IDs, values are list of all iteration IDs associated with that task.
run_meta (dict[int, tuple[int, int]]) – Keys are run IDs, values are tuples of the task insert ID and element ID of that run.
Methods
Update the cache to include a newly added iteration.
Build a cache of data for use in adding loops and iterations.
Retrieve a list of iteration IDs belonging to a given loop.
Retrieve the mapping from element to loop index for each given iteration.
Get the data index of the most recently added iteration of an element.
Set the loop indices for a named loop to the given list of iteration IDs.
Attributes
Keys are element IDs, values are dicts whose keys are element IDs that depend on the key element ID (via Element.get_dependent_elements_recursively), and whose values are dicts with keys: group_names, which is a tuple of the string group names associated with the dependent element's element set.
input_statuses, input_sources, and task_insert_ID.
Keys are element IDs, values are data associated with the zeroth iteration of that element, namely a tuple of iteration ID and ElementIteration.data_idx.
Keys are element IDs, values are data associated with all iterations of that element, namely a dict whose keys are the iteration loop index as a tuple, and whose values are data indices via ElementIteration.get_data_idx().
Keys are iteration IDs, values are tuples of element ID and iteration index within that element.
Keys are task insert IDs, values are list of all iteration IDs associated with that task.
Keys are run IDs, values are tuples of the task insert ID and element ID of that run.
Keys are task ID, values are element IDs.
Keys are element IDs, values are iteration IDs.
- add_iteration(iter_ID, task_insert_ID, element_ID, loop_idx, data_idx)#
Update the cache to include a newly added iteration.
- classmethod build(workflow, loops=None)#
Build a cache of data for use in adding loops and iterations.
- data_idx: dict[int, dict[LoopIndex[str, int], DataIndex]]#
Keys are element IDs, values are data associated with all iterations of that element, namely a dict whose keys are the iteration loop index as a tuple, and whose values are data indices via ElementIteration.get_data_idx().
- element_dependents: dict[int, dict[int, DependentDescriptor]]#
Keys are element IDs, values are dicts whose keys are element IDs that depend on the key element ID (via Element.get_dependent_elements_recursively), and whose values are dicts with keys: group_names, which is a tuple of the string group names associated with the dependent element’s element set.
- elements: dict[int, ElementDescriptor]#
input_statuses, input_sources, and task_insert_ID.
- Type:
Keys are element IDs, values are dicts with keys
- get_iter_IDs(loop)#
Retrieve a list of iteration IDs belonging to a given loop.
- get_iter_loop_indices(iter_IDs)#
Retrieve the mapping from element to loop index for each given iteration.
- get_latest_data_idx(element_ID)#
Get the data index of the most recently added iteration of an element.
- Parameters:
element_ID (int)
- Return type:
DataIndex
- iterations: dict[int, tuple[int, int]]#
Keys are iteration IDs, values are tuples of element ID and iteration index within that element.
- run_meta: dict[int, tuple[int, int]]#
Keys are run IDs, values are tuples of the task insert ID and element ID of that run. Only immutable data is stored here, because run objects retrieved at cache build time would hold stale parent elements/iterations once new iterations are added.
- task_iterations: dict[int, list[int]]#
Keys are task insert IDs, values are list of all iteration IDs associated with that task.
- update_loop_indices(new_loop_name, iter_IDs)#
Set the loop indices for a named loop to the given list of iteration IDs.