test_diagonal_operator.py 3.1 KB
 Pumpe, Daniel (dpumpe) committed May 10, 2017 1 2 3 4 5 6 7 8 9 10 ``````import unittest import numpy as np from numpy.testing import assert_equal,\ assert_allclose,\ assert_approx_equal from nifty import Field,\ DiagonalOperator `````` Pumpe, Daniel (dpumpe) committed May 11, 2017 11 ``````from test.common import generate_spaces `````` Pumpe, Daniel (dpumpe) committed May 10, 2017 12 13 14 15 16 `````` from itertools import product from test.common import expand class DiagonalOperator_Tests(unittest.TestCase): `````` Pumpe, Daniel (dpumpe) committed May 11, 2017 17 `````` spaces = generate_spaces() `````` Pumpe, Daniel (dpumpe) committed May 10, 2017 18 19 20 21 22 23 24 `````` @expand(product(spaces, [True, False], [True, False])) def test_property(self, space, bare, copy): diag = Field.from_random('normal', domain=space) D = DiagonalOperator(space, diagonal=diag) if D.domain[0] != space: raise TypeError `````` Pumpe, Daniel (dpumpe) committed May 11, 2017 25 `````` if D.unitary != False: `````` Pumpe, Daniel (dpumpe) committed May 10, 2017 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 `````` raise TypeError if D.self_adjoint != True: raise TypeError @expand(product(spaces, [True, False], [True, False])) def test_times_adjoint(self, space, bare, copy): rand1 = Field.from_random('normal', domain=space) rand2 = Field.from_random('normal', domain=space) diag = Field.from_random('normal', domain=space) D = DiagonalOperator(space, diagonal=diag, bare=bare, copy=copy) tt1 = rand1.dot(D.times(rand2)) tt2 = rand2.dot(D.times(rand1)) assert_approx_equal(tt1, tt2) @expand(product(spaces, [True, False], [True, False])) def test_times_inverse(self, space, bare, copy): rand1 = Field.from_random('normal', domain=space) diag = Field.from_random('normal', domain=space) D = DiagonalOperator(space, diagonal=diag, bare=bare, copy=copy) tt1 = D.times(D.inverse_times(rand1)) `````` Pumpe, Daniel (dpumpe) committed May 11, 2017 46 `````` assert_allclose(rand1.val.get_full_data(), tt1.val.get_full_data()) `````` Pumpe, Daniel (dpumpe) committed May 10, 2017 47 48 49 50 51 52 53 `````` @expand(product(spaces, [True, False], [True, False])) def test_times(self, space, bare, copy): rand1 = Field.from_random('normal', domain=space) diag = Field.from_random('normal', domain=space) D = DiagonalOperator(space, diagonal=diag, bare=bare, copy=copy) tt = D.times(rand1) `````` Pumpe, Daniel (dpumpe) committed May 11, 2017 54 `````` assert_equal(tt.domain[0], space) `````` Pumpe, Daniel (dpumpe) committed May 10, 2017 55 56 57 58 59 60 61 `````` @expand(product(spaces, [True, False], [True, False])) def test_adjoint_times(self, space, bare, copy): rand1 = Field.from_random('normal', domain=space) diag = Field.from_random('normal', domain=space) D = DiagonalOperator(space, diagonal=diag, bare=bare, copy=copy) tt = D.adjoint_times(rand1) `````` Pumpe, Daniel (dpumpe) committed May 11, 2017 62 `````` assert_equal(tt.domain[0], space) `````` Pumpe, Daniel (dpumpe) committed May 10, 2017 63 64 65 66 67 68 69 `````` @expand(product(spaces, [True, False], [True, False])) def test_inverse_times(self, space, bare, copy): rand1 = Field.from_random('normal', domain=space) diag = Field.from_random('normal', domain=space) D = DiagonalOperator(space, diagonal=diag, bare=bare, copy=copy) tt = D.inverse_times(rand1) `````` Pumpe, Daniel (dpumpe) committed May 11, 2017 70 `````` assert_equal(tt.domain[0], space) `````` Pumpe, Daniel (dpumpe) committed May 10, 2017 71 72 73 74 75 76 77 `````` @expand(product(spaces, [True, False], [True, False])) def test_adjoint_inverse_times(self, space, bare, copy): rand1 = Field.from_random('normal', domain=space) diag = Field.from_random('normal', domain=space) D = DiagonalOperator(space, diagonal=diag, bare=bare, copy=copy) tt = D.adjoint_inverse_times(rand1) `````` Pumpe, Daniel (dpumpe) committed May 11, 2017 78 `` assert_equal(tt.domain[0], space)``