annotate mol2gspan.py @ 0:18eb78773d87 draft

Uploaded
author bgruening
date Tue, 29 Oct 2013 11:15:59 -0400
parents
children 5f97004c7f57
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
1 #!/usr/bin/env python
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
2
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
3 """
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
4 Converts a SD-file to a GSPAN file.
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
5 """
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
6
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
7
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
8 import os, sys
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
9 import argparse
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
10
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
11 def main( args ):
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
12
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
13 begin = False
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
14 iid = 0
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
15 graph_counter = 1
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
16
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
17 for line in args.infile:
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
18 if line.rstrip():
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
19 if line.strip().endswith('END'):
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
20 begin = False
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
21 elif line.strip() == '$$$$':
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
22 graph_counter += 1
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
23 iid = 0
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
24 else:
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
25 # found header line, like: 21 21 0 0 0 0 0 0 0 0999 V2000
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
26 if len(line.split()) >= 5 and line.split()[-1] == 'V2000':
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
27 args.outfile.write('t # id %s\n' % graph_counter)
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
28 begin=True
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
29 continue
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
30 # connection or coordinate/atom table
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
31 if len(line.split()) >= 4 and begin:
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
32 # coordinate/atom table
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
33 if not line.startswith('M'):
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
34 if line.split()[3].isalpha() or line.split()[3] == '*':
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
35 args.outfile.write( 'v %s %s \n' % (iid, line.split()[3]) )
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
36 iid += 1
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
37 else:
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
38 #connection table
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
39 id, node, edge, trash = line.split(None, 3)
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
40 args.outfile.write( 'e %s %s %s\n' % ( int(id) - 1 , int(node) -1, edge ) )
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
41
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
42 if __name__ == "__main__":
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
43 parser = argparse.ArgumentParser()
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
44 parser.add_argument('--infile', nargs='?', type=argparse.FileType('r'),
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
45 default=sys.stdin, help="Specify one or more input files")
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
46 parser.add_argument('--outfile', type=argparse.FileType('w'),
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
47 default=sys.stdout, help="Specify one output file")
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
48 args = parser.parse_args()
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
49 main( args )