BasisMulti#

class BasisMulti(bases, full_variable_sizes=None)[source]#

Join bases together for states with multiple variables.

This class is for states that can be written (after discretization) as

\[\begin{split}\q = \left[\begin{array}{c} \q_0 \\ \q_1 \\ \vdots \\ \q_{n_q - 1} \end{array}\right] \in \RR^n,\end{split}\]

where each \(\q_i \in \RR^{n_i}\) represents a single discretized state variable, to be compressed (individually) to \(r_i\) degrees of freedom. The compressed state is therefore

\[\begin{split}\qhat = \left[\begin{array}{c} \qhat_0 \\ \qhat_1 \\ \vdots \\ \qhat_{n_q - 1} \end{array}\right] \in \RR^r,\end{split}\]

where each \(\qhat_i \in \RR^{r_i}\) is the compressed version of the state variable \(\q_i \in \RR^{n_i}\). The full state dimension is \(n = \sum_{i=0}^{n_q - 1} n_i\), i.e., full_state_dimension = sum(full_variable_sizes); the reduced state dimension is \(r = \sum_{i=0}^{n_q - 1}r_i\), i.e., reduced_state_dimension = sum(reduced_variable_sizes).

Parameters
baseslist

Initialized (but not necessarily trained) basis objects, one for each state variable.

full_variable_sizeslist or None

Dimensions for each state variable, \(n_0,\ldots,n_{n_q-1}\). If None (default), set \(n_i\) to bases[i].full_state_dimension; if any of these are None, assume all state variables have the same dimension, i.e., \(n_0 = n_1 = \cdots = n_x \in \NN\) with \(n_x\) to be determined in fit(). In this case, \(n = n_q n_x\).

Properties

bases

Bases for each state variable.

full_state_dimension

Total dimension \(n = \sum_{i=0}^{n_q-1} n_i \in \NN\) of the joint full state.

full_variable_sizes

Dimensions of each state variable, \(n_0, \ldots, n_{n_q - 1} \in \NN\).

num_variables

Number of state variables \(n_q \in \NN\).

reduced_state_dimension

Total dimension \(r = \sum_{i=0}^{n_q - 1}r_i \in \NN\) of the joint reduced state.

reduced_variable_sizes

Dimensions of each compressed state variable, \(r_0, \ldots, r_{n_q - 1} \in \NN\).

shape

Dimensions \((n, r)\) of the basis.

variable_names

Names for each state variable.

Methods

compress

Map high-dimensional states to low-dimensional latent coordinates.

decompress

Map low-dimensional latent coordinates to high-dimensional states.

fit

Construct the joint basis by calling fit() on the basis for each variable.

get_var

Extract a single variable from the joint full or reduced state.

load

Load a previously saved transformer from an HDF5 file.

project

Project a high-dimensional state vector to the subset of the high-dimensional space that can be represented by the basis.

projection_error

Compute the error of the basis representation of a state or states.

save

Save the transformer to an HDF5 file.

split

Split a full or reduced state vector into the individual variables.

verify

Verify that compress() and decompress() are consistent in the sense that the range of decompress() is in the domain of compress() and that project() defines a projection operator, i.e., project(project(Q)) = project(Q).