view change_title_to_metadata_value.py @ 13:e94b2920d4e4 draft

"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
author bgruening
date Mon, 19 Oct 2020 14:44:19 +0000
parents aebc671bae78
children 81836d586797
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 argparse
import random
import string

from openbabel import openbabel, pybel
openbabel.obErrorLog.StopLogging()


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()