-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathap_select_chains_from_pdb.py
More file actions
111 lines (101 loc) · 3.03 KB
/
ap_select_chains_from_pdb.py
File metadata and controls
111 lines (101 loc) · 3.03 KB
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
103
104
105
106
107
108
109
110
111
import sys
sys.path.append('/Users/adawid/PROJECTS/own/IDP_LLPS/UBQL/code/pyprot')
import argparse
from PDB_menager import PDB, read_pdb
def ap_select_chains_from_pdb(filename, output=None, model='0', chain='0'):
s = PDB(read_pdb(filename, model, chain, []))
s.write_pdb()
if output:
outfile = open(output, 'w')
else:
outfile = sys.stdout
outfile.write(" NAME:")
outfile.write(str(filename[:4]+chain))
outfile.write("\n\n MISS:")
for i in s.missing:
st1=i[0]+" "+str(i[2])+" "+i[1]+","
outfile.write(st1)
outfile.write("\n\nNON_A:")
for i in s.non_standard_resi():
if i[3] == chain:
st2=i[0]+" "+i[2]+" "+i[3]+" "+i[1]+","
outfile.write(st2)
outfile.write("\n\nHETAT:")
for ii in s.header["HET "]:
i = ii.split()
if len(i) == 4:
st = i[0]+" "+i[1]+" "+i[2]+" "+i[3]+","
elif len(i) == 3:
st = i[0]+" "+i[1][0]+" "+i[1][1:]+" "+i[2]+","
outfile.write(st)
outfile.write("\n\nCIS_P:")
for ii in s.header["CISPEP"]:
i = ii.split()
st = i[0]+" "+i[1].upper()+" "+i[2]+" "+i[3]+" "+i[4].upper()+" "+i[5]+","
outfile.write(st)
st3 = s.pdb_seq[0]
st4 = s.out_seq[0]
st5 = s.pdb_ss[0]
outfile.write("\n\nSEQ_H:")
outfile.write(st3)
outfile.write("\n\nSEQ_O:")
outfile.write(st4)
outfile.write("\n\n SS:")
outfile.write(st5)
outfile.write("\n\n SIZE:")
outfile.write(str(len(st4)))
outfile.write("\n\n RES:")
if len(s.header["REMARK 2"]):
outfile.write(s.header["REMARK 2"][1].split()[1])
outfile.write("\n\n CATH:")
outfile.write(s.ss_type())
outfile.write("\n\nTITLE:")
outfile.write(s.header["TITLE"][0])
outfile.write("\n\nSITES:")
outfile.write(s.binding_sites())
outfile.write("\n\n SITE:")
sites = s.binding_resi()
for site in sites:
outfile.write(site[0])
for res in site[1]:
outfile.write(","+res[0]+" "+res[1]+" "+res[2])
outfile.write(";")
if __name__ == '__main__':
parser = argparse.ArgumentParser(
prog='ap_select_chains_from_pdb',
description=""" """,
formatter_class=argparse.RawTextHelpFormatter,
epilog=''
)
parser.add_argument(
'-f', '--filename',
help='input pdb file',
metavar='PDB',
dest='pdb',
required=True
)
parser.add_argument(
'-o', '--output-pdb',
help='save output pdb [default stdout]',
default=None,
metavar='OUTPUT',
dest='out'
)
parser.add_argument(
'-m', '--model-id',
help='chosen model',
metavar='MODEL',
type=str,
default='0',
dest='model'
)
parser.add_argument(
'-c', '--chain-id',
help='chosen chain',
metavar='CHAIN',
type=str,
default='0',
dest='chain'
)
args = parser.parse_args()
ap_select_chains_from_pdb(args.pdb, args.out, args.model, args.chain)