VLib.NodeLib.DbMolSupply

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

# Source Code for Module VLib.NodeLib.DbMolSupply

     1  #  $Id: DbMolSupply.py 2 2006-05-06 22:54:39Z glandrum $
     2  #
     3  #  Copyright (C) 2003 Rational Discovery LLC
     4  #     All Rights Reserved
     5  #
     6  import sys,os.path
     7  import RDConfig
     8  from VLib.Supply import SupplyNode
     9  import Chem
    10  from Chem.Suppliers import DbMolSupplier
    11
    12 -class DbMolSupplyNode(SupplyNode):
    13    """ Supplies molecules from a db result set:
    14
    15    Sample Usage:
    16      >>> from Dbase.DbConnection import DbConnect
    17      >>> dbName = os.path.join(RDConfig.RDCodeDir,'Chem','Fingerprints',\
    18                               'test_data','data.gdb')
    19      >>> conn = DbConnect(dbName,'simple_mols')
    20      >>> dataset = conn.GetData()
    21      >>> suppl = DbMolSupplyNode(dataset)
    22      >>> ms = [x for x in suppl]
    23      >>> len(ms)
    24      12
    25      >>> ms[0].GetProp("ID")
    26      'ether-1'
    27      >>> ms[10].GetProp("ID")
    28      'acid-4'
    29      >>> suppl.reset()
    30      >>> suppl.next().GetProp("ID")
    31      'ether-1'
    32      >>> suppl.next().GetProp("ID")
    33      'acid-1'
    34      >>> suppl.reset()
    35
    36    """
    37 -  def __init__(self,dbResults,
    38                 **kwargs):
    39      SupplyNode.__init__(self,**kwargs)
    40      self._dbResults = dbResults
    41      self._supplier = DbMolSupplier.RandomAccessDbMolSupplier(self._dbResults,
    42                                                               **kwargs)
    43
    44
    45 -  def reset(self):
    46      SupplyNode.reset(self)
    47      self._supplier.Reset()
    48 -  def next(self):
    49      """
    50
    51      """
    52      return self._supplier.next()
    53
    54 -def GetNode(dbName,tableName):
    55    from Dbase.DbConnection import DbConnect
    56    conn = DbConnect(dbName,tableName)
    57    return DbMolSupplyNode(conn.GetData())
    58
    59  #------------------------------------
    60  #
    61  #  doctest boilerplate
    62  #
    63 -def _test():
    64    import doctest,sys
    65    return doctest.testmod(sys.modules["__main__"])
    66
    67
    68  if __name__ == '__main__':
    69    import sys
    70    failed,tried = _test()
    71    sys.exit(failed)
    72