Package rdkit :: Package VLib :: Package NodeLib :: Module SmilesOutput
[hide private]
[frames] | no frames]

Source Code for Module rdkit.VLib.NodeLib.SmilesOutput

 1  #  $Id$ 
 2  # 
 3  #  Copyright (C) 2003 Rational Discovery LLC 
 4  #     All Rights Reserved 
 5  # 
 6  import sys,types 
 7  from rdkit import Chem 
 8   
 9  from rdkit.VLib.Output import OutputNode as BaseOutputNode 
10   
11 -class OutputNode(BaseOutputNode):
12 """ dumps smiles output 13 14 Assumptions: 15 16 - destination supports a write() method 17 18 - inputs (parents) can be stepped through in lockstep 19 20 21 Usage Example: 22 >>> smis = ['C1CCC1','C1CC1','C=O','NCC'] 23 >>> mols = [Chem.MolFromSmiles(x) for x in smis] 24 >>> from rdkit.VLib.Supply import SupplyNode 25 >>> suppl = SupplyNode(contents=mols) 26 >>> import StringIO 27 >>> io = StringIO.StringIO() 28 >>> node = OutputNode(dest=io,delim=', ') 29 >>> node.AddParent(suppl) 30 >>> ms = [x for x in node] 31 >>> len(ms) 32 4 33 >>> txt = io.getvalue() 34 >>> repr(txt) 35 "'1, C1CCC1\\\\n2, C1CC1\\\\n3, C=O\\\\n4, CCN\\\\n'" 36 37 """
38 - def __init__(self,dest=None,delim='\t',idField=None,**kwargs):
39 BaseOutputNode.__init__(self,dest=dest,strFunc=self.smilesOut) 40 self._dest = dest 41 self._idField = idField 42 self._delim = delim 43 self._nDumped = 0
44
45 - def reset(self):
46 BaseOutputNode.reset(self) 47 self._nDumped=0
48
49 - def smilesOut(self,mol):
50 self._nDumped += 1 51 if type(mol) in [types.TupleType,types.ListType]: 52 args = mol 53 mol = args[0] 54 if len(args)>1: 55 args = args[1:] 56 else: 57 args = [] 58 else: 59 args = [] 60 61 if self._idField and mol.HasProp(self._idField): 62 label = mol.GetProp(self._idField) 63 else: 64 label = str(self._nDumped) 65 smi = Chem.MolToSmiles(mol) 66 outp = [label,smi]+args 67 return '%s\n'%(self._delim.join(outp))
68 69 70 #------------------------------------ 71 # 72 # doctest boilerplate 73 #
74 -def _test():
75 import doctest,sys 76 return doctest.testmod(sys.modules["__main__"])
77 78 if __name__ == '__main__': 79 import sys 80 failed,tried = _test() 81 sys.exit(failed) 82