test_diagonal_operator.py 3.75 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 `````` 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) `````` Martin Reinecke committed Jun 20, 2017 36 37 `````` tt1 = rand1.vdot(D.times(rand2)) tt2 = rand2.vdot(D.times(rand1)) `````` Pumpe, Daniel (dpumpe) committed May 10, 2017 38 39 40 41 42 43 44 45 `````` 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) `````` Theo Steininger committed Jun 21, 2017 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 `````` @expand(product(spaces, [True, False])) def test_diagonal(self, space, copy): diag = Field.from_random('normal', domain=space) D = DiagonalOperator(space, diagonal=diag, copy=copy) diag_op = D.diagonal() assert_allclose(diag.val.get_full_data(), diag_op.val.get_full_data()) @expand(product(spaces, [True, False])) def test_inverse(self, space, copy): diag = Field.from_random('normal', domain=space) D = DiagonalOperator(space, diagonal=diag, copy=copy) diag_op = D.inverse_diagonal() assert_allclose(1./diag.val.get_full_data(), diag_op.val.get_full_data())``````