22
33from . import tempdir as td
44
5+ import sys
6+
57import py .path
68
79import pybol
2325
2426class TestDihedral (object ):
2527 DG48910_mean = - 172.9849512527183
26- DG491011_mean = - 3.7300197060478695
27- DG48910_var = 1490.6576365537262
28- DG491011_var = 128.3805265432388
28+ DG491011_mean = 177.74725233051953
29+ DG48910_var = 0.20311120667628546
30+ DG491011_var = 0.006976126708773456
2931
3032 def setup (self ):
3133 self .tmpdir = td .TempDir ()
@@ -37,56 +39,61 @@ def teardown(self):
3739 self .tmpdir .dissolve ()
3840
3941 def test_dataframe (self ):
40- dh1 = self .Ens .select_atoms ('name C4 or name C17 or name S2 or name N3' )
42+ dh1 = self .Ens .select_atoms ('name C4' , ' name C17' , ' name S2' , ' name N3' )
4143 dh_run = DihedralAnalysis ([dh1 ]).run (start = 0 , stop = 4 , step = 1 )
4244
4345 results = dh_run .results
4446
45- assert results ['selection' ][0 ] == 'S2-N3- C4-C17'
47+ assert results ['selection' ][0 ] == 'C4-C17-S2-N3 '
4648 for s in results ['solvent' ]:
4749 assert s == 'water'
4850 for i in results ['interaction' ][:12 ]:
4951 assert i == 'Coulomb'
5052
5153 def test_selection_error (self ):
52- dh1 = self .Ens .select_atoms ('name C17 or name S2 or name N3' )
54+ dh1 = self .Ens .select_atoms ('name C17' , ' name S2' , ' name N3' )
5355 with pytest .raises (SelectionError ):
5456 dh_run = DihedralAnalysis ([dh1 ]).run (start = 0 , stop = 4 , step = 1 )
5557
5658 def test_results_recursive1 (self ):
57- dh1 = self .Ens .select_atoms ('name C11 or name C10 or name C9 or name C4' )
58- dh2 = self .Ens .select_atoms ('name C11 or name C10 or name C9 or name C4' )
59+ dh1 = self .Ens .select_atoms ('name C11' , ' name C10' , ' name C9' , ' name C4' )
60+ dh2 = self .Ens .select_atoms ('name C11' , ' name C10' , ' name C9' , ' name C4' )
5961
6062 dh_run1 = DihedralAnalysis ([dh1 ]).run (start = 0 , stop = 4 , step = 1 )
6163 dh_run2 = DihedralAnalysis ([dh2 ]).run (start = 0 , stop = 4 , step = 1 )
6264 assert len (dh_run1 .results ['dihedral' ]) == len (dh_run2 .results ['dihedral' ])
6365 for i in range (len (dh_run1 .results ['dihedral' ])):
6466 assert dh_run1 .results ['dihedral' ][i ] == dh_run2 .results ['dihedral' ][i ]
6567
68+ @pytest .mark .skipif (sys .version_info < (3 , 8 ), reason = "scipy circvar gives wrong answers" )
6669 def test_results_recursive2 (self ):
67- dh1 = self .Ens .select_atoms ('name C11 or name C10 or name C9 or name C4' )
68- dh2 = self .Ens .select_atoms ('name C8 or name C4 or name C9 or name C10' )
70+ dh1 = self .Ens .select_atoms ('name C11' , ' name C10' , ' name C9' , ' name C4' )
71+ dh2 = self .Ens .select_atoms ('name C8' , ' name C4' , ' name C9' , ' name C10' )
6972
7073 dh_run = DihedralAnalysis ([dh1 , dh2 ]).run (start = 0 , stop = 4 , step = 1 )
7174
72- dh1_result = dh_run .results .loc [dh_run .results ['selection' ] == 'C4-C9- C10-C11 ' ]['dihedral' ]
73- dh2_result = dh_run .results .loc [dh_run .results ['selection' ] == 'C4-C8 -C9-C10' ]['dihedral' ]
75+ dh1_result = dh_run .results .loc [dh_run .results ['selection' ] == 'C11- C10-C9-C4 ' ]['dihedral' ]
76+ dh2_result = dh_run .results .loc [dh_run .results ['selection' ] == 'C8-C4 -C9-C10' ]['dihedral' ]
7477
7578 dh1_mean = circmean (dh1_result , high = 180 , low = - 180 )
7679 dh2_mean = circmean (dh2_result , high = 180 , low = - 180 )
7780 dh1_var = circvar (dh1_result , high = 180 , low = - 180 )
7881 dh2_var = circvar (dh2_result , high = 180 , low = - 180 )
7982
80- assert_almost_equal (self .DG48910_mean , dh1_mean , 6 )
81- assert_almost_equal (self .DG48910_var , dh1_var , 6 )
82- assert_almost_equal (self .DG491011_mean , dh2_mean , 6 )
83- assert_almost_equal (self .DG491011_var , dh2_var , 6 )
83+ assert_almost_equal (dh1_mean , self .DG48910_mean , 6 )
84+ assert_almost_equal (dh1_var , self .DG48910_var , 6 )
85+ assert_almost_equal (dh2_mean , self .DG491011_mean , 6 )
86+ assert_almost_equal (dh2_var , self .DG491011_var , 6 )
8487
8588 def test_ValueError_different_ensemble (self ):
8689 other = Ensemble (dirname = self .tmpdir .name , solvents = ['water' ])
87- dh1 = self .Ens .select_atoms ('name C11 or name C10 or name C9 or name C4' )
88- dh2 = other .select_atoms ('name C8 or name C4 or name C9 or name C10' )
90+ dh1 = self .Ens .select_atoms ('name C11' , ' name C10' , ' name C9' , ' name C4' )
91+ dh2 = other .select_atoms ('name C8' , ' name C4' , ' name C9' , ' name C10' )
8992 with pytest .raises (ValueError ,
9093 match = 'Dihedral selections from different Ensembles, ' ):
9194 DihedralAnalysis ([dh1 , dh2 ])
9295
96+ def test_single_universe (self ):
97+ dh = self .Ens .select_atoms ('name C4' , 'name C17' , 'name S2' , 'name N3' )
98+ with pytest .raises (NotImplementedError ):
99+ DihedralAnalysis ([dh ])._single_universe ()
0 commit comments