Module#
- class caskade.Module(name: str | None = None, **kwargs)[source]#
Bases:
Node,GetSetValuesNode to represent a simulation module in the graph.
The
Moduleobject is used to represent a simulation module in the graph. These are python objects that contain the calculations for a simulation, they also hold theParamobjects that are used in the calculations. TheModuleobject has additional functionality to manage theParamobjects below it in the graph, it keeps track of alldynamicParamobjects so that at runtime their values may be filled. TheModuleobject manages its links to other nodes through attributes of the class.Examples
Example of a nested pair of
Moduleobjects and how their@forwardmethods are called:class MySim(Module): def __init__(self, a, b=None): super().__init__() self.a = a self.b = Param("b", b) @forward def myfunc(self, x, b=None): return x * self.a.otherfun(x) + b class OtherSim(Module): def __init__(self, c=None): super().__init__() self.c = Param("c", c) @forward def otherfun(self, x, c = None): return x + c othersim = OtherSim() mysim = MySim(a=othersim) # b c params = [torch.tensor([1.0, 2.0]), torch.tensor([3.0, 4.0])] result = mysim.myfunc(3.0, params=params) # result is tensor([19.0, 23.0])
- property all_params#
All parameters below this module in the DAG.
- Returns:
Concatenation of static, dynamic, and pointer parameters.
- Return type:
tuple of Param
- clear_state()[source]#
Clear the active state _value for all params below this Module in the DAG. This should not be used by a user under normal circumstances.
- property dynamic: bool#
Return True if the module has dynamic parameters as direct children.
- Returns:
True if any direct children are dynamic parameters.
- Return type:
bool
- fill_kwargs(keys: tuple[str]) dict[str, ArrayLike][source]#
Fill the kwargs for an
@forwardmethod with the values of the dynamic parameters. The requested keys are matched to names ofParamobjects owned by theModule. This should not be used by the user under normal circumstances.
- fill_params(params: ArrayLike | Sequence | Mapping, dynamic=True)[source]#
Fill the dynamic/static parameters of the module with the input values from params.
- Parameters:
params ((Union[ArrayLike, Sequence, Mapping])) – The input values to fill the dynamic parameters with. The input can be an ArrayLike, a Sequence, or a Mapping.
dynamic (bool) – Operate on dynamic parameters (True, default) or static parameters (False).
- property node_str: str#
Returns a string representation of the node for graph visualization.
- param_order()[source]#
Return a human-readable string of dynamic parameter ordering.
Each line corresponds to a parameter group and lists the parameters in the format
parent_name: param_name.- Returns:
Multi-line string describing the dynamic parameter order.
- Return type:
str
- remove_memo(memo)[source]#
Remove a memo string and propagate removal to all children.
- Parameters:
memo (str) – The memo message to remove. The same propagation rules as
add_memoapply.
- property static: bool#
Return True if the module has no dynamic parameters as direct children.
- Returns:
True if none of the direct children are dynamic parameters.
- Return type:
bool
- to_dynamic(children_only=True)[source]#
Change all parameters to dynamic parameters.
- Parameters:
children_only ((bool, optional)) – If True, only convert the children of this module to dynamic. If False, convert all parameters in the graph below this module. Defaults to True.