1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
from pymol import cmd, testing, stored
from chempy import cpv
class TestFitting(testing.PyMOLTestCase):
def testAlign(self):
cmd.load(self.datafile("1oky-frag.pdb"), "m1")
cmd.load(self.datafile("1t46-frag.pdb"), "m2")
cycles = 2
r = cmd.align("m1", "m2", object="aln", cycles=cycles, transform=0)
self.assertAlmostEqual(r[0], 1.52563, delta=1e-4)
self.assertEqual(r[1], 177)
self.assertEqual(r[1], cmd.count_atoms("aln") / 2)
self.assertEqual(r[2], cycles)
def testAlignto(self):
cmd.fragment("gly", "m1")
cmd.copy("m2", "m1")
cmd.alignto(method="fit", mobile_state=1, target_state=1)
def testCealign(self):
cmd.load(self.datafile("1oky-frag.pdb"), "m1")
cmd.load(self.datafile("1t46-frag.pdb"), "m2")
r = cmd.cealign("m2", "m1", object="aln")
self.assertAlmostEqual(r["RMSD"], 1.90375, delta=1e-4)
alen = r["alignment_length"]
self.assertEqual(alen, 40)
self.assertEqual(alen, cmd.count_atoms("aln") / 2)
def testFit(self):
cmd.fragment("gly", "m1")
cmd.create("m2", "m1")
rms = cmd.fit("m1", "m2")
self.assertEqual(rms, 0.0)
rms = cmd.rms("m1", "m2")
self.assertEqual(rms, 0.0)
rms = cmd.rms_cur("m1", "m2")
self.assertEqual(rms, 0.0)
def testIntraFit(self):
cmd.fragment("gly", "m1")
cmd.create("m1", "m1", 1, 2)
rms_list = cmd.intra_fit("m1")
self.assertArrayEqual(rms_list, [-1.0, 0.0])
rms_list = cmd.intra_rms("m1")
self.assertArrayEqual(rms_list, [-1.0, 0.0])
rms_list = cmd.intra_rms_cur("m1")
self.assertArrayEqual(rms_list, [-1.0, 0.0])
def testIntraRms(self):
# see intra_fit
pass
def testIntraRmsCur(self):
# see intra_fit
pass
def testPairFit(self):
cmd.fragment('trp')
cmd.fragment('his')
# 1 atom
sele = ('trp and guide', 'his and guide')
pos = list(map(cmd.get_atom_coords, sele))
vec = cpv.sub(*pos)
mat_ref = [
1.0, 0.0, 0.0, -vec[0],
0.0, 1.0, 0.0, -vec[1],
0.0, 0.0, 1.0, -vec[2],
0.0, 0.0, 0.0, 1.0]
rms = cmd.pair_fit(*sele)
self.assertEqual(rms, 0.0)
mat = cmd.get_object_matrix('trp')
self.assertArrayEqual(mat, mat_ref, 1e-4)
# 2 atoms
sele += ('trp & name CB', 'his & name CB')
rms = cmd.pair_fit(*sele)
self.assertAlmostEqual(rms, 0.0082, delta=1e-4)
# 4 atoms
sele += ('trp & name CG', 'his & name CG',
'trp & name CD1', 'his & name CD2')
rms = cmd.pair_fit(*sele)
self.assertAlmostEqual(rms, 0.0713, delta=1e-4)
def testRms(self):
# see fit
pass
def testRmsCur(self):
# see fit
pass
def testSuper(self):
cmd.load(self.datafile("1oky-frag.pdb"), "m1")
cmd.load(self.datafile("1t46-frag.pdb"), "m2")
r = cmd.super("m1", "m2", object="aln")
self.assertAlmostEqual(r[0], 0.9667, delta=1e-4)
self.assertEqual(r[1], 172)
self.assertEqual(r[1], cmd.count_atoms("aln") / 2)
|