Commit 78b77518 by Martin Reinecke

### merge NIFTY_4

parents 0e8e4be1 82c170d1
Pipeline #30101 passed with stages
in 1 minute and 25 seconds
 ... ... @@ -687,7 +687,7 @@ }, "outputs": [], "source": [ "precise = (np.abs(s_data-m_data) < uncertainty )\n", "precise = (np.abs(s_data-m_data) < uncertainty)\n", "print(\"Error within uncertainty map bounds: \" + str(np.sum(precise) * 100 / N_pixels**2) + \"%\")\n", "\n", "plt.figure(figsize=(15,10))\n", ... ...
 ... ... @@ -10,8 +10,8 @@ if __name__ == "__main__": p_spec = lambda k: (1. / (k*correlation_length + 1) ** 4) nonlinearity = Tanh() #nonlinearity = Linear() #nonlinearity = Exponential() # nonlinearity = Linear() # nonlinearity = Exponential() # Set up position space s_space = ift.RGSpace(1024) ... ...
 from .version import __version__ from . import dobj from .domains import * from .domain_tuple import DomainTuple from .operators import * from .field import Field from .operators import * from .probing.utils import probe_with_posterior_samples, probe_diagonal, \ StatCalculator from .minimization import * from .sugar import * ... ... @@ -28,5 +22,5 @@ from .multi import * __all__ = ["__version__", "dobj", "DomainTuple"] + \ domains.__all__ + operators.__all__ + minimization.__all__ + \ ["DomainTuple", "Field", "sqrt", "exp", "log"] + \ ["Field"] + sugar.__all__ + \ multi.__all__
 ... ... @@ -721,6 +721,15 @@ class Field(object): self._domain.__str__() + \ "\n- val = " + repr(self.val) def equivalent(self, other): if self is other: return True if not isinstance(other, Field): return False if self._domain != other._domain: return False return (self._val == other._val).all() for op in ["__add__", "__radd__", "__iadd__", "__sub__", "__rsub__", "__isub__", "__mul__", "__rmul__", "__imul__", ... ...
 ... ... @@ -15,10 +15,11 @@ from .energy import Energy from .quadratic_energy import QuadraticEnergy from .line_energy import LineEnergy from .yango import Yango from .energy_sum import EnergySum __all__ = ["LineSearch", "LineSearchStrongWolfe", "IterationController", "GradientNormController", "Minimizer", "ConjugateGradient", "NonlinearCG", "DescentMinimizer", "SteepestDescent", "VL_BFGS", "RelaxedNewton", "ScipyMinimizer", "NewtonCG", "L_BFGS_B", "ScipyCG", "Energy", "QuadraticEnergy", "LineEnergy", "L_BFGS", "Yango"] "LineEnergy", "L_BFGS", "EnergySum", "Yango"]
 ... ... @@ -97,5 +97,5 @@ class LineEnergy(object): if abs(res.imag) / max(abs(res.real), 1.) > 1e-12: from ..logger import logger logger.warning("directional derivative has non-negligible " "imaginary part:", res) "imaginary part: {}".format(res)) return res.real
 ... ... @@ -98,7 +98,7 @@ class ScipyMinimizer(Minimizer): r = opt.minimize(hlp.fun, x, method=self._method, jac=hlp.jac, hessp=hessp, options=self._options, bounds=bounds) if not r.success: logger.error("Problem in Scipy minimization:", r.message) logger.error("Problem in Scipy minimization: {}".format(r.message)) return hlp._energy, IterationController.ERROR return hlp._energy, IterationController.CONVERGED ... ...
 ... ... @@ -29,6 +29,8 @@ class MultiField(object): val : dict """ self._val = val self._domain = MultiDomain.make( {key: val.domain for key, val in self._val.items()}) def __getitem__(self, key): return self._val[key] ... ... @@ -44,8 +46,7 @@ class MultiField(object): @property def domain(self): return MultiDomain.make( {key: val.domain for key, val in self._val.items()}) return self._domain @property def dtype(self): ... ... @@ -71,7 +72,7 @@ class MultiField(object): return self def _check_domain(self, other): if other.domain != self.domain: if other._domain != self._domain: raise ValueError("domains are incompatible.") def vdot(self, x): ... ... @@ -147,6 +148,17 @@ class MultiField(object): return MultiField({key: sub_field.conjugate() for key, sub_field in self.items()}) def equivalent(self, other): if self is other: return True if not isinstance(other, MultiField): return False if self._domain != other._domain: return False for key, val in self._val.items(): if not val.equivalent(other[key]): return False return True for op in ["__add__", "__radd__", "__iadd__", "__sub__", "__rsub__", "__isub__", ... ...
 ... ... @@ -130,16 +130,22 @@ class LinearOperator(NiftyMetaBase()): def __mul__(self, other): from .chain_operator import ChainOperator if np.isscalar(other) and other == 1.: return self other = self._toOperator(other, self.domain) return ChainOperator.make([self, other]) def __rmul__(self, other): from .chain_operator import ChainOperator if np.isscalar(other) and other == 1.: return self other = self._toOperator(other, self.target) return ChainOperator.make([other, self]) def __add__(self, other): from .sum_operator import SumOperator if np.isscalar(other) and other == 0.: return self other = self._toOperator(other, self.domain) return SumOperator.make([self, other], [False, False]) ... ... @@ -148,6 +154,8 @@ class LinearOperator(NiftyMetaBase()): def __sub__(self, other): from .sum_operator import SumOperator if np.isscalar(other) and other == 0.: return self other = self._toOperator(other, self.domain) return SumOperator.make([self, other], [False, True]) ... ...
 ... ... @@ -70,6 +70,7 @@ def get_signal_variance(spec, space): k_field = dist(field) return k_field.weight(2).sum() def _single_power_analyze(field, idx, binbounds): power_domain = PowerSpace(field.domain[idx], binbounds) pd = PowerDistributor(field.domain, power_domain, idx) ... ...
 ... ... @@ -25,6 +25,7 @@ from test.common import expand dom = ift.makeDomain({"d1": ift.RGSpace(10)}) class Test_Functionality(unittest.TestCase): def test_vdot(self): f1 = ift.from_random("normal", domain=dom, dtype=np.complex128) ... ... @@ -53,7 +54,8 @@ class Test_Functionality(unittest.TestCase): assert_equal(val.local_data, f2[key].local_data) def test_blockdiagonal(self): op = ift.BlockDiagonalOperator({"d1": ift.ScalingOperator(20., dom["d1"])}) op = ift.BlockDiagonalOperator({"d1": ift.ScalingOperator(20., dom["d1"])}) op2 = op*op ift.extra.consistency_check(op2) assert_equal(type(op2), ift.BlockDiagonalOperator) ... ...
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!