def _setup( self, test_ndim, spdmat1, spdmat2, forw_impl_string_linear_gauss, backw_impl_string_linear_gauss, ): self.G_const = spdmat1 self.v_const = np.arange(test_ndim) self.L_const = spdmat2 self.transition = pnss.LTISDE( self.G_const, self.v_const, self.L_const, forward_implementation=forw_impl_string_linear_gauss, backward_implementation=backw_impl_string_linear_gauss, ) self.G = lambda t: spdmat1 self.v = lambda t: np.arange(test_ndim) self.L = lambda t: spdmat2 self.g = lambda t, x: self.G(t) @ x + self.v(t) self.dg = lambda t, x: self.G(t)
def ornstein_uhlenbeck(): # Below is for consistency with pytest & unittest. # Without a seed, unittest passes but pytest fails. # I tried multiple seeds, they all work equally well. np.random.seed(12345) delta_t = 0.2 lam, q, r = 0.21, 0.5, 0.1 drift = -lam * np.eye(1) force = np.zeros(1) disp = np.sqrt(q) * np.eye(1) dynmod = pnss.LTISDE( driftmat=drift, forcevec=force, dispmat=disp, ) measmod = pnss.DiscreteLTIGaussian( state_trans_mat=np.eye(1), shift_vec=np.zeros(1), proc_noise_cov_mat=r * np.eye(1), ) initrv = Normal(10 * np.ones(1), np.eye(1)) return dynmod, measmod, initrv, {"dt": delta_t, "tmax": 20}
def ltisde(G_const, v_const, L_const): return pnss.LTISDE(G_const, v_const, L_const)
def both_transitions_ibm(): ibm = pnss.IBM(ordint=2, spatialdim=1) ibm2 = pnss.IBM(ordint=2, spatialdim=1) ibm_as_ltisde = pnss.LTISDE(ibm2.driftmat, ibm2.forcevec, ibm2.dispmat) return ibm, ibm_as_ltisde
def both_transitions_ioup(): ioup = pnss.IOUP(ordint=2, spatialdim=2, driftspeed=2.041) ioup2 = pnss.IOUP(ordint=2, spatialdim=2, driftspeed=2.041) ioup_as_ltisde = pnss.LTISDE(ioup2.driftmat, ioup2.forcevec, ioup2.dispmat) return ioup, ioup_as_ltisde
def both_transitions_matern(): matern = pnss.Matern(ordint=2, spatialdim=2, lengthscale=2.041) matern2 = pnss.Matern(ordint=2, spatialdim=2, lengthscale=2.041) matern_as_ltisde = pnss.LTISDE(matern2.driftmat, matern2.forcevec, matern2.dispmat) return matern, matern_as_ltisde