Commit d8c7cd5a authored by Reimar H Leike's avatar Reimar H Leike
Browse files

Merge branch 'NIFTy_4' of https://gitlab.mpcdf.mpg.de/ift/NIFTy into NIFTy_4

forgot to pull before changes
parents f0a3b3b2 b3048ad6
Pipeline #27992 passed with stages
in 14 minutes and 44 seconds
......@@ -26,16 +26,12 @@ test_python2_mpi:
script:
- python setup.py install --user -f
- OMP_NUM_THREADS=1 mpiexec -n 2 nosetests -q 2> /dev/null
only:
- NIFTy_4
test_python3_mpi:
stage: test
script:
- python3 setup.py install --user -f
- OMP_NUM_THREADS=1 mpiexec -n 2 nosetests3 -q 2> /dev/null
only:
- NIFTy_4
pages:
stage: release
......
......@@ -19,6 +19,7 @@
import numpy as np
from .random import Random
from mpi4py import MPI
import sys
_comm = MPI.COMM_WORLD
ntask = _comm.Get_size()
......@@ -185,75 +186,6 @@ class data_object(object):
else:
return data_object(self._shape, tval, self._distaxis)
def __add__(self, other):
return self._binary_helper(other, op='__add__')
def __radd__(self, other):
return self._binary_helper(other, op='__radd__')
def __iadd__(self, other):
return self._binary_helper(other, op='__iadd__')
def __sub__(self, other):
return self._binary_helper(other, op='__sub__')
def __rsub__(self, other):
return self._binary_helper(other, op='__rsub__')
def __isub__(self, other):
return self._binary_helper(other, op='__isub__')
def __mul__(self, other):
return self._binary_helper(other, op='__mul__')
def __rmul__(self, other):
return self._binary_helper(other, op='__rmul__')
def __imul__(self, other):
return self._binary_helper(other, op='__imul__')
def __div__(self, other):
return self._binary_helper(other, op='__div__')
def __rdiv__(self, other):
return self._binary_helper(other, op='__rdiv__')
def __idiv__(self, other):
return self._binary_helper(other, op='__idiv__')
def __truediv__(self, other):
return self._binary_helper(other, op='__truediv__')
def __rtruediv__(self, other):
return self._binary_helper(other, op='__rtruediv__')
def __pow__(self, other):
return self._binary_helper(other, op='__pow__')
def __rpow__(self, other):
return self._binary_helper(other, op='__rpow__')
def __ipow__(self, other):
return self._binary_helper(other, op='__ipow__')
def __lt__(self, other):
return self._binary_helper(other, op='__lt__')
def __le__(self, other):
return self._binary_helper(other, op='__le__')
def __ne__(self, other):
return self._binary_helper(other, op='__ne__')
def __eq__(self, other):
return self._binary_helper(other, op='__eq__')
def __ge__(self, other):
return self._binary_helper(other, op='__ge__')
def __gt__(self, other):
return self._binary_helper(other, op='__gt__')
def __neg__(self):
return data_object(self._shape, -self._data, self._distaxis)
......@@ -269,6 +201,20 @@ class data_object(object):
def fill(self, value):
self._data.fill(value)
for op in ["__add__", "__radd__", "__iadd__",
"__sub__", "__rsub__", "__isub__",
"__mul__", "__rmul__", "__imul__",
"__div__", "__rdiv__", "__idiv__",
"__truediv__", "__rtruediv__", "__itruediv__",
"__floordiv__", "__rfloordiv__", "__ifloordiv__",
"__pow__", "__rpow__", "__ipow__",
"__lt__", "__le__", "__gt__", "__ge__", "__eq__", "__ne__"]:
def func(op):
def func2(self, other):
return self._binary_helper(other, op=op)
return func2
setattr(data_object, op, func(op))
def full(shape, fill_value, dtype=None, distaxis=0):
return data_object(shape, np.full(local_shape(shape, distaxis),
......@@ -302,6 +248,7 @@ def vdot(a, b):
def _math_helper(x, function, out):
function = getattr(np, function)
if out is not None:
function(x._data, out=out._data)
return out
......@@ -309,24 +256,14 @@ def _math_helper(x, function, out):
return data_object(x.shape, function(x._data), x._distaxis)
def abs(a, out=None):
return _math_helper(a, np.abs, out)
def exp(a, out=None):
return _math_helper(a, np.exp, out)
def log(a, out=None):
return _math_helper(a, np.log, out)
def tanh(a, out=None):
return _math_helper(a, np.tanh, out)
_current_module = sys.modules[__name__]
def sqrt(a, out=None):
return _math_helper(a, np.sqrt, out)
for f in ["sqrt", "exp", "log", "tanh", "conjugate", "abs"]:
def func(f):
def func2(x, out=None):
return _math_helper(x, f, out)
return func2
setattr(_current_module, f, func(f))
def from_object(object, dtype, copy, set_locked):
......
......@@ -23,6 +23,7 @@ from . import utilities
from .domain_tuple import DomainTuple
from functools import reduce
from . import dobj
import sys
__all__ = ["Field", "sqrt", "exp", "log", "conjugate"]
......@@ -759,75 +760,6 @@ class Field(object):
return NotImplemented
def __add__(self, other):
return self._binary_helper(other, op='__add__')
def __radd__(self, other):
return self._binary_helper(other, op='__radd__')
def __iadd__(self, other):
return self._binary_helper(other, op='__iadd__')
def __sub__(self, other):
return self._binary_helper(other, op='__sub__')
def __rsub__(self, other):
return self._binary_helper(other, op='__rsub__')
def __isub__(self, other):
return self._binary_helper(other, op='__isub__')
def __mul__(self, other):
return self._binary_helper(other, op='__mul__')
def __rmul__(self, other):
return self._binary_helper(other, op='__rmul__')
def __imul__(self, other):
return self._binary_helper(other, op='__imul__')
def __div__(self, other):
return self._binary_helper(other, op='__div__')
def __truediv__(self, other):
return self._binary_helper(other, op='__truediv__')
def __rdiv__(self, other):
return self._binary_helper(other, op='__rdiv__')
def __rtruediv__(self, other):
return self._binary_helper(other, op='__rtruediv__')
def __idiv__(self, other):
return self._binary_helper(other, op='__idiv__')
def __pow__(self, other):
return self._binary_helper(other, op='__pow__')
def __rpow__(self, other):
return self._binary_helper(other, op='__rpow__')
def __ipow__(self, other):
return self._binary_helper(other, op='__ipow__')
def __lt__(self, other):
return self._binary_helper(other, op='__lt__')
def __le__(self, other):
return self._binary_helper(other, op='__le__')
def __ne__(self, other):
return self._binary_helper(other, op='__ne__')
def __eq__(self, other):
return self._binary_helper(other, op='__eq__')
def __ge__(self, other):
return self._binary_helper(other, op='__ge__')
def __gt__(self, other):
return self._binary_helper(other, op='__gt__')
def __repr__(self):
return "<nifty4.Field>"
......@@ -836,10 +768,25 @@ class Field(object):
self._domain.__str__() + \
"\n- val = " + repr(self.val)
for op in ["__add__", "__radd__", "__iadd__",
"__sub__", "__rsub__", "__isub__",
"__mul__", "__rmul__", "__imul__",
"__div__", "__rdiv__", "__idiv__",
"__truediv__", "__rtruediv__", "__itruediv__",
"__floordiv__", "__rfloordiv__", "__ifloordiv__",
"__pow__", "__rpow__", "__ipow__",
"__lt__", "__le__", "__gt__", "__ge__", "__eq__", "__ne__"]:
def func(op):
def func2(self, other):
return self._binary_helper(other, op=op)
return func2
setattr(Field, op, func(op))
# Arithmetic functions working on Fields
def _math_helper(x, function, out):
function = getattr(dobj, function)
if not isinstance(x, Field):
raise TypeError("This function only accepts Field objects.")
if out is not None:
......@@ -850,22 +797,11 @@ def _math_helper(x, function, out):
else:
return Field(domain=x._domain, val=function(x.val))
_current_module = sys.modules[__name__]
def sqrt(x, out=None):
return _math_helper(x, dobj.sqrt, out)
def exp(x, out=None):
return _math_helper(x, dobj.exp, out)
def log(x, out=None):
return _math_helper(x, dobj.log, out)
def tanh(x, out=None):
return _math_helper(x, dobj.tanh, out)
def conjugate(x, out=None):
return _math_helper(x, dobj.conjugate, out)
for f in ["sqrt", "exp", "log", "tanh", "conjugate"]:
def func(f):
def func2(x, out=None):
return _math_helper(x, f, out)
return func2
setattr(_current_module, f, func(f))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment