File: fitting.py

package info (click to toggle)
pymol 3.1.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 74,084 kB
  • sloc: cpp: 482,660; python: 89,328; ansic: 29,512; javascript: 6,792; sh: 84; makefile: 25
file content (102 lines) | stat: -rw-r--r-- 3,258 bytes parent folder | download
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)