def covariance(self,p1,p2,epsilon=1.0e-5): h2 = sqdistance(p1,p2,self.get_default_rotmat()) ret = np.zeros_like(h2) for st in self.structures: covariance = st.covariance(p1,p2) ret += covariance if isinstance(h2, np.ndarray): idx = np.where(h2 < epsilon)[0] if len(idx) > 0: ret[idx] = self.max_covariance() return ret else: if h2 < epsilon: return self.max_covariance() return ret
def covariance(self,p1,p2): h2 = sqdistance(p1,p2,self._rotmat) h = np.sqrt(h2) #print('covariance',p1,p2,h2,h) return self._function(h,self.sill,self._range)