-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprocessRecs.py
61 lines (45 loc) · 1.5 KB
/
processRecs.py
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
# Script for extracting good docking recs from multi-pdb using tab-separated list of graded poses
# Written by Corey Taylor
# Date: 10.10.17
# NOTE: Ensure input list has two tabs separating fields or script won't work!
import os
import sys
import argparse
import csv
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('--list', required=True, help='List of graded poses')
parser.add_argument('--pdb', required=True, help='pdb file')
opts = parser.parse_args()
return opts
def main():
opts = parse_args()
# Open list input file
with open(opts.list, 'r') as f:
c = csv.reader(f, delimiter='\t')
for row in c: # read in rows
if row[2] != '': # only keep those with grade
posenum = find_pose(row[1])
print 'List file is "', opts.list
print 'Input file file is "', opts.pdb
def find_pose(posenum):
# Open sdf
opts = parse_args()
with open(opts.pdb, 'r') as pdb:
p = csv.reader(pdb, delimiter=' ', quoting=csv.QUOTE_MINIMAL)
for row in p: # read in rows
fh = open("GoodRecs.pdb", "a")
posewriter = csv.writer(fh, delimiter=' ', quoting=csv.QUOTE_MINIMAL)
for row in p: # read in rows
if posenum in row:
posewriter.writerow(row)
for row in p: # read in rows
posewriter.writerow(row)
if len(row) == 1 and row[0] == 'ENDMDL': # break at end of pose
break
else:
break
fh.close()
return posenum
if __name__ == "__main__":
main()