CodeEntropy.levels.nodes.accumulators module

Initialize covariance accumulators.

This module defines a LevelDAG static node that allocates all per-frame reduction accumulators (means) and counters used by downstream frame processing.

The node owns only initialization concerns (single responsibility): - create group-id <-> index mappings - allocate force/torque covariance mean containers - allocate optional combined force-torque (FT) mean containers - allocate per-level frame counters

The structure created here is treated as the canonical storage layout for the rest of the pipeline.

class CodeEntropy.levels.nodes.accumulators.CovarianceAccumulators(force_covariances: dict[str, Any], torque_covariances: dict[str, Any], frame_counts: dict[str, Any], forcetorque_covariances: dict[str, Any], forcetorque_counts: dict[str, Any])[source]

Bases: object

Container for covariance mean accumulators and frame counters.

force_covariances: dict[str, Any]
forcetorque_counts: dict[str, Any]
forcetorque_covariances: dict[str, Any]
frame_counts: dict[str, Any]
torque_covariances: dict[str, Any]
class CodeEntropy.levels.nodes.accumulators.GroupIndex(group_id_to_index: dict[int, int], index_to_group_id: list[int])[source]

Bases: object

Bidirectional mapping between group ids and contiguous indices.

group_id_to_index: dict[int, int]
index_to_group_id: list[int]
class CodeEntropy.levels.nodes.accumulators.InitCovarianceAccumulatorsNode[source]

Bases: object

Allocate accumulators and counters for per-frame reductions.

Produces the following keys in shared_data:

Canonical mean accumulators:
  • force_covariances: {“ua”: dict, “res”: list, “poly”: list}

  • torque_covariances: {“ua”: dict, “res”: list, “poly”: list}

  • forcetorque_covariances: {“res”: list, “poly”: list} (6N x 6N means)

Counters:
  • frame_counts: {“ua”: dict, “res”: np.ndarray[int], “poly”: np.ndarray[int]}

  • forcetorque_counts: {“res”: np.ndarray[int], “poly”: np.ndarray[int]}

Group index mapping:
  • group_id_to_index: {group_id: index}

  • index_to_group_id: [group_id_by_index]

Backwards-compatible aliases (kept for older consumers):
  • force_torque_stats -> forcetorque_covariances

  • force_torque_counts -> forcetorque_counts

run(shared_data: dict[str, Any]) dict[str, Any][source]

Initialize and attach all accumulator structures into shared_data.

Parameters:

shared_data – Shared pipeline dictionary. Must contain “groups”.

Returns:

A dict of keys written into shared_data.

Raises:

KeyError – If “groups” is missing from shared_data.