Source code for pycif.plugins.obsoperators.standard.ndarray_wrapper

import numpy as np
from ....utils.check.errclass import CifError


[docs] def forward(self, x: np.ndarray, reload_results=False) -> np.ndarray: self._step += 1 self.controlvect.x = x obsvect = self.obsoper( self.controlvect, self.obsvect, "fwd", datei=self.datei, datef=self.datef, workdir=self.workdir, reload_results=reload_results, run_id=self._step, ) self.obsvect = obsvect return np.asarray(obsvect.ysim, dtype=np.float64)
[docs] def tangent_linear(self, x: np.ndarray, reload_results=False) -> np.ndarray: self._step += 1 self.controlvect.x = x obsvect = self.obsoper( self.controlvect, self.obsvect, "tl", datei=self.datei, datef=self.datef, workdir=self.workdir, reload_results=reload_results, run_id=self._step, ) self.obsvect = obsvect return np.asarray(obsvect.dy, dtype=np.float64)
[docs] def adjoint(self, _x: np.ndarray, dy: np.ndarray, reload_results=False) -> np.ndarray: if not self.ref_fwd_dir: raise CifError( "CIFObsOperator.adjoint() called before forward(). " "Run forward() at least once first." ) obsvect = self.obsvect obsvect.dy = dy result_cv = self.obsoper( self.controlvect, obsvect, "adj", datei=self.datei, datef=self.datef, workdir=self.workdir, reload_results=reload_results, run_id=self._step, # same id as the paired forward ) return np.asarray(result_cv.dx, dtype=np.float64)