Observation Operators

The methods in this module define observation operators mapping the state model to the observation space. In current experiments, the observation operator is hard-coded in the driver script with a statement

H_obs = alternating_obs_operator

defining the observation operator. The dimension of the observation and the nonlinear transform applied can be controlled with the parameters of DataAssimilationBenchmarks.ObsOperators.alternating_obs_operator.

Additional observation models are pending, following the convention where observation operators will be defined both for vector arguments and multi-arrays using mutliple dispatch with the conventions:

function H_obs(x::VecA(T), obs_dim::Int64, kwargs::StepKwargs) where T <: Real
function H_obs(x::ArView(T), obs_dim::Int64, kwargs::StepKwargs) where T <: Real

allowing for the same naming to be used for single states, time series of states, and ensembles of states.

Methods

DataAssimilationBenchmarks.ObsOperators.alternating_obs_operatorMethod
alternating_obs_operator(x::VecA(T), obs_dim::Int64, kwargs::StepKwargs) where T <: Real
alternating_obs_operator(ens::ArView(T), obs_dim::Int64,
                         kwargs::StepKwargs) where T <: Real

This produces observations of alternating state vector components for generating pseudo-data.

return obs

This operator takes a single model state x of type VecA, a truth twin time series or an ensemble of states of type ArView, and maps this data to the observation space via the method alternating_projector and (possibly) a nonlinear transform. The truth twin in this version is assumed to be 2D, where the first index corresponds to the state dimension and the second index corresponds to the time dimension. The ensemble is assumed to be 2D where the first index corresponds to the state dimension and the second index corresponds to the ensemble dimension. The γ parameter (optional) in kwargs of type StepKwargs controls the component-wise transformation of the remaining state vector components mapped to the observation space. For γ=1.0, there is no transformation applied, and the observation operator acts as a linear projection onto the remaining components of the state vector, equivalent to not specifying γ. For γ>1.0, the nonlinear observation operator of Asch et al. 2016, pg. 181 is applied,

\[\begin{align} \mathcal{H}(\pmb{x}) = \frac{\pmb{x}}{2}\circ\left[\pmb{1} + \left(\frac{\vert\pmb{x}\vert}{10} \right)^{\gamma - 1}\right] \end{align}\]

where $\circ$ is the Schur product, and which limits to the identity for γ=1.0. If γ=0.0, the quadratic observation operator of Hoteit et al. 2012,

\[\begin{align} \mathcal{H}(\pmb{x}) =0.05 \pmb{x} \circ \pmb{x} \end{align}\]

is applied to the remaining state components (note, this is not a continuous limit). If γ<0.0, the exponential observation operator of Wu et al. 2014

\[\begin{align} \mathcal{H}(\pmb{x}) = \pmb{x} \circ \exp\{- \gamma \pmb{x} \} \end{align}\]

is applied to the remaining state vector components, where the exponential is applied componentwise (note, this is also not a continuous limit).

DataAssimilationBenchmarks.ObsOperators.alternating_projectorMethod
alternating_projector(x::VecA(T), obs_dim::Int64) where T <: Real
alternating_projector(ens::ArView(T), obs_dim::Int64) where T <: Real

Utility method produces a projection of alternating vector or ensemble components via slicing.

return x
return ens

This operator takes a single model state x of type VecA, a truth twin time series or an ensemble of states of type ArView, and maps this data to alternating row components. If truth twin is 2D, then the first index corresponds to the state dimension and the second index corresponds to the time dimension. The ensemble is assumed to be 2D where the first index corresponds to the state dimension and the second index corresponds to the ensemble dimension.

The operator selects row components of the input to keep based on the obs_dim. States correpsonding to even state dimension indices are removed from the state vector until the observation dimension is appropriate. If the observation dimension is less than half the state dimension, states corresponding to odd state dimension idices are subsequently removed until the observation dimension is appropriate.