Mercurial > repos > bgruening > openbabel_remove_protonation_state
changeset 14:e25b5597cb35 draft
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 327c29cc43f56d7067ab9fa51323ea31951db98b"
author | bgruening |
---|---|
date | Tue, 10 Nov 2020 20:21:59 +0000 |
parents | ad98596cf471 |
children | 2956017a9244 |
files | macros.xml ob_remIons.py test-data/multiple.inchi test-data/multiple_obrmions.inchi |
diffstat | 4 files changed, 21 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/macros.xml Mon Oct 19 14:30:01 2020 +0000 +++ b/macros.xml Tue Nov 10 20:21:59 2020 +0000 @@ -4,7 +4,7 @@ <xml name="requirements"> <requirements> <requirement type="package" version="@TOOL_VERSION@">openbabel</requirement> - <requirement type="package" version="3">python</requirement> + <requirement type="package" version="3.6">python</requirement> <yield /> </requirements> </xml>
--- a/ob_remIons.py Mon Oct 19 14:30:01 2020 +0000 +++ b/ob_remIons.py Tue Nov 10 20:21:59 2020 +0000 @@ -1,4 +1,5 @@ #!/usr/bin/env python + """ Input: molecular input file. Output: Molecule file with removed ions and fragments. @@ -15,20 +16,24 @@ parser.add_argument('-iformat', default='sdf', help='input file format') parser.add_argument('-i', '--input', required=True, help='input file name') parser.add_argument('-o', '--output', required=True, help='output file name') + parser.add_argument('-idx', default=False, action='store_true', help='should output be an indexed text table? works only for inchi/smiles, otherwise is ignored') return parser.parse_args() def remove_ions(args): - outfile = pybel.Outputfile(args.iformat, args.output, overwrite=True) - for mol in pybel.readfile(args.iformat, args.input): - if mol.OBMol.NumHvyAtoms() > 5: - mol.OBMol.StripSalts(0) - if 'inchi' in mol.data: - del mol.data['inchi'] # remove inchi cache so modified mol is saved - # Check if new small fragments have been created and remove them + with open(args.output, 'w') as outfile: + for index, mol in enumerate(pybel.readfile(args.iformat, args.input)): if mol.OBMol.NumHvyAtoms() > 5: - outfile.write(mol) - outfile.close() + mol.OBMol.StripSalts(0) + if 'inchi' in mol.data: + del mol.data['inchi'] # remove inchi cache so modified mol is saved + + mol = mol.write(args.iformat) if mol.OBMol.NumHvyAtoms() > 5 else '\n' + + if args.idx and args.iformat in ['inchi', 'smi']: + outfile.write(f'{index}\t{mol}') + elif mol != '\n': + outfile.write(f'{mol}') def __main__():
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/multiple.inchi Tue Nov 10 20:21:59 2020 +0000 @@ -0,0 +1,3 @@ +InChI=1S/C2H5ClO/c3-1-2-4/h4H,1-2H2 +InChI=1S/C18H29NO3/c1-14(2)19-11-17(20)13-22-18-7-5-15(6-8-18)9-10-21-12-16-3-4-16/h5-8,14,16-17,19-20H,3-4,9-13H2,1-2H3 +InChI=1S/C13H22NO3PS/c1-6-16-18(15,14-10(2)3)17-12-7-8-13(19-5)11(4)9-12/h7-10H,6H2,1-5H3,(H,14,15)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/multiple_obrmions.inchi Tue Nov 10 20:21:59 2020 +0000 @@ -0,0 +1,3 @@ +0 +1 InChI=1S/C18H29NO3/c1-14(2)19-11-17(20)13-22-18-7-5-15(6-8-18)9-10-21-12-16-3-4-16/h5-8,14,16-17,19-20H,3-4,9-13H2,1-2H3 +2 InChI=1S/C13H22NO3PS/c1-6-16-18(15,14-10(2)3)17-12-7-8-13(19-5)11(4)9-12/h7-10H,6H2,1-5H3,(H,14,15)