+pyerrors.covobs
+
+
+
+
+
+
+
+ View Source
+import numpy as np + + +class Covobs: + + def __init__(self, mean, cov, name, pos=None, grad=None): + """ Initialize Covobs object. + + Parameters + ---------- + mean : float + Mean value of the new Obs + cov : list or array + 2d Covariance matrix or 1d diagonal entries + name : str + identifier for the covariance matrix + pos : int + Position of the variance belonging to mean in cov. + Is taken to be 1 if cov is 0-dimensional + grad : list or array + Gradient of the Covobs wrt. the means belonging to cov. + """ + self.cov = np.array(cov) + if self.cov.ndim == 0: + self.N = 1 + elif self.cov.ndim == 1: + self.N = len(self.cov) + self.cov = np.diag(self.cov) + elif self.cov.ndim == 2: + self.N = self.cov.shape[0] + if self.cov.shape[1] != self.N: + raise Exception('Covariance matrix has to be a square matrix!') + else: + raise Exception('Covariance matrix has to be a 2 dimensional square matrix!') + self.name = name + if grad is None: + if pos is None: + if self.N == 1: + pos = 0 + else: + raise Exception('Have to specify position of cov-element belonging to mean!') + else: + if pos > self.N: + raise Exception('pos %d too large for covariance matrix with dimension %dx%d!' % (pos, self.N, self.N)) + self.grad = np.zeros((self.N, 1)) + self.grad[pos] = 1. + else: + self.grad = np.array(grad) + self.value = mean + + def errsq(self): + """ Return the variance (= square of the error) of the Covobs + """ + return float(np.dot(np.transpose(self.grad), np.dot(self.cov, self.grad))) +
+
+
+
+
+
+
+ View Source
+class Covobs: + + def __init__(self, mean, cov, name, pos=None, grad=None): + """ Initialize Covobs object. + + Parameters + ---------- + mean : float + Mean value of the new Obs + cov : list or array + 2d Covariance matrix or 1d diagonal entries + name : str + identifier for the covariance matrix + pos : int + Position of the variance belonging to mean in cov. + Is taken to be 1 if cov is 0-dimensional + grad : list or array + Gradient of the Covobs wrt. the means belonging to cov. + """ + self.cov = np.array(cov) + if self.cov.ndim == 0: + self.N = 1 + elif self.cov.ndim == 1: + self.N = len(self.cov) + self.cov = np.diag(self.cov) + elif self.cov.ndim == 2: + self.N = self.cov.shape[0] + if self.cov.shape[1] != self.N: + raise Exception('Covariance matrix has to be a square matrix!') + else: + raise Exception('Covariance matrix has to be a 2 dimensional square matrix!') + self.name = name + if grad is None: + if pos is None: + if self.N == 1: + pos = 0 + else: + raise Exception('Have to specify position of cov-element belonging to mean!') + else: + if pos > self.N: + raise Exception('pos %d too large for covariance matrix with dimension %dx%d!' % (pos, self.N, self.N)) + self.grad = np.zeros((self.N, 1)) + self.grad[pos] = 1. + else: + self.grad = np.array(grad) + self.value = mean + + def errsq(self): + """ Return the variance (= square of the error) of the Covobs + """ + return float(np.dot(np.transpose(self.grad), np.dot(self.cov, self.grad))) +
+
+
+
+
+
+
+
+
+
+
+
+ View Source
+def __init__(self, mean, cov, name, pos=None, grad=None): + """ Initialize Covobs object. + + Parameters + ---------- + mean : float + Mean value of the new Obs + cov : list or array + 2d Covariance matrix or 1d diagonal entries + name : str + identifier for the covariance matrix + pos : int + Position of the variance belonging to mean in cov. + Is taken to be 1 if cov is 0-dimensional + grad : list or array + Gradient of the Covobs wrt. the means belonging to cov. + """ + self.cov = np.array(cov) + if self.cov.ndim == 0: + self.N = 1 + elif self.cov.ndim == 1: + self.N = len(self.cov) + self.cov = np.diag(self.cov) + elif self.cov.ndim == 2: + self.N = self.cov.shape[0] + if self.cov.shape[1] != self.N: + raise Exception('Covariance matrix has to be a square matrix!') + else: + raise Exception('Covariance matrix has to be a 2 dimensional square matrix!') + self.name = name + if grad is None: + if pos is None: + if self.N == 1: + pos = 0 + else: + raise Exception('Have to specify position of cov-element belonging to mean!') + else: + if pos > self.N: + raise Exception('pos %d too large for covariance matrix with dimension %dx%d!' % (pos, self.N, self.N)) + self.grad = np.zeros((self.N, 1)) + self.grad[pos] = 1. + else: + self.grad = np.array(grad) + self.value = mean +
Initialize Covobs object.
+ +Parameters
+ +-
+
- mean (float): +Mean value of the new Obs +
- cov (list or array): +2d Covariance matrix or 1d diagonal entries +
- name (str): +identifier for the covariance matrix +
- pos (int): +Position of the variance belonging to mean in cov. +Is taken to be 1 if cov is 0-dimensional +
- grad (list or array): +Gradient of the Covobs wrt. the means belonging to cov. +
+
+
+
+
+
+
+
+
+
+
+
+ View Source
+def errsq(self): + """ Return the variance (= square of the error) of the Covobs + """ + return float(np.dot(np.transpose(self.grad), np.dot(self.cov, self.grad))) +
Return the variance (= square of the error) of the Covobs
+