annotate mol2gspan.py @ 2:ec22d245d224 draft default tip

Uploaded
author bgruening
date Thu, 17 Apr 2014 08:46:52 -0400
parents 5f97004c7f57
children
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
1
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
7 import os
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
8 import sys
0
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
9 import argparse
1
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
10 import openbabel
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
11 import pybel
0
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
12
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
13 def main( args ):
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
14
1
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
15 for infile in args.infile:
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
16 file_extension = args.format or os.path.splitext( infile )[-1].lstrip('.')
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
17
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
18 if not args.format and file_extension not in ['smi', 'sdf', 'inchi', 'mol']:
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
19 sys.exit('Could not guess the format from the file extension please specify with the --format option.')
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
20
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
21 molecules = pybel.readfile(file_extension, infile)
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
22 for mol in molecules:
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
23 args.outfile.write( 't # id %s\n' % mol.title.strip() )
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
24 for atom in openbabel.OBMolAtomIter( mol.OBMol):
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
25 label = atom.GetAtomicNum()
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
26 vertex_index = atom.GetIdx()
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
27 args.outfile.write('v %s %s\n' % (vertex_index, label))
0
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
28
1
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
29 for bond in openbabel.OBMolBondIter( mol.OBMol):
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
30 src_index = bond.GetBeginAtomIdx()
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
31 dest_index = bond.GetEndAtomIdx()
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
32 assert(src_index > 0)
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
33 assert(dest_index > 0)
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
34 if bond.IsAromatic():
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
35 label = 'a'
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
36 elif bond.IsSingle():
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
37 label = 's'
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
38 elif bond.IsDouble():
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
39 label = 'd'
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
40 elif bond.IsTriple():
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
41 label = 't'
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
42 atom1 = bond.GetBeginAtom()
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
43 atom2 = bond.GetEndAtom()
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
44 args.outfile.write('e %s %s %s\n' % (src_index, dest_index, label))
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
45
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
46
0
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
47
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
48 if __name__ == "__main__":
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
49 parser = argparse.ArgumentParser()
1
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
50 parser.add_argument('-i', '--infile', nargs='*',
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
51 help="Specify one or more input files")
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
52 parser.add_argument('-f', '--format',
5f97004c7f57 Uploaded
bgruening
parents: 0
diff changeset
53 help="Format of the input file.")
0
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
54 parser.add_argument('--outfile', type=argparse.FileType('w'),
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
55 default=sys.stdout, help="Specify one output file")
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
56 args = parser.parse_args()
18eb78773d87 Uploaded
bgruening
parents:
diff changeset
57 main( args )