Delays
rex.base.DelayDistribution
¤
A delay distribution data structure.
reset(rng: jax.Array) -> DelayDistribution
¤
Reset the distribution (e.g. random number generator).
Parameters:
-
rng
(Array
) –random number generator
Returns:
-
DelayDistribution
(DelayDistribution
) –the reset distribution
sample(shape: Union[int, Tuple] = None) -> Tuple[DelayDistribution, jax.Array]
¤
Sample from the distribution.
Parameters:
-
shape
(Union[int, Tuple]
, default:None
) –the shape of the sample
Returns:
-
Tuple[DelayDistribution, Array]
–The new distribution and the sample
quantile(q: float) -> float
¤
Compute the quantile of the distribution.
Parameters:
-
q
(float
) –the quantile value
Returns:
-
float
–The quantile value
mean() -> float
¤
Compute the mean of the distribution.
Returns:
-
float
–The mean value
pdf(x: float) -> float
¤
Compute the probability density function of the distribution.
Parameters:
-
x
(float
) –the value at which to compute the pdf
Returns:
-
float
–The pdf value
rex.base.StaticDist
¤
Bases: DelayDistribution
A wrapper around distrax distributions to make them compatible with the DelayDistribution interface.
Attributes:
-
rng
(Array
) –the random number generator
-
dist
(Distribution
) –the (static) distrax distribution (e.g. Normal, MixtureSameFamily, etc.)
create(dist: distrax.Distribution) -> StaticDist
classmethod
¤
Create a static distribution.
Parameters:
-
dist
(Distribution
) –the distrax distribution
Returns:
-
StaticDist
–The static distribution
reset(rng: jax.Array) -> StaticDist
¤
Reset the random number generator.
Parameters:
-
rng
(Array
) –random number generator
Returns:
-
DelayDistribution
(StaticDist
) –the reset distribution
sample(shape: Union[int, Tuple] = None) -> Tuple[StaticDist, jax.Array]
¤
Sample from the distribution.
Parameters:
-
shape
(Union[int, Tuple]
, default:None
) –the shape of the sample
Returns:
-
Tuple[StaticDist, Array]
–The new distribution and the sample
quantile(q: float) -> Union[float, jax.typing.ArrayLike]
¤
Compute the quantile of the distribution.
Parameters:
-
q
(float
) –the quantile value
Returns:
-
Union[float, ArrayLike]
–The quantile value
mean() -> float
¤
Compute the mean of the distribution.
Returns:
-
float
–The mean value
pdf(x: float) -> float
¤
Compute the probability density function of the distribution.
Parameters:
-
x
(float
) –the value at which to compute the pdf
Returns:
-
float
–The pdf value
rex.base.TrainableDist
¤
Bases: DelayDistribution
Attributes:
-
alpha
(Union[float, ArrayLike]
) –the value between [0, 1]
-
min
(Union[float, ArrayLike]
) –the minimum expected delay
-
max
(Union[float, ArrayLike]
) –the maximum expected delay
-
interp
(str
) –the interpolation method ("zoh", "linear", "linear_real_only"). "zoh": zero-order hold interpolation between received messages. "linear": linear interpolation between received messages. "linear_real_only": Only start interpolating between received messages.
create(delay: Union[float, jax.typing.ArrayLike], min: Union[float, jax.typing.ArrayLike], max: Union[float, jax.typing.ArrayLike], interp: str = 'zoh') -> TrainableDist
classmethod
¤
Creates a trainable distribution. Converts the delay to alpha, which is the value between [0, 1].
Parameters:
-
delay
(Union[float, ArrayLike]
) –the desired delay
-
min
(Union[float, ArrayLike]
) –the minimum expected delay
-
max
(Union[float, ArrayLike]
) –the maximum expected delay
-
interp
(str
, default:'zoh'
) –the interpolation method ("zoh", "linear", "linear_real_only").
Returns: The trainable distribution
reset(rng: jax.Array) -> TrainableDist
¤
Does nothing as the distribution is deterministic.
Parameters:
-
rng
(Array
) –random number generator
Returns:
-
DelayDistribution
(TrainableDist
) –the reset distribution
sample(shape: Union[int, Tuple] = None) -> Tuple[TrainableDist, jax.Array]
¤
Sample from the distribution.
Parameters:
-
shape
(Union[int, Tuple]
, default:None
) –the shape of the sample
Returns:
-
Tuple[TrainableDist, Array]
–The new distribution and the sample
quantile(q: float) -> float
¤
Compute the quantile of the distribution.
As the distribution is deterministic, the quantile is trivially calculated as the constant value of the distribution.
Parameters:
-
q
(float
) –the quantile value
Returns:
-
float
–The quantile value
mean() -> Union[float, jax.typing.ArrayLike]
¤
Compute the mean of the distribution.
Returns:
-
Union[float, ArrayLike]
–The mean value
pdf(x: float) -> Union[jax.Array, float]
¤
Compute the probability density function of the distribution.
Parameters:
-
x
(float
) –the value at which to compute the pdf
Returns:
-
Union[Array, float]
–The pdf value
equivalent(other: DelayDistribution) -> bool
¤
Check if two delay distributions are equivalent
Parameters:
-
other
(DelayDistribution
) –the other delay distribution
Returns:
-
bool
–True if the two delay distributions are equivalent, False otherwise
window(rate_out: Union[float, int]) -> int
¤
Compute the additional window size needed for the delay distribution.
Parameters:
-
rate_out
(Union[float, int]
) –the output rate of the connection
Returns:
-
int
–The additional window size needed for the delay distribution
apply_delay(rate_out: float, input: InputState, ts_start: Union[float, jax.typing.ArrayLike]) -> InputState
¤
Apply the delay to the input state.
The delay is determined by the delay distribution of the connection.
Parameters:
-
rate_out
(float
) –the output rate of the connection
-
input
(InputState
) –the input state
-
ts_start
(Union[float, ArrayLike]
) –the start time of the computation
Returns:
-
InputState
–The input state with the delay applied. This reduces the window size of the input by self.window(rate_out).
get_alpha(delay: Union[float, jax.typing.ArrayLike]) -> Union[float, jax.typing.ArrayLike]
¤
Get the alpha value of the delay distribution.
Parameters:
-
delay
(Union[float, ArrayLike]
) –the delay value
Returns:
-
Union[float, ArrayLike]
–The alpha value