[licensing] replaced licensing with BSD, and erfcx

This commit is contained in:
Max Zwiessele 2015-09-07 17:26:27 +01:00
parent 1d5e46aa8e
commit c6d9ebf08d
8 changed files with 11 additions and 79 deletions

View file

@ -488,7 +488,7 @@ class Logistic(Transformation):
return instance() return instance()
newfunc = super(Transformation, cls).__new__ newfunc = super(Transformation, cls).__new__
if newfunc is object.__new__: if newfunc is object.__new__:
o = newfunc(cls) o = newfunc(cls)
else: else:
o = newfunc(cls, lower, upper, *args, **kwargs) o = newfunc(cls, lower, upper, *args, **kwargs)
cls._instances.append(weakref.ref(o)) cls._instances.append(weakref.ref(o))

View file

@ -1,5 +1,5 @@
# Copyright (c) 2014, James Hensman, Alex Matthews # Copyright (c) 2014, James Hensman, Alex Matthews
# Distributed under the terms of the GNU General public License, see LICENSE.txt # Licensed under the BSD 3-clause license (see LICENSE.txt)
import numpy as np import numpy as np
from ..util import choleskies from ..util import choleskies

View file

@ -1,5 +1,5 @@
# Copyright (c) 2014, James Hensman, Alan Saul # Copyright (c) 2014, James Hensman, Alan Saul
# Distributed under the terms of the GNU General public License, see LICENSE.txt # Licensed under the BSD 3-clause license (see LICENSE.txt)
import numpy as np import numpy as np
from ..core.model import Model from ..core.model import Model

View file

@ -1,5 +1,5 @@
# Copyright (c) 2014, James Hensman, Alan Saul # Copyright (c) 2014, James Hensman, Alan Saul
# Distributed under the terms of the GNU General public License, see LICENSE.txt # Licensed under the BSD 3-clause license (see LICENSE.txt)
import numpy as np import numpy as np
from ..core import GP from ..core import GP

View file

@ -1 +1 @@
nosetests . --with-coverage --logging-level=INFO --cover-html --cover-html-dir=coverage --cover-package=GPy --cover-erase --cover-omit=GPy.examples nosetests . --with-coverage --logging-level=INFO --cover-html --cover-html-dir=coverage --cover-package=GPy --cover-erase

View file

@ -1,5 +1,5 @@
# Copyright James Hensman and Max Zwiessele 2014, 2015 # Copyright James Hensman and Max Zwiessele 2014, 2015
# Licensed under the GNU GPL version 3.0 # Licensed under the BSD 3-clause license (see LICENSE.txt)
import numpy as np import numpy as np
from . import linalg from . import linalg

View file

@ -1,63 +0,0 @@
## Copyright (C) 2010 Soren Hauberg
##
## Copyright James Hensman 2011
##
## 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; see the file COPYING. If not, see
## <http://www.gnu.org/licenses/>.
import numpy as np
def erfcx (arg):
arg = np.atleast_1d(arg)
assert(np.all(np.isreal(arg)),"erfcx: input must be real")
## Get precision dependent thresholds -- or not :p
xneg = -26.628;
xmax = 2.53e+307;
## Allocate output
result = np.zeros (arg.shape)
## Find values where erfcx can be evaluated
idx_neg = (arg < xneg);
idx_max = (arg > xmax);
idx = ~(idx_neg | idx_max);
arg = arg [idx];
## Perform the actual computation
t = 3.97886080735226 / (np.abs (arg) + 3.97886080735226);
u = t - 0.5;
y = (((((((((u * 0.00127109764952614092 + 1.19314022838340944e-4) * u \
- 0.003963850973605135) * u - 8.70779635317295828e-4) * u + \
0.00773672528313526668) * u + 0.00383335126264887303) * u - \
0.0127223813782122755) * u - 0.0133823644533460069) * u + \
0.0161315329733252248) * u + 0.0390976845588484035) * u + \
0.00249367200053503304;
y = ((((((((((((y * u - 0.0838864557023001992) * u - \
0.119463959964325415) * u + 0.0166207924969367356) * u + \
0.357524274449531043) * u + 0.805276408752910567) * u + \
1.18902982909273333) * u + 1.37040217682338167) * u + \
1.31314653831023098) * u + 1.07925515155856677) * u + \
0.774368199119538609) * u + 0.490165080585318424) * u + \
0.275374741597376782) * t;
y [arg < 0] = 2 * np.exp (arg [arg < 0]**2) - y [arg < 0];
## Put the results back into something with the same size is the original input
result [idx] = y;
result [idx_neg] = np.inf;
## result (idx_max) = 0; # not needed as we initialise with zeros
return(result)

View file

@ -2,12 +2,7 @@
# Licensed under the BSD 3-clause license (see LICENSE.txt) # Licensed under the BSD 3-clause license (see LICENSE.txt)
#Only works for scipy 0.12+ #Only works for scipy 0.12+
try: from scipy.special import erfcx, erf
from scipy.special import erfcx, erf
except ImportError:
from scipy.special import erf
from .erfcx import erfcx
import numpy as np import numpy as np
def ln_diff_erfs(x1, x2, return_sign=False): def ln_diff_erfs(x1, x2, return_sign=False):
@ -17,7 +12,7 @@ def ln_diff_erfs(x1, x2, return_sign=False):
:param x2 : argument of the negative erf :param x2 : argument of the negative erf
:type x2: ndarray :type x2: ndarray
:return: tuple containing (log(abs(erf(x1) - erf(x2))), sign(erf(x1) - erf(x2))) :return: tuple containing (log(abs(erf(x1) - erf(x2))), sign(erf(x1) - erf(x2)))
Based on MATLAB code that was written by Antti Honkela and modified by David Luengo and originally derived from code by Neil Lawrence. Based on MATLAB code that was written by Antti Honkela and modified by David Luengo and originally derived from code by Neil Lawrence.
""" """
x1 = np.require(x1).real x1 = np.require(x1).real
@ -26,7 +21,7 @@ def ln_diff_erfs(x1, x2, return_sign=False):
x1 = np.reshape(x1, (1, 1)) x1 = np.reshape(x1, (1, 1))
if x2.size==1: if x2.size==1:
x2 = np.reshape(x2, (1, 1)) x2 = np.reshape(x2, (1, 1))
if x1.shape==x2.shape: if x1.shape==x2.shape:
v = np.zeros_like(x1) v = np.zeros_like(x1)
else: else:
@ -36,7 +31,7 @@ def ln_diff_erfs(x1, x2, return_sign=False):
v = np.zeros(x1.shape) v = np.zeros(x1.shape)
else: else:
raise ValueError("This function does not broadcast unless provided with a scalar.") raise ValueError("This function does not broadcast unless provided with a scalar.")
if x1.size == 1: if x1.size == 1:
x1 = np.tile(x1, x2.shape) x1 = np.tile(x1, x2.shape)
@ -92,7 +87,7 @@ def ln_diff_erfs(x1, x2, return_sign=False):
v[flags] = np.log(erfcx(-_x1) v[flags] = np.log(erfcx(-_x1)
-erfcx(-_x2)*np.exp(_x1**2 -erfcx(-_x2)*np.exp(_x1**2
-_x2**2))-_x1**2 -_x2**2))-_x1**2
# TODO: switch back on log of zero warnings. # TODO: switch back on log of zero warnings.
if return_sign: if return_sign: