|
| 1 | +# standard imports |
| 2 | +import unittest |
| 3 | + |
| 4 | +# third party imports |
| 5 | + |
| 6 | +# local imports |
| 7 | +from ACEtk import PhotoAtomicComptonProfileBlock |
| 8 | +from ACEtk import PhotoAtomicComptonProfile |
| 9 | + |
| 10 | +class Test_ACEtk_PhotoAtomicComptonProfileBlock( unittest.TestCase ) : |
| 11 | + """Unit test for the PhotoAtomicComptonProfileBlock class.""" |
| 12 | + |
| 13 | + chunk = [ 1, 96, 2, |
| 14 | + 31, 0.000000000000e+00, 5.000000000000e-02, 1.000000000000e-01, |
| 15 | + 1.500000000000e-01, 2.000000000000e-01, 3.000000000000e-01, 4.000000000000e-01, |
| 16 | + 5.000000000000e-01, 6.000000000000e-01, 7.000000000000e-01, 8.000000000000e-01, |
| 17 | + 1.000000000000e+00, 1.200000000000e+00, 1.400000000000e+00, 1.600000000000e+00, |
| 18 | + 1.800000000000e+00, 2.000000000000e+00, 2.400000000000e+00, 3.000000000000e+00, |
| 19 | + 4.000000000000e+00, 5.000000000000e+00, 6.000000000000e+00, 7.000000000000e+00, |
| 20 | + 8.000000000000e+00, 1.000000000000e+01, 1.500000000000e+01, 2.000000000000e+01, |
| 21 | + 3.000000000000e+01, 4.000000000000e+01, 6.000000000000e+01, 1.000000000000e+02, |
| 22 | + 6.527863344596e-01, 6.508021814673e-01, 6.488180284750e-01, 6.448497224905e-01, |
| 23 | + 6.388972635137e-01, 6.250081925677e-01, 6.051666626449e-01, 5.813568267376e-01, |
| 24 | + 5.535786848457e-01, 5.218322369692e-01, 4.900857890928e-01, 4.226245873553e-01, |
| 25 | + 3.571475386101e-01, 2.956387958495e-01, 2.420666650580e-01, 1.964311462356e-01, |
| 26 | + 1.583354087838e-01, 1.017870485039e-01, 5.277846959461e-02, 1.871056271719e-02, |
| 27 | + 7.361207601353e-03, 3.194486317568e-03, 1.515892886101e-03, 7.718355139963e-04, |
| 28 | + 2.380983590734e-04, 2.380983590734e-05, 4.761967181468e-06, 4.365136583013e-07, |
| 29 | + 7.738196669886e-08, 6.944535472975e-09, 3.571475386101e-10, 0.000000000000e+00, |
| 30 | + 3.258971289817e-02, 6.508021814673e-02, 9.742191192087e-02, 1.295155865710e-01, |
| 31 | + 1.927108593750e-01, 2.542196021357e-01, 3.135457766048e-01, 3.702925521840e-01, |
| 32 | + 4.240630982747e-01, 4.746589995778e-01, 5.659300372226e-01, 6.439072498192e-01, |
| 33 | + 7.091858832651e-01, 7.629564293559e-01, 8.068062104852e-01, 8.422828659872e-01, |
| 34 | + 8.943073574447e-01, 9.406770128742e-01, 9.764215290301e-01, 9.894574141894e-01, |
| 35 | + 9.947352611489e-01, 9.970904507507e-01, 9.982343149508e-01, 9.992442488238e-01, |
| 36 | + 9.998990193113e-01, 9.999704488190e-01, 9.999964412232e-01, 9.999990107013e-01, |
| 37 | + 9.999998539663e-01, 1.000000000000e+00, 2, 31, |
| 38 | + 0.000000000000e+00, 5.000000000000e-02, 1.000000000000e-01, 1.500000000000e-01, |
| 39 | + 2.000000000000e-01, 3.000000000000e-01, 4.000000000000e-01, 5.000000000000e-01, |
| 40 | + 6.000000000000e-01, 7.000000000000e-01, 8.000000000000e-01, 1.000000000000e+00, |
| 41 | + 1.200000000000e+00, 1.400000000000e+00, 1.600000000000e+00, 1.800000000000e+00, |
| 42 | + 2.000000000000e+00, 2.400000000000e+00, 3.000000000000e+00, 4.000000000000e+00, |
| 43 | + 5.000000000000e+00, 6.000000000000e+00, 7.000000000000e+00, 8.000000000000e+00, |
| 44 | + 1.000000000000e+01, 1.500000000000e+01, 2.000000000000e+01, 3.000000000000e+01, |
| 45 | + 4.000000000000e+01, 6.000000000000e+01, 1.000000000000e+02, 3.848272047027e+00, |
| 46 | + 3.709416870073e+00, 3.352360700761e+00, 2.836612900644e+00, 2.261355738975e+00, |
| 47 | + 1.213990975660e+00, 5.435188355080e-01, 2.142337015871e-01, 8.152782532619e-02, |
| 48 | + 3.848272047027e-02, 2.796939992942e-02, 2.658084815988e-02, 2.380374462079e-02, |
| 49 | + 1.900332278893e-02, 1.436159258787e-02, 1.063233926395e-02, 7.835399271009e-03, |
| 50 | + 4.324346939443e-03, 1.908266860433e-03, 5.851753885943e-04, 2.142337015871e-04, |
| 51 | + 8.886731325094e-05, 4.086309493235e-05, 2.043154746618e-05, 6.149300693703e-06, |
| 52 | + 6.149300693703e-07, 1.170350777189e-07, 1.071168507935e-08, 1.904299569663e-09, |
| 53 | + 1.705935031156e-10, 8.728039694288e-12, 0.000000000000e+00, 1.889422229275e-01, |
| 54 | + 3.654866621983e-01, 5.202110022334e-01, 6.476602182239e-01, 8.214275539556e-01, |
| 55 | + 9.093030445140e-01, 9.471906713688e-01, 9.619787477145e-01, 9.679792750043e-01, |
| 56 | + 9.713018810243e-01, 9.767569058332e-01, 9.817953651113e-01, 9.860760718522e-01, |
| 57 | + 9.894125633899e-01, 9.919119565751e-01, 9.937587304286e-01, 9.961906796707e-01, |
| 58 | + 9.980604638107e-01, 9.993071849352e-01, 9.997068894803e-01, 9.998584399877e-01, |
| 59 | + 9.999233051918e-01, 9.999539525130e-01, 9.999805333611e-01, 9.999974439380e-01, |
| 60 | + 9.999992738509e-01, 9.999999125847e-01, 9.999999756646e-01, 9.999999964136e-01, |
| 61 | + 1.000000000000e+00 ] |
| 62 | + |
| 63 | + def test_component( self ) : |
| 64 | + |
| 65 | + def verify_chunk( self, chunk ) : |
| 66 | + |
| 67 | + # verify content |
| 68 | + self.assertEqual( False, chunk.empty ) |
| 69 | + self.assertEqual( 192, chunk.length ) |
| 70 | + self.assertEqual( "SWD", chunk.name ) |
| 71 | + |
| 72 | + self.assertEqual( 2, chunk.NSH ) |
| 73 | + self.assertEqual( 2, chunk.number_electron_shells ) |
| 74 | + self.assertEqual( 2, len( chunk.data ) ) |
| 75 | + |
| 76 | + self.assertEqual( 1, chunk.LSWD(1) ) |
| 77 | + self.assertEqual( 96, chunk.LSWD(2) ) |
| 78 | + self.assertEqual( 1, chunk.compton_profile_locator(1) ) |
| 79 | + self.assertEqual( 96, chunk.compton_profile_locator(2) ) |
| 80 | + |
| 81 | + profile = chunk.compton_profile(1) |
| 82 | + self.assertEqual( 2, profile.interpolation ) |
| 83 | + self.assertEqual( 31, profile.number_values ) |
| 84 | + self.assertEqual( 31, len( profile.momentum ) ) |
| 85 | + self.assertAlmostEqual( 0., profile.momentum[0] ) |
| 86 | + self.assertAlmostEqual( 100., profile.momentum[-1] ) |
| 87 | + self.assertEqual( 31, len( profile.pdf ) ) |
| 88 | + self.assertAlmostEqual( 6.527863344596e-01, profile.pdf[0] ) |
| 89 | + self.assertAlmostEqual( 3.571475386101e-10, profile.pdf[-1] ) |
| 90 | + self.assertEqual( 31, len( profile.cdf ) ) |
| 91 | + self.assertAlmostEqual( 0., profile.cdf[0] ) |
| 92 | + self.assertAlmostEqual( 1., profile.cdf[-1] ) |
| 93 | + |
| 94 | + profile = chunk.compton_profile(2) |
| 95 | + self.assertEqual( 2, profile.interpolation ) |
| 96 | + self.assertEqual( 31, profile.number_values ) |
| 97 | + self.assertEqual( 31, len( profile.momentum ) ) |
| 98 | + self.assertAlmostEqual( 0., profile.momentum[0] ) |
| 99 | + self.assertAlmostEqual( 100., profile.momentum[-1] ) |
| 100 | + self.assertEqual( 31, len( profile.pdf ) ) |
| 101 | + self.assertAlmostEqual( 3.848272047027e+00, profile.pdf[0] ) |
| 102 | + self.assertAlmostEqual( 8.728039694288e-12, profile.pdf[-1] ) |
| 103 | + self.assertEqual( 31, len( profile.cdf ) ) |
| 104 | + self.assertAlmostEqual( 0., profile.cdf[0] ) |
| 105 | + self.assertAlmostEqual( 1., profile.cdf[-1] ) |
| 106 | + |
| 107 | + profile = chunk.data[0] |
| 108 | + self.assertEqual( 2, profile.interpolation ) |
| 109 | + self.assertEqual( 31, profile.number_values ) |
| 110 | + self.assertEqual( 31, len( profile.momentum ) ) |
| 111 | + self.assertAlmostEqual( 0., profile.momentum[0] ) |
| 112 | + self.assertAlmostEqual( 100., profile.momentum[-1] ) |
| 113 | + self.assertEqual( 31, len( profile.pdf ) ) |
| 114 | + self.assertAlmostEqual( 6.527863344596e-01, profile.pdf[0] ) |
| 115 | + self.assertAlmostEqual( 3.571475386101e-10, profile.pdf[-1] ) |
| 116 | + self.assertEqual( 31, len( profile.cdf ) ) |
| 117 | + self.assertAlmostEqual( 0., profile.cdf[0] ) |
| 118 | + self.assertAlmostEqual( 1., profile.cdf[-1] ) |
| 119 | + |
| 120 | + profile = chunk.data[1] |
| 121 | + self.assertEqual( 2, profile.interpolation ) |
| 122 | + self.assertEqual( 31, profile.number_values ) |
| 123 | + self.assertEqual( 31, len( profile.momentum ) ) |
| 124 | + self.assertAlmostEqual( 0., profile.momentum[0] ) |
| 125 | + self.assertAlmostEqual( 100., profile.momentum[-1] ) |
| 126 | + self.assertEqual( 31, len( profile.pdf ) ) |
| 127 | + self.assertAlmostEqual( 3.848272047027e+00, profile.pdf[0] ) |
| 128 | + self.assertAlmostEqual( 8.728039694288e-12, profile.pdf[-1] ) |
| 129 | + self.assertEqual( 31, len( profile.cdf ) ) |
| 130 | + self.assertAlmostEqual( 0., profile.cdf[0] ) |
| 131 | + self.assertAlmostEqual( 1., profile.cdf[-1] ) |
| 132 | + |
| 133 | + # verify the xss array |
| 134 | + xss = chunk.xss_array |
| 135 | + for index in range( chunk.length ) : |
| 136 | + |
| 137 | + self.assertAlmostEqual( self.chunk[index], xss[index] ) |
| 138 | + |
| 139 | + # the data is given explicitly |
| 140 | + chunk = PhotoAtomicComptonProfileBlock( |
| 141 | + profiles = [ |
| 142 | + |
| 143 | + PhotoAtomicComptonProfile( |
| 144 | + 2, |
| 145 | + [ 0.000000000000e+00, 5.000000000000e-02, 1.000000000000e-01, |
| 146 | + 1.500000000000e-01, 2.000000000000e-01, 3.000000000000e-01, 4.000000000000e-01, |
| 147 | + 5.000000000000e-01, 6.000000000000e-01, 7.000000000000e-01, 8.000000000000e-01, |
| 148 | + 1.000000000000e+00, 1.200000000000e+00, 1.400000000000e+00, 1.600000000000e+00, |
| 149 | + 1.800000000000e+00, 2.000000000000e+00, 2.400000000000e+00, 3.000000000000e+00, |
| 150 | + 4.000000000000e+00, 5.000000000000e+00, 6.000000000000e+00, 7.000000000000e+00, |
| 151 | + 8.000000000000e+00, 1.000000000000e+01, 1.500000000000e+01, 2.000000000000e+01, |
| 152 | + 3.000000000000e+01, 4.000000000000e+01, 6.000000000000e+01, 1.000000000000e+02 ], |
| 153 | + [ 6.527863344596e-01, 6.508021814673e-01, 6.488180284750e-01, 6.448497224905e-01, |
| 154 | + 6.388972635137e-01, 6.250081925677e-01, 6.051666626449e-01, 5.813568267376e-01, |
| 155 | + 5.535786848457e-01, 5.218322369692e-01, 4.900857890928e-01, 4.226245873553e-01, |
| 156 | + 3.571475386101e-01, 2.956387958495e-01, 2.420666650580e-01, 1.964311462356e-01, |
| 157 | + 1.583354087838e-01, 1.017870485039e-01, 5.277846959461e-02, 1.871056271719e-02, |
| 158 | + 7.361207601353e-03, 3.194486317568e-03, 1.515892886101e-03, 7.718355139963e-04, |
| 159 | + 2.380983590734e-04, 2.380983590734e-05, 4.761967181468e-06, 4.365136583013e-07, |
| 160 | + 7.738196669886e-08, 6.944535472975e-09, 3.571475386101e-10 ], |
| 161 | + [ 0.000000000000e+00, |
| 162 | + 3.258971289817e-02, 6.508021814673e-02, 9.742191192087e-02, 1.295155865710e-01, |
| 163 | + 1.927108593750e-01, 2.542196021357e-01, 3.135457766048e-01, 3.702925521840e-01, |
| 164 | + 4.240630982747e-01, 4.746589995778e-01, 5.659300372226e-01, 6.439072498192e-01, |
| 165 | + 7.091858832651e-01, 7.629564293559e-01, 8.068062104852e-01, 8.422828659872e-01, |
| 166 | + 8.943073574447e-01, 9.406770128742e-01, 9.764215290301e-01, 9.894574141894e-01, |
| 167 | + 9.947352611489e-01, 9.970904507507e-01, 9.982343149508e-01, 9.992442488238e-01, |
| 168 | + 9.998990193113e-01, 9.999704488190e-01, 9.999964412232e-01, 9.999990107013e-01, |
| 169 | + 9.999998539663e-01, 1.000000000000e+00 ] ), |
| 170 | + PhotoAtomicComptonProfile( |
| 171 | + 2, |
| 172 | + [ 0.000000000000e+00, 5.000000000000e-02, 1.000000000000e-01, 1.500000000000e-01, |
| 173 | + 2.000000000000e-01, 3.000000000000e-01, 4.000000000000e-01, 5.000000000000e-01, |
| 174 | + 6.000000000000e-01, 7.000000000000e-01, 8.000000000000e-01, 1.000000000000e+00, |
| 175 | + 1.200000000000e+00, 1.400000000000e+00, 1.600000000000e+00, 1.800000000000e+00, |
| 176 | + 2.000000000000e+00, 2.400000000000e+00, 3.000000000000e+00, 4.000000000000e+00, |
| 177 | + 5.000000000000e+00, 6.000000000000e+00, 7.000000000000e+00, 8.000000000000e+00, |
| 178 | + 1.000000000000e+01, 1.500000000000e+01, 2.000000000000e+01, 3.000000000000e+01, |
| 179 | + 4.000000000000e+01, 6.000000000000e+01, 1.000000000000e+02 ], |
| 180 | + [ 3.848272047027e+00, |
| 181 | + 3.709416870073e+00, 3.352360700761e+00, 2.836612900644e+00, 2.261355738975e+00, |
| 182 | + 1.213990975660e+00, 5.435188355080e-01, 2.142337015871e-01, 8.152782532619e-02, |
| 183 | + 3.848272047027e-02, 2.796939992942e-02, 2.658084815988e-02, 2.380374462079e-02, |
| 184 | + 1.900332278893e-02, 1.436159258787e-02, 1.063233926395e-02, 7.835399271009e-03, |
| 185 | + 4.324346939443e-03, 1.908266860433e-03, 5.851753885943e-04, 2.142337015871e-04, |
| 186 | + 8.886731325094e-05, 4.086309493235e-05, 2.043154746618e-05, 6.149300693703e-06, |
| 187 | + 6.149300693703e-07, 1.170350777189e-07, 1.071168507935e-08, 1.904299569663e-09, |
| 188 | + 1.705935031156e-10, 8.728039694288e-12 ], |
| 189 | + [ 0.000000000000e+00, 1.889422229275e-01, |
| 190 | + 3.654866621983e-01, 5.202110022334e-01, 6.476602182239e-01, 8.214275539556e-01, |
| 191 | + 9.093030445140e-01, 9.471906713688e-01, 9.619787477145e-01, 9.679792750043e-01, |
| 192 | + 9.713018810243e-01, 9.767569058332e-01, 9.817953651113e-01, 9.860760718522e-01, |
| 193 | + 9.894125633899e-01, 9.919119565751e-01, 9.937587304286e-01, 9.961906796707e-01, |
| 194 | + 9.980604638107e-01, 9.993071849352e-01, 9.997068894803e-01, 9.998584399877e-01, |
| 195 | + 9.999233051918e-01, 9.999539525130e-01, 9.999805333611e-01, 9.999974439380e-01, |
| 196 | + 9.999992738509e-01, 9.999999125847e-01, 9.999999756646e-01, 9.999999964136e-01, |
| 197 | + 1.000000000000e+00 ] ) ] ) |
| 198 | + |
| 199 | + verify_chunk( self, chunk ) |
| 200 | + |
| 201 | +if __name__ == '__main__' : |
| 202 | + |
| 203 | + unittest.main() |
0 commit comments