Mercurial > repos > bgruening > openbabel_compound_convert
view ob_genProp.py @ 9:a072cb207571 draft
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit a889b6ed75666406a95e29d672b58a8fee6e8784"
author | bgruening |
---|---|
date | Thu, 22 Aug 2019 10:30:36 -0400 |
parents | edb576416262 |
children | 1c66bf08f687 |
line wrap: on
line source
#!/usr/bin/env python """ Input: Molecular input file. Output: Physico-chemical properties are computed and stored as metadata in the sdf output file. Copyright 2012, Bjoern Gruening and Xavier Lucas """ import sys, os import argparse import openbabel openbabel.obErrorLog.StopLogging() import pybel import cheminfolib def parse_command_line(argv): parser = argparse.ArgumentParser() parser.add_argument('--iformat', default='sdf' , help='input file format') parser.add_argument('-i', '--input', required=True, help='input file name') parser.add_argument('--oformat', default='sdf', choices = ['sdf', 'table'] , help='output file format') parser.add_argument('--header', type=bool, help='Include the header as the first line of the output table') parser.add_argument('-o', '--output', required=True, help='output file name') return parser.parse_args() def compute_properties(args): if args.oformat == 'sdf': outfile = pybel.Outputfile(args.oformat, args.output, overwrite=True) else: outfile = open(args.output, 'w') if args.header: mol = next(pybel.readfile(args.iformat, args.input)) metadata = cheminfolib.get_properties_ext(mol) outfile.write( '%s\n' % '\t'.join( [ cheminfolib.ColumnNames[key] for key in metadata ] ) ) for mol in pybel.readfile(args.iformat, args.input): if mol.OBMol.NumHvyAtoms() > 5: metadata = cheminfolib.get_properties_ext(mol) if args.oformat == 'sdf': [ mol.data.update( { cheminfolib.ColumnNames[key] : metadata[key] } ) for key in metadata ] outfile.write(mol) else: outfile.write( '%s\n' % ('\t'.join( [ str(metadata[key]) for key in metadata ] ) ) ) outfile.close() def __main__(): """ Physico-chemical properties are computed and stored as metadata in the sdf output file """ args = parse_command_line(sys.argv) compute_properties(args) if __name__ == "__main__" : __main__()