[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()
newfunc = super(Transformation, cls).__new__
if newfunc is object.__new__:
o = newfunc(cls)
o = newfunc(cls)
else:
o = newfunc(cls, lower, upper, *args, **kwargs)
cls._instances.append(weakref.ref(o))

View file

@ -1,5 +1,5 @@
# 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
from ..util import choleskies

View file

@ -1,5 +1,5 @@
# 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
from ..core.model import Model

View file

@ -1,5 +1,5 @@
# 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
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
# Licensed under the GNU GPL version 3.0
# Licensed under the BSD 3-clause license (see LICENSE.txt)
import numpy as np
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)
#Only works for scipy 0.12+
try:
from scipy.special import erfcx, erf
except ImportError:
from scipy.special import erf
from .erfcx import erfcx
from scipy.special import erfcx, erf
import numpy as np
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
:type x2: ndarray
: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.
"""
x1 = np.require(x1).real
@ -26,7 +21,7 @@ def ln_diff_erfs(x1, x2, return_sign=False):
x1 = np.reshape(x1, (1, 1))
if x2.size==1:
x2 = np.reshape(x2, (1, 1))
if x1.shape==x2.shape:
v = np.zeros_like(x1)
else:
@ -36,7 +31,7 @@ def ln_diff_erfs(x1, x2, return_sign=False):
v = np.zeros(x1.shape)
else:
raise ValueError("This function does not broadcast unless provided with a scalar.")
if x1.size == 1:
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)
-erfcx(-_x2)*np.exp(_x1**2
-_x2**2))-_x1**2
# TODO: switch back on log of zero warnings.
if return_sign: