Exploiting Spatial Symmetries
Some systems have symmetries that apply to their spatial dimensions. For example, the cubic Barkley model has equations:
The only spatial coupling component is the Laplacian operator, \nabla^2. This means that the equations of the Barkley model have rotational symmetry with respect to space.
In principle one should be able to take advantage of these symmetries to reduce the embedded space dimension.
Symmetries
We encode symmetries with the following types:
#
TimeseriesPrediction.Symmetry
— Type.
Symmetry
Supertype of all symmetries used in SymmetricEmbedding
. All symmetries are initialized like Symmetry(n1, n2, ...)
with ni
being the indices of the spatial dimensions that have the said symmetry.
Notice that the symmetries are defined with respect to the center point of the embedding.
#
TimeseriesPrediction.Reflection
— Type.
Reflection <: Symmetry
Reflection symmetry: x and -x are equivalent (for all given dimensions).
#
TimeseriesPrediction.Rotation
— Type.
Rotation <: Symmetry
Index sets at equal distance from the center point are equivalent, for the given input dimensions. E.g. for Rotation(1,3)
and given center point u[i,j,k,...]
all indices m, n
that satisfy
|i-m|^2 + |k-n|^2 = r^2
for a given r
, are equivalent. The same process generalizes to any number of input dimensions.
Symmetric Embedding
You can use the symmetries in the following embedding:
#
TimeseriesPrediction.SymmetricEmbedding
— Type.
SymmetricEmbedding(ste::SpatioTemporalEmbedding, sym::Tuple)
A SymmetricEmbedding
is intended as a means of dimension reduction for a SpatioTemporalEmbedding
by exploiting spatial symmetries in the system, listed as a Tuple
of <:Symmetry
(see Symmetry
) for all possible symmetries.
All points at a time step equivalent to each other according to the symmetries passed in sym
will be averaged to a single entry! For example, the symmetry Reflection(2)
means that the embedding won't have two entries u[i, j+1], u[i, j-1]
but instead a single entry (u[i, j+1] + u[i, j-1])/2
, with i,j
being indices relative to the central point of the embedding. (the same process is done for any index offset j+2, j+3
, etc., depending on how large the spatial radius r
is)
The resulting structure from SymmetricEmbedding
can be used for reconstructing datasets in the same way as a SpatioTemporalEmbedding
.