Temporal definitions

<< Click to Display Table of Contents >>

Navigation:  Using SMILE Wrappers > Dynamic Bayesian networks >

Temporal definitions

Consider node P2 from the previous example. It has four incoming arcs in total:

a normal arc from a Contemporal node

a normal arc from P1

two temporal arcs from P1 with temporal orders 1 and 2

However, in the unrolled network, the slice for t=0 shows P2 with only two incoming arcs, because there are no slices representing timepoints before t=0. In the slice for t=1, P2 has three incoming arcs, as it is now possible to link P1 at t=0 with P2 at t=1. Starting with the slice for t=2, P2 has all four incoming arcs.

This behavior means that P2 requires separate CPTs for t=0, t=1, and t>=2. In general, if a plate node has an incoming arc of order x, it will require x+1 separate temporal definitions. To access or modify these definitions, use Network.get_node_temporal_definition and Network.set_node_temporal_definition.

All parents contributing to a temporal definition with a specified order can be retrieved using Network.get_unrolled_parents. Note that Network.get_temporal_parents, called with the same temporal order, returns only a subset of these parents. This distinction arises because unrolling creates additional arcs: in the unrolled network, P2 has four incoming arcs for slices t>=2, but only two of these correspond to arcs with temporal order 2.

The following methods of the Network class allow you to retrieve and modify temporal definitions for plate nodes, and to inspect the parents that contribute to these definitions in the unrolled network.

Python

get_node_temporal_definition(node: int | str, order: int) -> List[float]

set_node_temporal_definition(node: int | str, order: int, definition: List[float]) -> None

get_noisy_temporal_parent_strengths(node: int | str, order: int) -> List[List[int]]

set_noisy_temporal_parent_strengths(node: int | str, order: int, strengths: List[List[int]]) -> None

get_node_temporal_equations(node: int | str) -> List[str]

set_node_temporal_equations(node: int | str, equations: List[str]) -> None

get_unrolled_parents(node: int | str, order: int) -> List[TemporalInfo]

get_unrolled_parents(node: int | str) -> List[TemporalInfo]

Java

double[] getNodeTemporalDefinition(int nodeHandle, int order);

double[] getNodeTemporalDefinition(String nodeId, int order);

void setNodeTemporalDefinition(int nodeHandle, int order, double[] definition);

void setNodeTemporalDefinition(String nodeId, int order, double[] definition);

int[][] getNoisyTemporalParentStrengths(int nodeHandle, int order);

int[][] getNoisyTemporalParentStrengths(String nodeId, int order);

void setNoisyTemporalParentStrengths(int nodeHandle, int order, int[][] strengths);

void setNoisyTemporalParentStrengths(String nodeId, int order, int[][] strengths);

String[] getNodeTemporalEquations(int nodeHandle);

String[] getNodeTemporalEquations(String nodeId);

void setNodeTemporalEquations(int nodeHandle, String[] equations);

void setNodeTemporalEquations(String nodeId, String[] equations);

TemporalInfo[] getUnrolledParents(int nodeHandle, int order);

TemporalInfo[] getUnrolledParents(String nodeHandle, int order);

TemporalInfo[] getUnrolledParents(int nodeHandle);

TemporalInfo[] getUnrolledParents(String nodeHandle);

C#

double[] GetNodeTemporalDefinition(int nodeHandle, int order);

double[] GetNodeTemporalDefinition(string nodeId, int order);

void SetNodeTemporalDefinition(int nodeHandle, int order, double[] definition);

void SetNodeTemporalDefinition(string nodeId, int order, double[] definition);

int[][] GetNoisyTemporalParentStrengths(int nodeHandle, int order);

int[][] GetNoisyTemporalParentStrengths(string nodeId, int order);

void SetNoisyTemporalParentStrengths(int nodeHandle, int order, int[][] strengths);

void SetNoisyTemporalParentStrengths(string nodeId, int order, int[][] strengths);

string[] GetNodeTemporalEquations(int nodeHandle);

string[] GetNodeTemporalEquations(string nodeId);

void SetNodeTemporalEquations(int nodeHandle, string[] equations);

void SetNodeTemporalEquations(string nodeId, string[] equations);

TemporalInfo[] GetUnrolledParents(int nodeHandle, int order);

TemporalInfo[] GetUnrolledParents(string nodeId, int order);

TemporalInfo[] GetUnrolledParents(int nodeHandle);

TemporalInfo[] GetUnrolledParents(string nodeId);

R

temporal_definition <- getNodeTemporalDefinition(nodeIdOrHandle, order)

setNodeTemporalDefinition(nodeIdOrHandle, order, definition)

noisy_parent_strengths <- getNoisyTemporalParentStrengths(nodeIdOrHandle, order)

setNoisyTemporalParentStrengths(nodeIdOrHandle, order, strengths)

temporalEquations <- getNodeTemporalEquations(nodeIdOrHandle)

setNodeTemporalEquations(nodeIdOrHandle, equations)
unrolledParents <- getUnrolledParents(nodeIdOrHandle, order)

unrolledParents <- getUnrolledParents(nodeIdOrHandle)