1   
  2   
  3   
  4   
  5   
  6   
  7   
  8   
  9   
 10   
 11   
 12   
 13   
 14   
 15   
 16   
 17   
 18   
 19   
 20   
 21   
 22   
 23  from numpy import array 
 24  from unittest import TestCase 
 25   
 26   
 27  from data_store.align_tensor import AlignTensorData 
 28  from pipe_control.align_tensor import kappa 
 29  from lib.errors import RelaxError 
 30   
 31   
 33      """Unit tests for the data.align_tensor relax module.""" 
 34   
 36          """Function for calculating the alignment tensor objects.""" 
 37   
 38           
 39          Azz = - Axx - Ayy 
 40          Axxyy = Axx - Ayy 
 41   
 42           
 43          tensor = array([[ Axx, Axy, Axz], 
 44                          [ Axy, Ayy, Ayz], 
 45                          [ Axz, Ayz, Azz]]) 
 46   
 47           
 48          return Azz, Axxyy, tensor 
  49   
 50   
 52          """Set 'self.align_data' to an empty instance of the AlignTensorData class.""" 
 53   
 54          self.align_data = AlignTensorData('test') 
  55   
 56   
 58          """Test the appending of Monte Carlo simulation alignment tensor parameters. 
 59   
 60          The following parameters will be appended to empty lists: 
 61              - Axx: -16.6278 Hz 
 62              - Ayy: 6.13037 Hz 
 63              - Axy: 7.65639 Hz 
 64              - Axz: -1.89157 Hz 
 65              - Ayz: 19.2561 Hz 
 66          """ 
 67   
 68           
 69          Axx = -16.6278 / kappa() * 1.02e-10**3 
 70          Ayy = 6.13037 / kappa() * 1.02e-10**3 
 71          Axy = 7.65639 / kappa() * 1.02e-10**3 
 72          Axz = -1.89157 / kappa() * 1.02e-10**3 
 73          Ayz = 19.2561 / kappa() * 1.02e-10**3 
 74   
 75           
 76          self.align_data.set_sim_num(1) 
 77   
 78           
 79          self.align_data.set(param='Axx', value=Axx, category='sim', sim_index=0) 
 80          self.align_data.set(param='Ayy', value=Ayy, category='sim', sim_index=0) 
 81          self.align_data.set(param='Axy', value=Axy, category='sim', sim_index=0) 
 82          self.align_data.set(param='Axz', value=Axz, category='sim', sim_index=0) 
 83          self.align_data.set(param='Ayz', value=Ayz, category='sim', sim_index=0) 
 84   
 85           
 86          self.assertEqual(self.align_data.Axx_sim[0], Axx) 
 87          self.assertEqual(self.align_data.Ayy_sim[0], Ayy) 
 88          self.assertEqual(self.align_data.Axy_sim[0], Axy) 
 89          self.assertEqual(self.align_data.Axz_sim[0], Axz) 
 90          self.assertEqual(self.align_data.Ayz_sim[0], Ayz) 
 91   
 92           
 93          Azz, Axxyy, tensor = self.calc_objects(Axx, Ayy, Axy, Axz, Ayz) 
 94   
 95           
 96          self.assertEqual(self.align_data.Azz_sim[0], Azz) 
 97          self.assertEqual(self.align_data.Axxyy_sim[0], Axxyy) 
 98   
 99           
100          self.assertEqual(self.align_data.A_sim[0].tostring(), tensor.tostring()) 
 101   
102   
104          """Test that the Szz parameter cannot be set.""" 
105   
106           
107          self.assertRaises(RelaxError, setattr, self.align_data, 'Szz', -23.0) 
108   
109           
110          self.assert_(not hasattr(self.align_data, 'Szz')) 
 111   
112   
114          """Test the setting of spheroidal diffusion tensor parameter errors. 
115   
116          The following parameter errors will be set: 
117              - Axx: 0.3 Hz 
118              - Ayy: 0.5 Hz 
119              - Axy: 0.4 Hz 
120              - Axz: 0.1 Hz 
121              - Ayz: 0.2 Hz 
122          """ 
123   
124           
125          Axx = 0.3 / kappa() * 1.02e-10**3 
126          Ayy = 0.5 / kappa() * 1.02e-10**3 
127          Axy = 0.4 / kappa() * 1.02e-10**3 
128          Axz = 0.1 / kappa() * 1.02e-10**3 
129          Ayz = 0.2 / kappa() * 1.02e-10**3 
130   
131           
132          self.align_data.set(param='Axx', value=Axx, category='err') 
133          self.align_data.set(param='Ayy', value=Ayy, category='err') 
134          self.align_data.set(param='Axy', value=Axy, category='err') 
135          self.align_data.set(param='Axz', value=Axz, category='err') 
136          self.align_data.set(param='Ayz', value=Ayz, category='err') 
137   
138           
139          self.assertEqual(self.align_data.Axx_err, Axx) 
140          self.assertEqual(self.align_data.Ayy_err, Ayy) 
141          self.assertEqual(self.align_data.Axy_err, Axy) 
142          self.assertEqual(self.align_data.Axz_err, Axz) 
143          self.assertEqual(self.align_data.Ayz_err, Ayz) 
144   
145           
146          Azz, Axxyy, tensor = self.calc_objects(Axx, Ayy, Axy, Axz, Ayz) 
147   
148           
149          self.assertEqual(self.align_data.Azz_err, Azz) 
150          self.assertEqual(self.align_data.Axxyy_err, Axxyy) 
151   
152           
153          self.assertEqual(self.align_data.A_err.tostring(), tensor.tostring()) 
 154   
155   
157          """Test the setting of alignment tensor parameters. 
158   
159          The following parameters will be set: 
160              - Axx: -16.6278 Hz 
161              - Ayy: 6.13037 Hz 
162              - Axy: 7.65639 Hz 
163              - Axz: -1.89157 Hz 
164              - Ayz: 19.2561 Hz 
165          """ 
166   
167           
168          Axx = -16.6278 / kappa() * 1.02e-10**3 
169          Ayy = 6.13037 / kappa() * 1.02e-10**3 
170          Axy = 7.65639 / kappa() * 1.02e-10**3 
171          Axz = -1.89157 / kappa() * 1.02e-10**3 
172          Ayz = 19.2561 / kappa() * 1.02e-10**3 
173   
174           
175          self.align_data.set(param='Axx', value=Axx) 
176          self.align_data.set(param='Ayy', value=Ayy) 
177          self.align_data.set(param='Axy', value=Axy) 
178          self.align_data.set(param='Axz', value=Axz) 
179          self.align_data.set(param='Ayz', value=Ayz) 
180   
181           
182          self.assertEqual(self.align_data.Axx, Axx) 
183          self.assertEqual(self.align_data.Ayy, Ayy) 
184          self.assertEqual(self.align_data.Axy, Axy) 
185          self.assertEqual(self.align_data.Axz, Axz) 
186          self.assertEqual(self.align_data.Ayz, Ayz) 
187   
188           
189          Azz, Axxyy, tensor = self.calc_objects(Axx, Ayy, Axy, Axz, Ayz) 
190   
191           
192          self.assertEqual(self.align_data.Azz, Azz) 
193          self.assertEqual(self.align_data.Axxyy, Axxyy) 
194   
195           
196          self.assertEqual(self.align_data.A.tostring(), tensor.tostring()) 
 197   
198   
200          """Test the setting of Monte Carlo simulation alignment tensor parameters. 
201   
202          Firstly the following parameters will be appended to empty lists: 
203              - Axx: -16.6278 Hz 
204              - Ayy: 6.13037 Hz 
205              - Axy: 7.65639 Hz 
206              - Axz: -1.89157 Hz 
207              - Ayz: 19.2561 Hz 
208   
209          These MC sim values will then be explicity overwritten by setting the first elements of the 
210          lists to: 
211              - Axx: 0.3 Hz 
212              - Ayy: 0.5 Hz 
213              - Axy: 0.4 Hz 
214              - Axz: 0.1 Hz 
215              - Ayz: 0.2 Hz 
216          """ 
217   
218           
219          self.align_data.set_sim_num(1) 
220   
221           
222          self.align_data.set(param='Axx', value=-16.6278 / kappa() * 1.02e-10**3, category='sim', sim_index=0) 
223          self.align_data.set(param='Ayy', value=6.13037 / kappa() * 1.02e-10**3, category='sim', sim_index=0) 
224          self.align_data.set(param='Axy', value=7.65639 / kappa() * 1.02e-10**3, category='sim', sim_index=0) 
225          self.align_data.set(param='Axz', value=-1.89157 / kappa() * 1.02e-10**3, category='sim', sim_index=0) 
226          self.align_data.set(param='Ayz', value=19.2561 / kappa() * 1.02e-10**3, category='sim', sim_index=0) 
227   
228           
229          Axx = 0.3 / kappa() * 1.02e-10**3 
230          Ayy = 0.5 / kappa() * 1.02e-10**3 
231          Axy = 0.4 / kappa() * 1.02e-10**3 
232          Axz = 0.1 / kappa() * 1.02e-10**3 
233          Ayz = 0.2 / kappa() * 1.02e-10**3 
234   
235           
236          self.align_data.set(param='Axx', value=Axx, category='sim', sim_index=0) 
237          self.align_data.set(param='Ayy', value=Ayy, category='sim', sim_index=0) 
238          self.align_data.set(param='Axy', value=Axy, category='sim', sim_index=0) 
239          self.align_data.set(param='Axz', value=Axz, category='sim', sim_index=0) 
240          self.align_data.set(param='Ayz', value=Ayz, category='sim', sim_index=0) 
241   
242           
243          self.assertEqual(self.align_data.Axx_sim[0], Axx) 
244          self.assertEqual(self.align_data.Ayy_sim[0], Ayy) 
245          self.assertEqual(self.align_data.Axy_sim[0], Axy) 
246          self.assertEqual(self.align_data.Axz_sim[0], Axz) 
247          self.assertEqual(self.align_data.Ayz_sim[0], Ayz) 
248   
249           
250          Azz, Axxyy, tensor = self.calc_objects(Axx, Ayy, Axy, Axz, Ayz) 
251   
252           
253          self.assertEqual(self.align_data.Azz_sim[0], Azz) 
254          self.assertEqual(self.align_data.Axxyy_sim[0], Axxyy) 
255   
256           
257          self.assertEqual(self.align_data.A_sim[0].tostring(), tensor.tostring()) 
 258   
259   
261          """Test the setting of the Axx parameter.""" 
262   
263           
264          self.align_data.set(param='Axx', value=0.0001) 
265   
266           
267          self.assert_(hasattr(self.align_data, 'Axx')) 
268          self.assertEqual(self.align_data.Axx, 0.0001) 
  269