rdkit.ML.Data.FindQuantBounds

Package rdkit :: Package ML :: Package Data :: Module FindQuantBounds |
[hide private]
[frames] | no frames]

# Source Code for Module rdkit.ML.Data.FindQuantBounds

     1  #
     2  #  Copyright (C) 2001  greg Landrum
     3  #
     4
     5  from __future__ import print_function
     6
     7  from rdkit.Dbase import DbConnection
     8  from rdkit.ML.Data import Quantize
     9
    10
    11 -def runIt(namesAndTypes, dbConnect, nBounds, resCol, typesToDo=['float']):
    12    results = map(lambda x: x[0], dbConnect.GetColumns(namesAndTypes[resCol][0]))
    13    nPossibleRes = max(results) + 1
    14    for cName, cType in namesAndTypes:
    15      if cType in typesToDo:
    16        dList = map(lambda x: x[0], dbConnect.GetColumns(cName))
    17        qDat = Quantize.FindVarMultQuantBounds(dList, nBounds, results, nPossibleRes)
    18        print(cName, qDat)
    19
    20
    21 -def Usage():
    22    import sys
    23    msg = """
    24    Usage: FindQuantBounds [-r res_col -n bounds_per_var -i] dbName tableName
    25    Optional Arguments:
    26      -r: specify the number of the result column
    27      -n: specify the number of bounds to attempt to find for each variable
    28      -i: also find vars for integer values
    29  """
    30    print(msg)
    31    sys.exit(-1)
    32
    33
    34  if __name__ == '__main__':
    35    import sys
    36    import getopt
    37
    38    try:
    39      args, extras = getopt.getopt(sys.argv[1:], 'n:r:i')
    40    except Exception:
    41      Usage()
    42
    43    if len(extras) != 2:
    44      Usage()
    45
    46    nBounds = 1
    47    typesToDo = ['float']
    48    includeInts = 0
    49    resCol = -1
    50    for arg, val in args:
    51      if arg == '-i':
    52        includeInts = 1
    53        typesToDo.append('integer')
    54      elif arg == '-n':
    55        try:
    56          nBounds = int(val)
    57        except ValueError:
    58          Usage()
    59      elif arg == '-r':
    60        try:
    61          resCol = int(val)
    62        except ValueError:
    63          Usage()
    64
    65    dbName = extras[0]
    66    tableName = extras[1]
    67    dbConnect = DbConnection.DbConnect(dbName, tableName)
    68    namesAndTypes = dbConnect.GetColumnNamesAndTypes()
    69    runIt(namesAndTypes, dbConnect, nBounds, resCol, typesToDo)
    70