Commit d752bd3b authored by Martin Reinecke's avatar Martin Reinecke
Browse files

cleanup

parent 89767b59
...@@ -232,7 +232,7 @@ class Field(object): ...@@ -232,7 +232,7 @@ class Field(object):
raise ValueError("No space for analysis specified.") raise ValueError("No space for analysis specified.")
if keep_phase_information: if keep_phase_information:
parts = self._hermitian_decomposition(self, False) parts = [self.real.copy(), self.imag.copy()]
else: else:
parts = [self] parts = [self]
...@@ -392,23 +392,13 @@ class Field(object): ...@@ -392,23 +392,13 @@ class Field(object):
result_list[1] *= spec.imag result_list[1] *= spec.imag
if real_signal: if real_signal:
result_list = [self._hermitian_decomposition(i, True)[0] result_list = [i.real*np.sqrt(2.) for i in result_list]
for i in result_list]
if real_power: if real_power:
return result_list[0] return result_list[0]
else: else:
return result_list[0] + 1j*result_list[1] return result_list[0] + 1j*result_list[1]
@staticmethod
def _hermitian_decomposition(inp, preserve_gaussian_variance=False):
if preserve_gaussian_variance:
if not issubclass(inp.dtype.type, np.complexfloating):
raise TypeError("complex input field is needed here")
return (inp.real*np.sqrt(2.), inp.imag*np.sqrt(2.))
else:
return (inp.real.copy(), inp.imag.copy())
def _spec_to_rescaler(self, spec, power_space_index): def _spec_to_rescaler(self, spec, power_space_index):
power_space = self.domain[power_space_index] power_space = self.domain[power_space_index]
...@@ -615,7 +605,7 @@ class Field(object): ...@@ -615,7 +605,7 @@ class Field(object):
return np.sqrt(np.abs(self.vdot(x=self))) return np.sqrt(np.abs(self.vdot(x=self)))
def conjugate(self, inplace=False): def conjugate(self, inplace=False):
""" Retruns the complex conjugate of the field. """ Returns the complex conjugate of the field.
Parameters Parameters
---------- ----------
......
...@@ -20,6 +20,7 @@ from builtins import next, range ...@@ -20,6 +20,7 @@ from builtins import next, range
import numpy as np import numpy as np
from itertools import product from itertools import product
from functools import reduce from functools import reduce
from .domain_object import DomainObject
def get_slice_list(shape, axes): def get_slice_list(shape, axes):
...@@ -94,7 +95,6 @@ def cast_axis_to_tuple(axis, length=None): ...@@ -94,7 +95,6 @@ def cast_axis_to_tuple(axis, length=None):
def parse_domain(domain): def parse_domain(domain):
from .domain_object import DomainObject
if domain is None: if domain is None:
return () return ()
if isinstance(domain, DomainObject): if isinstance(domain, DomainObject):
......
...@@ -64,10 +64,8 @@ class ComposedOperator(LinearOperator): ...@@ -64,10 +64,8 @@ class ComposedOperator(LinearOperator):
>>> x2 = RGSpace(10) >>> x2 = RGSpace(10)
>>> k1 = RGRGTransformation.get_codomain(x1) >>> k1 = RGRGTransformation.get_codomain(x1)
>>> k2 = RGRGTransformation.get_codomain(x2) >>> k2 = RGRGTransformation.get_codomain(x2)
>>> FFT1 = FFTOperator(domain=x1, target=k1, >>> FFT1 = FFTOperator(domain=x1, target=k1)
domain_dtype=np.float64, target_dtype=np.complex128) >>> FFT2 = FFTOperator(domain=x2, target=k2)
>>> FFT2 = FFTOperator(domain=x2, target=k2,
domain_dtype=np.float64, target_dtype=np.complex128)
>>> FFT = ComposedOperator((FFT1, FFT2) >>> FFT = ComposedOperator((FFT1, FFT2)
>>> f = Field.from_random('normal', domain=(x1,x2)) >>> f = Field.from_random('normal', domain=(x1,x2))
>>> FFT.times(f) >>> FFT.times(f)
......
...@@ -132,7 +132,7 @@ class SlicingTransformation(Transformation): ...@@ -132,7 +132,7 @@ class SlicingTransformation(Transformation):
def buildLm(nr, lmax): def buildLm(nr, lmax):
new_dtype = np.result_type(nr.dtype, np.complex64) new_dtype = np.result_type(nr[0]*1j)
size = (len(nr)-lmax-1)//2+lmax+1 size = (len(nr)-lmax-1)//2+lmax+1
res = np.empty([size], dtype=new_dtype) res = np.empty([size], dtype=new_dtype)
...@@ -142,12 +142,7 @@ def buildLm(nr, lmax): ...@@ -142,12 +142,7 @@ def buildLm(nr, lmax):
def buildIdx(nr, lmax): def buildIdx(nr, lmax):
if nr.dtype == np.dtype('complex64'): new_dtype = np.result_type(nr[0].real)
new_dtype = np.float32
elif nr.dtype == np.dtype('complex128'):
new_dtype = np.float64
else:
raise TypeError("dtype of nr not supported.")
size = (lmax+1)*(lmax+1) size = (lmax+1)*(lmax+1)
final = np.empty(size, dtype=new_dtype) final = np.empty(size, dtype=new_dtype)
......
...@@ -287,9 +287,8 @@ class LinearOperator(with_metaclass( ...@@ -287,9 +287,8 @@ class LinearOperator(with_metaclass(
else: else:
for i, space_index in enumerate(spaces): for i, space_index in enumerate(spaces):
if x.domain[space_index] != self_domain[i]: if x.domain[space_index] != self_domain[i]:
raise ValueError( raise ValueError("The operator's and and field's domains "
"The operator's and and field's domains don't " "don't match.")
"match.")
return spaces return spaces
......
...@@ -54,27 +54,6 @@ class Test_Interface(unittest.TestCase): ...@@ -54,27 +54,6 @@ class Test_Interface(unittest.TestCase):
class Test_Functionality(unittest.TestCase): class Test_Functionality(unittest.TestCase):
@expand(product([True, False], [True, False],
[(1,), (4,), (5,)], [(1,), (6,), (7,)]))
def test_hermitian_decomposition(self, preserve, complexdata, s1, s2):
np.random.seed(123)
r1 = RGSpace(s1, harmonic=True)
r2 = RGSpace(s2, harmonic=True)
ra = RGSpace(s1+s2, harmonic=True)
if preserve:
complexdata=True
v = np.random.random(s1+s2)
if complexdata:
v = v + 1j*np.random.random(s1+s2)
f1 = Field(ra, val=v, copy=True)
f2 = Field((r1, r2), val=v, copy=True)
h1, a1 = Field._hermitian_decomposition(f1.val, preserve)
h2, a2 = Field._hermitian_decomposition(f2.val, preserve)
assert_almost_equal(h1, h2)
assert_almost_equal(a1, a2)
@expand(product([RGSpace((8,), harmonic=True), @expand(product([RGSpace((8,), harmonic=True),
RGSpace((8, 8), harmonic=True, distances=0.123)], RGSpace((8, 8), harmonic=True, distances=0.123)],
[RGSpace((8,), harmonic=True), [RGSpace((8,), harmonic=True),
......
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