Mercurial > repos > bgruening > openbabel_obgrep
annotate ob_spectrophore_search.py @ 12:2912ebf12ef2 draft
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
| author | bgruening | 
|---|---|
| date | Mon, 19 Oct 2020 14:46:16 +0000 | 
| parents | 78640d0127ce | 
| children | 985ab0acd514 | 
| rev | line source | 
|---|---|
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 1 #!/usr/bin/env python | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 2 """ | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 3 Input: tabular format file with one column storing the unique id for the compounds and any other with the Spectrophores(TM) descriptors. | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 4 Output: parse the target file using the same protocol used to generate the databases in our servers. Physico-chemical properties are computed and stored as metadata in the sdf output file. | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 5 Copyright 2012, Bjoern Gruening and Xavier Lucas | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 6 """ | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 7 import argparse | 
| 12 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 8 | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 9 import numpy as np | 
| 11 
78640d0127ce
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 944ea4bb8a9cd4244152a4a4fecd0485fabc2ad0"
 bgruening parents: 
2diff
changeset | 10 from openbabel import openbabel, pybel | 
| 
78640d0127ce
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 944ea4bb8a9cd4244152a4a4fecd0485fabc2ad0"
 bgruening parents: 
2diff
changeset | 11 openbabel.obErrorLog.StopLogging() | 
| 12 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 12 # TODO get rid of eval() | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 13 | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 14 global spectrophore | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 15 spectrophore = pybel.ob.OBSpectrophore() | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 16 | 
| 12 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 17 | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 18 def parse_command_line(): | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 19 parser = argparse.ArgumentParser() | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 20 parser.add_argument('--target', required=True, help='target file name in sdf format with Spectrophores(TM) descriptors stored as meta-data') | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 21 parser.add_argument('--library', required=True, help='library of compounds with pre-computed physico-chemical properties, including Spectrophores(TM) in tabular format') | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 22 parser.add_argument('-c', '--column', required=True, type=int, help='#column containing the Spectrophores(TM) descriptors in the library file') | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 23 parser.add_argument('-o', '--output', required=True, help='output file name') | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 24 parser.add_argument('-n', '--normalization', default="ZeroMeanAndUnitStd", choices=['No', 'ZeroMean', 'UnitStd', 'ZeroMeanAndUnitStd'], help='Normalization method') | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 25 parser.add_argument('-a', '--accuracy', default="20", choices=['1', '2', '5', '10', '15', '20', '30', '36', '45', '60'], help='Accuracy expressed as angular stepsize') | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 26 parser.add_argument('-s', '--stereo', default="No", choices=['No', 'Unique', 'Mirror', 'All'], help='Stereospecificity of the cage') | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 27 parser.add_argument('-r', '--resolution', type=float, default="3.0", help='Resolution') | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 28 return parser.parse_args() | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 29 | 
| 12 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 30 | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 31 def set_parameters(args): | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 32 if args.normalization == 'No': | 
| 12 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 33 spectrophore.SetNormalization(spectrophore.NoNormalization) | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 34 else: | 
| 12 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 35 spectrophore.SetNormalization(eval('spectrophore.NormalizationTowards' + args.normalization)) | 
| 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 36 spectrophore.SetAccuracy(eval('spectrophore.AngStepSize' + args.accuracy)) | 
| 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 37 spectrophore.SetStereo(eval('spectrophore.' + args.stereo + 'StereoSpecificProbes')) | 
| 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 38 spectrophore.SetResolution(args.resolution) | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 39 return True | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 40 | 
| 12 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 41 | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 42 def Compute_Spectrophores_distance(target_spectrophore, args): | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 43 outfile = open(args.output, 'w') | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 44 for mol in open(args.library, 'r'): | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 45 try: | 
| 12 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 46 distance = ((np.asarray(target_spectrophore, dtype=float) - np.asarray(mol.split('\t')[args.column - 1].strip().split(', '), dtype=float))**2).sum() | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 47 except ValueError: | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 48 distance = 0 | 
| 12 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 49 outfile.write('%s\t%f\n' % (mol.strip(), distance)) | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 50 outfile.close() | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 51 | 
| 12 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 52 | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 53 def __main__(): | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 54 """ | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 55 Computation of Spectrophores(TM) distances to a target molecule. | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 56 """ | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 57 args = parse_command_line() | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 58 # This sets up the parameters for the Spectrophore generation. Parameters are set to fit those of our standard parsing tool | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 59 set_parameters(args) | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 60 | 
| 2 
d461f83e7cfa
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit c376ab981fafb25f0c04a2a313968fa2e55f5196
 bgruening parents: 
0diff
changeset | 61 mol = next(pybel.readfile('sdf', args.target)) | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 62 target_spectrophore = mol.data["Spectrophores(TM)"].strip().split(', ') | 
| 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 63 # Compute the paired-distance between every molecule in the library and the target | 
| 12 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 64 Compute_Spectrophores_distance(target_spectrophore, args) | 
| 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 65 | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 66 | 
| 12 
2912ebf12ef2
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 1fe240ef0064a1a4a66d9be1ccace53824280b75"
 bgruening parents: 
11diff
changeset | 67 if __name__ == "__main__": | 
| 0 
b0311f002a5f
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/openbabel commit 8350bb3a632722c33bc91ec5238d47a536903729
 bgruening parents: diff
changeset | 68 __main__() | 
