Mercurial > repos > bgruening > sucos_clustering
annotate utils.py @ 5:12725d4b90f3 draft
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit 944ea4bb8a9cd4244152a4a4fecd0485fabc2ad0"
| author | bgruening | 
|---|---|
| date | Tue, 28 Jul 2020 08:48:16 -0400 | 
| parents | f80cfac80c53 | 
| children | b8725fec8c7b | 
| rev | line source | 
|---|---|
| 0 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 1 #!/usr/bin/env python | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 2 """ | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 3 Utility functions for SuCOS and other RDKit modules | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 4 """ | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 5 | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 6 from __future__ import print_function | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 7 import sys, gzip | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 8 from rdkit import Chem | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 9 | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 10 def log(*args, **kwargs): | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 11 """Log output to STDERR | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 12 """ | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 13 print(*args, file=sys.stderr, **kwargs) | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 14 | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 15 def open_file_for_reading(filename): | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 16 """Open the file gunzipping it if it ends with .gz.""" | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 17 if filename.lower().endswith('.gz'): | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 18 return gzip.open(filename, 'rb') | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 19 else: | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 20 return open(filename, 'rb') | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 21 | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 22 def open_file_for_writing(filename): | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 23 if filename.lower().endswith('.gz'): | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 24 return gzip.open(filename, 'at') | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 25 else: | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 26 return open(filename, 'w+') | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 27 | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 28 def read_single_molecule(filename, index=1, format=None): | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 29 """Read a single molecule as a RDKit Mol object. This can come from a file in molfile or SDF format. | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 30 If SDF then you can also specify an index of the molecule that is read (default is the first) | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 31 """ | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 32 mol = None | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 33 if format == 'mol' or filename.lower().endswith('.mol') or filename.lower().endswith('.mol.gz'): | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 34 file = open_file_for_reading(filename) | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 35 mol = Chem.MolFromMolBlock(file.read()) | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 36 file.close() | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 37 elif format == 'sdf' or filename.lower().endswith('.sdf') or filename.lower().endswith('.sdf.gz'): | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 38 file = open_file_for_reading(filename) | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 39 supplier = Chem.ForwardSDMolSupplier(file) | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 40 for i in range(0,index): | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 41 if supplier.atEnd(): | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 42 break | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 43 mol = next(supplier) | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 44 file.close() | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 45 | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 46 if not mol: | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 47 raise ValueError("Unable to read molecule") | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 48 | 
| 
f80cfac80c53
"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/chemicaltoolbox/sucos commit ef86cfa5f7ab5043de420511211579d03df58645"
 bgruening parents: diff
changeset | 49 return mol | 
