mirror of
https://github.com/schrodinger/pymol-open-source.git
synced 2026-06-04 20:04:21 +08:00
103 lines
3.2 KiB
Python
103 lines
3.2 KiB
Python
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)
|
|
|