Exemplo n.º 1
0
def runANNZ():

  exitStatus = runOneANNZ()
  if exitStatus == 0: return

  # if ANNZ failed during training, try again with a different random seed and randomized MLM options
  # --------------------------------------------------------------------------------------------------
  if glob.annz["doTrain"]:
    # set random seed if not already set
    setSeed = (not glob.annz.has_key("initSeedRnd"))
    if not setSeed: setSeed = (glob.annz["initSeedRnd"] < 1)
    if setSeed: glob.annz["initSeedRnd"]  = 198876

    # remove all userMLMopts so that a random set is generated
    glob.annz["userMLMopts"] = ""
    if glob.annz["doBinnedCls"]:
      for nRndOptNow in range(glob.annz["binCls_nTries"]): glob.annz.pop("userMLMopts_"+str(nRndOptNow),None)

    nTries = 0
    for nTryNow in range(nTries):
      glob.annz["initSeedRnd"] += 1
      log.warning(whtOnRed(" - runANNZ failed !!! Will try again ("+str(nTryNow+1)+"/"+str(nTries)+") with initSeedRnd = ")+yellowOnRed(str(glob.annz["initSeedRnd"])))

      exitStatus = runOneANNZ()
      if exitStatus == 0: break

  Assert("runANNZ failed !!!",(exitStatus == 0))
  return
Exemplo n.º 2
0
def initParse():
  parser = argparse.ArgumentParser(description="Command line parser:")
  parser.add_argument("--make",                 action='store_true')
  parser.add_argument("--clean",                action='store_true')
  parser.add_argument("--train",                action='store_true')
  parser.add_argument("--optimize",             action='store_true')
  parser.add_argument("--verify",               action='store_true')
  parser.add_argument("--evaluate",             action='store_true')
  parser.add_argument("--qsub",                 action='store_true')
  parser.add_argument("--genInputTrees",        action='store_true')
  parser.add_argument("--singleRegression",     action='store_true')
  parser.add_argument("--randomRegression",     action='store_true')
  parser.add_argument("--binnedClassification", action='store_true')
  parser.add_argument("--singleClassification", action='store_true')
  parser.add_argument("--randomClassification", action='store_true')
  parser.add_argument("--onlyKnnErr",           action='store_true')
  parser.add_argument("--inTrainFlag",          action='store_true')
  parser.add_argument("--truncateLog",          action='store_true')
  parser.add_argument("--isBatch",              action='store_true')
  parser.add_argument("--fitsToAscii",          action='store_true')
  parser.add_argument("--asciiToFits",          action='store_true')
  parser.add_argument("--logFileName",          type=str,   default="")
  parser.add_argument("--logLevel",             type=str,   default="INFO")
  parser.add_argument("--generalOptS",          type=str,   default="NULL")
  parser.add_argument("--makeOpt",              type=str,   default="NULL")
  parser.add_argument("--maxNobj",              type=float, default=0)
  parser.add_argument("--trainIndex",           type=int,   default=-1)
  parser.add_argument("--generalOptI",          type=int,   default=-1)

  glob.pars = vars(parser.parse_args())

  initLogger()

  # sanity check of user options
  # --------------------------------------------------------------------------------------------------
  hasMake = (glob.pars["make"] or glob.pars["clean"])
  nModes = 0 ; nSetups = 0

  # if glob.pars["genInputTrees"]:        nSetups += 1
  if glob.pars["singleClassification"]: nSetups += 1
  if glob.pars["randomClassification"]: nSetups += 1
  if glob.pars["singleRegression"]:     nSetups += 1
  if glob.pars["randomRegression"]:     nSetups += 1
  if glob.pars["binnedClassification"]: nSetups += 1
  if glob.pars["onlyKnnErr"]:           nSetups += 1
  if glob.pars["inTrainFlag"]:          nSetups += 1
  if glob.pars["fitsToAscii"]:          nSetups += 1
  if glob.pars["asciiToFits"]:          nSetups += 1

  if not ((nSetups == 1) or (nSetups == 0 and (glob.pars["genInputTrees"] or hasMake or glob.pars["qsub"]))):
    log.warning("Possibly missing/conflicting job-options... Did you define: --singleClassification" \
                + " --randomClassification , --singleRegression --randomRegression, --binnedClassification, " \
                +"--onlyKnnErr, --inTrainFlag, --fitsToAscii, --asciiToFits .... ?")

  if nSetups == 1:
    if glob.pars["genInputTrees"]: nModes += 1
    if glob.pars["train"]:         nModes += 1
    if glob.pars["optimize"]:      nModes += 1
    if glob.pars["verify"]:        nModes += 1
    if glob.pars["evaluate"]:      nModes += 1
    if glob.pars["onlyKnnErr"]:    nModes += 1
    if glob.pars["inTrainFlag"]:   nModes += 1
    if glob.pars["fitsToAscii"]:   nModes += 1
    if glob.pars["asciiToFits"]:   nModes += 1

    if not (nModes == 1 or hasMake):
      log.warning("Should define exactly one of --genInputTrees --train , --optimize --verify, --evaluate, --onlyKnnErr, --inTrainFlag, --fitsToAscii, --asciiToFits !")

  glob.pars["onlyMake"] = (((nSetups == 0) or (nModes == 0)) and hasMake and (not glob.pars["genInputTrees"]))

  # add make option, e.g., "-j4"
  glob.makeOpt = glob.pars["makeOpt"] if glob.pars["makeOpt"] is not "NULL" else ""

  # set basic values for operational flags
  # --------------------------------------------------------------------------------------------------
  glob.annz["doGenInputTrees"]  = glob.pars["genInputTrees"]

  glob.annz["doSingleReg"]      = glob.pars["singleRegression"]
  glob.annz["doRandomReg"]      = glob.pars["randomRegression"]
  glob.annz["doBinnedCls"]      = glob.pars["binnedClassification"]

  glob.annz["doSingleCls"]      = glob.pars["singleClassification"]
  glob.annz["doRandomCls"]      = glob.pars["randomClassification"]

  glob.annz["doTrain"]          = glob.pars["train"]
  glob.annz["doOptim"]          = glob.pars["optimize"]
  glob.annz["doVerif"]          = glob.pars["verify"]
  glob.annz["doEval"]           = glob.pars["evaluate"]
  glob.annz["doOnlyKnnErr"]     = glob.pars["onlyKnnErr"]
  glob.annz["doInTrainFlag"]    = glob.pars["inTrainFlag"]

  glob.annz["doRegression"]     = glob.annz["doSingleReg"] or glob.annz["doRandomReg"] or glob.annz["doBinnedCls"]
  glob.annz["doClassification"] = glob.annz["doSingleCls"] or glob.annz["doRandomCls"]

  glob.annz["maxNobj"]          = int(floor(glob.pars["maxNobj"])) # limit number of used objects - used for debugging
  glob.annz["trainIndex"]       = glob.pars["trainIndex"]          # used for python batch-job submision

  glob.annz["doFitsToAscii"]    = glob.pars["fitsToAscii"]
  glob.annz["doAsciiToFits"]    = glob.pars["asciiToFits"]

  # general-use options for developers
  glob.annz["generalOptS"]      = glob.pars["generalOptS"]
  glob.annz["generalOptI"]      = glob.pars["generalOptI"]

  # default values for options which should be overridden in generalSettings()
  # --------------------------------------------------------------------------------------------------
  glob.annz["isBatch"] = (glob.pars["logFileName"] != "" or glob.pars["isBatch"])
  glob.annz["useCoutCol"] = glob.annz["doPlots"] = True
  glob.annz["printPlotExtension"] = "pdf"