Mercurial > repos > bgruening > openbabel_filter
view change_title_to_metadata_value.py @ 12:340f8d63c1f4 draft
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit cda909c5e0b88fa3d12abe43fc72b8dd0729417a"
author | bgruening |
---|---|
date | Thu, 09 Apr 2020 10:09:51 -0400 |
parents | da03b00048b1 |
children | ff2dd4b7d918 |
line wrap: on
line source
#!/usr/bin/env python # -*- coding: UTF-8 -*- """ Change the title from a molecule file to metadata value of a given-id of the same molecule file. """ import os import sys import argparse import openbabel openbabel.obErrorLog.StopLogging() import pybel import random import string def main(): parser = argparse.ArgumentParser( description="Change the title from a molecule file to metadata \ value of a given-id of the same molecule file.", ) parser.add_argument('--infile', '-i', required=True, help="path to the input file") parser.add_argument('--outfile', '-o', required=True, help="path to the output file") parser.add_argument('--key', '-k', required=True, help="the metadata key from the sdf file which should inlcude the new title") parser.add_argument('--random', '-r', action="store_true", help="Add random suffix to the title.") args = parser.parse_args() output = pybel.Outputfile("sdf", args.outfile, overwrite=True) for mol in pybel.readfile("sdf", args.infile): if args.key in mol.data: mol.title = mol.data[args.key] if args.random: suffix = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(13)) mol.title += '__%s' % suffix output.write( mol ) output.close() if __name__ == "__main__": main()