from .utils import (gaussian_kernel_local_sample_covariance, scaled_local_sample_covariance,
ball_kernel_local_sample_covariance, ring_kernel_local_sample_covariance)
[docs]
class BaseKernel(object):
[docs]
def global_covariance(self, data, coords):
raise NotImplementedError()
[docs]
def local_covariance(self, data, coords, segment):
raise NotImplementedError()
[docs]
class BallKernel(BaseKernel):
def __init__(self, radius):
self.radius = radius
[docs]
def global_covariance(self, data, coords):
return ball_kernel_local_sample_covariance(data, coords, self.radius)
[docs]
def local_covariance(self, data, coords, segment):
return ball_kernel_local_sample_covariance(data, coords, self.radius, segment)
[docs]
class ScaledBallKernel(BaseKernel):
def __init__(self, radius):
self.radius = radius
[docs]
def global_covariance(self, data, coords):
return scaled_local_sample_covariance(data, coords, self.radius)
[docs]
def local_covariance(self, data, coords, segment):
return scaled_local_sample_covariance(data, coords, self.radius, segment)
[docs]
class RingKernel(BaseKernel):
def __init__(self, inner_radius, outer_radius):
self.inner_radius = inner_radius
self.outer_radius = outer_radius
[docs]
def global_covariance(self, data, coords):
return ring_kernel_local_sample_covariance(data, coords, self.inner_radius, self.outer_radius)
[docs]
def local_covariance(self, data, coords, segment):
return ring_kernel_local_sample_covariance(data, coords, self.inner_radius, self.outer_radius, segment)
[docs]
class GaussianKernel(BaseKernel):
def __init__(self, radius):
self.radius = radius
[docs]
def global_covariance(self, data, coords):
return gaussian_kernel_local_sample_covariance(data, coords, self.radius)
[docs]
def local_covariance(self, data, coords, segment):
return gaussian_kernel_local_sample_covariance(data, coords, self.radius, segment=segment)