34
34
from MDAnalysisTests .datafiles import (PSF , DCD , CRD , FASTA , ALIGN_BOUND ,
35
35
ALIGN_UNBOUND , PDB_helix )
36
36
from numpy .testing import (
37
- assert_almost_equal ,
38
37
assert_equal ,
39
38
assert_array_equal ,
40
- assert_array_almost_equal ,
41
39
assert_allclose ,
42
40
)
43
41
@@ -167,7 +165,7 @@ def test_subselection_alignto(self, universe, reference, subselection, expectati
167
165
168
166
with expectation :
169
167
rmsd = align .alignto (universe , reference , subselection = subselection )
170
- assert_almost_equal (rmsd [1 ], 0.0 , decimal = 9 )
168
+ assert_allclose (rmsd [1 ], 0.0 , rtol = 0 , atol = 1.5e- 9 )
171
169
172
170
def test_no_atom_masses (self , universe ):
173
171
#if no masses are present
@@ -199,25 +197,25 @@ def test_rmsd(self, universe, reference):
199
197
first_frame = bb .positions
200
198
universe .trajectory [- 1 ]
201
199
last_frame = bb .positions
202
- assert_almost_equal (rms .rmsd (first_frame , first_frame ), 0.0 , 5 ,
203
- err_msg = "error: rmsd(X,X) should be 0" )
200
+ assert_allclose (rms .rmsd (first_frame , first_frame ), 0.0 , rtol = 0 , atol = 1.5e- 5 ,
201
+ err_msg = "error: rmsd(X,X) should be 0" )
204
202
# rmsd(A,B) = rmsd(B,A) should be exact but spurious failures in the
205
203
# 9th decimal have been observed (see Issue 57 comment #1) so we relax
206
204
# the test to 6 decimals.
207
205
rmsd = rms .rmsd (first_frame , last_frame , superposition = True )
208
- assert_almost_equal (
209
- rms .rmsd (last_frame , first_frame , superposition = True ), rmsd , 6 ,
206
+ assert_allclose (
207
+ rms .rmsd (last_frame , first_frame , superposition = True ), rmsd , rtol = 0 , atol = 1.5e- 6 ,
210
208
err_msg = "error: rmsd() is not symmetric" )
211
- assert_almost_equal (rmsd , 6.820321761927005 , 5 ,
212
- err_msg = "RMSD calculation between 1st and last AdK frame gave wrong answer" )
209
+ assert_allclose (rmsd , 6.820321761927005 , rtol = 0 , atol = 1.5e- 5 ,
210
+ err_msg = "RMSD calculation between 1st and last AdK frame gave wrong answer" )
213
211
# test masses as weights
214
212
last_atoms_weight = universe .atoms .masses
215
213
A = universe .trajectory [0 ]
216
214
B = reference .trajectory [- 1 ]
217
215
rmsd = align .alignto (universe , reference , weights = 'mass' )
218
216
rmsd_sup_weight = rms .rmsd (A , B , weights = last_atoms_weight , center = True ,
219
217
superposition = True )
220
- assert_almost_equal (rmsd [1 ], rmsd_sup_weight , 6 )
218
+ assert_allclose (rmsd [1 ], rmsd_sup_weight , rtol = 0 , atol = 1.5e- 6 )
221
219
222
220
def test_rmsd_custom_mass_weights (self , universe , reference ):
223
221
last_atoms_weight = universe .atoms .masses
@@ -227,15 +225,15 @@ def test_rmsd_custom_mass_weights(self, universe, reference):
227
225
weights = reference .atoms .masses )
228
226
rmsd_sup_weight = rms .rmsd (A , B , weights = last_atoms_weight , center = True ,
229
227
superposition = True )
230
- assert_almost_equal (rmsd [1 ], rmsd_sup_weight , 6 )
228
+ assert_allclose (rmsd [1 ], rmsd_sup_weight , rtol = 0 , atol = 1.5e- 6 )
231
229
232
230
def test_rmsd_custom_weights (self , universe , reference ):
233
231
weights = np .zeros (universe .atoms .n_atoms )
234
232
ca = universe .select_atoms ('name CA' )
235
233
weights [ca .indices ] = 1
236
234
rmsd = align .alignto (universe , reference , select = 'name CA' )
237
235
rmsd_weights = align .alignto (universe , reference , weights = weights )
238
- assert_almost_equal (rmsd [1 ], rmsd_weights [1 ], 6 )
236
+ assert_allclose (rmsd [1 ], rmsd_weights [1 ], rtol = 0 , atol = 1.5e- 6 )
239
237
240
238
def test_AlignTraj_outfile_default (self , universe , reference , tmpdir ):
241
239
with tmpdir .as_cwd ():
@@ -285,8 +283,8 @@ def test_AlignTraj(self, universe, reference, tmpdir):
285
283
x = align .AlignTraj (universe , reference , filename = outfile ).run ()
286
284
fitted = mda .Universe (PSF , outfile )
287
285
288
- assert_almost_equal (x .results .rmsd [0 ], 6.9290 , decimal = 3 )
289
- assert_almost_equal (x .results .rmsd [- 1 ], 5.2797e-07 , decimal = 3 )
286
+ assert_allclose (x .results .rmsd [0 ], 6.9290 , rtol = 0 , atol = 1.5e- 3 )
287
+ assert_allclose (x .results .rmsd [- 1 ], 5.2797e-07 , rtol = 0 , atol = 1.5e- 3 )
290
288
291
289
# RMSD against the reference frame
292
290
# calculated on Mac OS X x86 with MDA 0.7.2 r689
@@ -299,8 +297,8 @@ def test_AlignTraj_weighted(self, universe, reference, tmpdir):
299
297
x = align .AlignTraj (universe , reference ,
300
298
filename = outfile , weights = 'mass' ).run ()
301
299
fitted = mda .Universe (PSF , outfile )
302
- assert_almost_equal (x .results .rmsd [0 ], 0 , decimal = 3 )
303
- assert_almost_equal (x .results .rmsd [- 1 ], 6.9033 , decimal = 3 )
300
+ assert_allclose (x .results .rmsd [0 ], 0 , rtol = 0 , atol = 1.5e- 3 )
301
+ assert_allclose (x .results .rmsd [- 1 ], 6.9033 , rtol = 0 , atol = 1.5e- 3 )
304
302
305
303
self ._assert_rmsd (reference , fitted , 0 , 0.0 ,
306
304
weights = universe .atoms .masses )
@@ -319,16 +317,16 @@ def test_AlignTraj_custom_weights(self, universe, reference, tmpdir):
319
317
x_weights = align .AlignTraj (universe , reference ,
320
318
filename = outfile , weights = weights ).run ()
321
319
322
- assert_array_almost_equal (x .results .rmsd , x_weights .results .rmsd )
320
+ assert_allclose (x .results .rmsd , x_weights .results .rmsd , rtol = 0 , atol = 1.5e-7 )
323
321
324
322
def test_AlignTraj_custom_mass_weights (self , universe , reference , tmpdir ):
325
323
outfile = str (tmpdir .join ('align_test.dcd' ))
326
324
x = align .AlignTraj (universe , reference ,
327
325
filename = outfile ,
328
326
weights = reference .atoms .masses ).run ()
329
327
fitted = mda .Universe (PSF , outfile )
330
- assert_almost_equal (x .results .rmsd [0 ], 0 , decimal = 3 )
331
- assert_almost_equal (x .results .rmsd [- 1 ], 6.9033 , decimal = 3 )
328
+ assert_allclose (x .results .rmsd [0 ], 0 , rtol = 0 , atol = 1.5e- 3 )
329
+ assert_allclose (x .results .rmsd [- 1 ], 6.9033 , rtol = 0 , atol = 1.5e- 3 )
332
330
333
331
self ._assert_rmsd (reference , fitted , 0 , 0.0 ,
334
332
weights = universe .atoms .masses )
@@ -348,8 +346,8 @@ def test_AlignTraj_in_memory(self, universe, reference, tmpdir):
348
346
x = align .AlignTraj (universe , reference , filename = outfile ,
349
347
in_memory = True ).run ()
350
348
assert x .filename is None
351
- assert_almost_equal (x .results .rmsd [0 ], 6.9290 , decimal = 3 )
352
- assert_almost_equal (x .results .rmsd [- 1 ], 5.2797e-07 , decimal = 3 )
349
+ assert_allclose (x .results .rmsd [0 ], 6.9290 , rtol = 0 , atol = 1.5e- 3 )
350
+ assert_allclose (x .results .rmsd [- 1 ], 5.2797e-07 , rtol = 0 , atol = 1.5e- 3 )
353
351
354
352
# check in memory trajectory
355
353
self ._assert_rmsd (reference , universe , 0 , 6.929083044751061 )
@@ -359,7 +357,7 @@ def _assert_rmsd(self, reference, fitted, frame, desired, weights=None):
359
357
fitted .trajectory [frame ]
360
358
rmsd = rms .rmsd (reference .atoms .positions , fitted .atoms .positions ,
361
359
superposition = True )
362
- assert_almost_equal (rmsd , desired , decimal = 5 ,
360
+ assert_allclose (rmsd , desired , rtol = 0 , atol = 1.5e- 5 ,
363
361
err_msg = "frame {0:d} of fit does not have "
364
362
"expected RMSD" .format (frame ))
365
363
@@ -394,8 +392,8 @@ def test_alignto_partial_universe(self, universe, reference):
394
392
segB_free .translate (segB_bound .centroid () - segB_free .centroid ())
395
393
396
394
align .alignto (u_free , u_bound , select = selection )
397
- assert_array_almost_equal (segB_bound .positions , segB_free .positions ,
398
- decimal = 3 )
395
+ assert_allclose (segB_bound .positions , segB_free .positions ,
396
+ rtol = 0 , atol = 1.5e- 3 )
399
397
400
398
401
399
def _get_aligned_average_positions (ref_files , ref , select = "all" , ** kwargs ):
@@ -438,31 +436,30 @@ def test_average_structure_deprecated_attrs(self, universe, reference):
438
436
def test_average_structure (self , universe , reference ):
439
437
ref , rmsd = _get_aligned_average_positions (self .ref_files , reference )
440
438
avg = align .AverageStructure (universe , reference ).run ()
441
- assert_almost_equal (avg .results .universe .atoms .positions , ref ,
442
- decimal = 4 )
443
- assert_almost_equal (avg .results .rmsd , rmsd )
439
+ assert_allclose (avg .results .universe .atoms .positions , ref , rtol = 0 , atol = 1.5e-4 )
440
+ assert_allclose (avg .results .rmsd , rmsd , rtol = 0 , atol = 1.5e-7 )
444
441
445
442
def test_average_structure_mass_weighted (self , universe , reference ):
446
443
ref , rmsd = _get_aligned_average_positions (self .ref_files , reference , weights = 'mass' )
447
444
avg = align .AverageStructure (universe , reference , weights = 'mass' ).run ()
448
- assert_almost_equal (avg .results .universe .atoms .positions , ref ,
449
- decimal = 4 )
450
- assert_almost_equal (avg .results .rmsd , rmsd )
445
+ assert_allclose (avg .results .universe .atoms .positions , ref ,
446
+ rtol = 0 , atol = 1.5e- 4 )
447
+ assert_allclose (avg .results .rmsd , rmsd , rtol = 0 , atol = 1.5e-7 )
451
448
452
449
def test_average_structure_select (self , universe , reference ):
453
450
select = 'protein and name CA and resid 3-5'
454
451
ref , rmsd = _get_aligned_average_positions (self .ref_files , reference , select = select )
455
452
avg = align .AverageStructure (universe , reference , select = select ).run ()
456
- assert_almost_equal (avg .results .universe .atoms .positions , ref ,
457
- decimal = 4 )
458
- assert_almost_equal (avg .results .rmsd , rmsd )
453
+ assert_allclose (avg .results .universe .atoms .positions , ref ,
454
+ rtol = 0 , atol = 1.5e- 4 )
455
+ assert_allclose (avg .results .rmsd , rmsd , rtol = 0 , atol = 1.5e-7 )
459
456
460
457
def test_average_structure_no_ref (self , universe ):
461
458
ref , rmsd = _get_aligned_average_positions (self .ref_files , universe )
462
459
avg = align .AverageStructure (universe ).run ()
463
- assert_almost_equal (avg .results .universe .atoms .positions , ref ,
464
- decimal = 4 )
465
- assert_almost_equal (avg .results .rmsd , rmsd )
460
+ assert_allclose (avg .results .universe .atoms .positions , ref ,
461
+ rtol = 0 , atol = 1.5e- 4 )
462
+ assert_allclose (avg .results .rmsd , rmsd , rtol = 0 , atol = 1.5e-7 )
466
463
467
464
def test_average_structure_no_msf (self , universe ):
468
465
avg = align .AverageStructure (universe ).run ()
@@ -485,15 +482,15 @@ def test_average_structure_ref_frame(self, universe):
485
482
universe .trajectory [0 ]
486
483
ref , rmsd = _get_aligned_average_positions (self .ref_files , u )
487
484
avg = align .AverageStructure (universe , ref_frame = ref_frame ).run ()
488
- assert_almost_equal (avg .results .universe .atoms .positions , ref ,
489
- decimal = 4 )
490
- assert_almost_equal (avg .results .rmsd , rmsd )
485
+ assert_allclose (avg .results .universe .atoms .positions , ref ,
486
+ rtol = 0 , atol = 1.5e- 4 )
487
+ assert_allclose (avg .results .rmsd , rmsd , rtol = 0 , atol = 1.5e-7 )
491
488
492
489
def test_average_structure_in_memory (self , universe ):
493
490
avg = align .AverageStructure (universe , in_memory = True ).run ()
494
491
reference_coordinates = universe .trajectory .timeseries ().mean (axis = 1 )
495
- assert_almost_equal (avg .results .universe .atoms .positions ,
496
- reference_coordinates , decimal = 4 )
492
+ assert_allclose (avg .results .universe .atoms .positions ,
493
+ reference_coordinates , rtol = 0 , atol = 1.5e- 4 )
497
494
assert avg .filename is None
498
495
499
496
0 commit comments