File: loop_main.py

package info (click to toggle)
promod3 3.4.2%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 966,596 kB
  • sloc: cpp: 55,820; python: 18,058; makefile: 85; sh: 51
file content (39 lines) | stat: -rw-r--r-- 1,555 bytes parent folder | download | duplicates (3)
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
from ost import io, seq
from promod3 import loop

# load an example structure
prot = io.LoadPDB('data/1CRN.pdb')

# extract some additional information
seqres = ''.join([r.one_letter_code for r in prot.residues])
frag_pos = 35
frag_length = 9
frag_seq = seqres[frag_pos:frag_pos+frag_length]
frag_residues = prot.residues[frag_pos:frag_pos+frag_length]
ref_backbone = loop.BackboneList(frag_seq, frag_residues)
n_stem = prot.residues[frag_pos]
c_stem = prot.residues[frag_pos+frag_length-1]

# extract potential loops from fragment database based on geometry
frag_db = loop.LoadFragDB()
fragments = frag_db.SearchDB(n_stem, c_stem, frag_length)
print("Num. fragments found in FragDB: %d" % len(fragments))
# compare with reference
struct_db = loop.LoadStructureDB()
for i in range(len(fragments)):
    # get structure from structural database
    bb_list = struct_db.GetBackboneList(n_stem, c_stem,
                                        fragments[i], frag_seq)
    ca_rmsd = bb_list.CARMSD(ref_backbone, True)
    print("-> fragment %d has CA RMSD of %.3f" % (i, ca_rmsd))

# extract potential loops from fragment database based on sequence
fragger = loop.Fragger(frag_seq)
# for simplicity we just use a sequence similarity score
fragger.AddSeqSimParameters(1.0, seq.alg.BLOSUM62)
fragger.Fill(struct_db, 1.0, 5)
print("Num. fragments found in Fragger: %d" % len(fragger))
# compare fraggers with reference
for i in range(len(fragger)):
    ca_rmsd = fragger[i].CARMSD(ref_backbone, True)
    print("-> fragment %d has CA RMSD of %.3f" % (i, ca_rmsd))