## This code is written by Davide Albanese, <albanese@fbk.eu>
## (C) 2010 Fondazione Bruno Kessler - Via Santa Croce 77, 38100 Trento, ITALY.

## This program is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.

## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.

## You should have received a copy of the GNU General Public License
## along with this program.  If not, see <http://www.gnu.org/licenses/>.

__all__ = ["KernelLinear", "KernelGaussian", "KernelPolynomial"]

import kernel


class KernelLinear(object):
    """Linear Kernel"""
    def __init__(self):
        pass
    def matrix(self, x):
        return kernel.linear_matrix(x)
    def vector(self, a, x):
        return kernel.linear_vector(a, x)


class KernelGaussian(object):
    """Gaussian Kernel"""
    def __init__(self, sigma):
        self.sigma = sigma
    def matrix(self, x):
        return kernel.gaussian_matrix(x, self.sigma)
    def vector(self, a, x):
        return kernel.gaussian_vector(a, x, self.sigma)
    

class KernelPolynomial(object):
    """Polynomial Kernel"""
    def __init__(self, d):
        self.d = d
    def matrix(self, x):
        return kernel.polynomial_matrix(x, self.d)
    def vector(self, a, x):
        return kernel.polynomial_vector(a, x, self.d)
