CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes | Static Public Attributes
runTheMatrix.TheMatrix Class Reference
Inheritance diagram for runTheMatrix.TheMatrix:

Public Member Functions

def __init__ (self, opt)
 
def complete_predefined (self, text, line, start_idx, end_idx)
 
def complete_runWorkflow (self, text, line, start_idx, end_idx)
 
def complete_searchInWorkflow (self, text, line, start_idx, end_idx)
 
def complete_showWorkflow (self, text, line, start_idx, end_idx)
 
def default (self, inp)
 
def do_clear (self, arg)
 
def do_dumpWorkflowId (self, arg)
 
def do_exit (self, arg)
 
def do_jobs (self, args)
 
def do_predefined (self, arg)
 
def do_runWorkflow (self, arg)
 
def do_search (self, arg)
 
def do_searchInWorkflow (self, arg)
 
def do_showWorkflow (self, arg)
 
def help_dumpWorkflowId (self)
 
def help_jobs (self)
 
def help_predefined (self)
 
def help_runWorkflow (self)
 
def help_search (self)
 
def help_searchInWorkflow (self)
 
def help_showWorkflow (self)
 

Public Attributes

 matrices_
 
 opt_
 
 processes_
 

Static Public Attributes

 do_EOF
 
 intro
 
 prompt
 

Detailed Description

Definition at line 495 of file runTheMatrix.py.

Constructor & Destructor Documentation

◆ __init__()

def runTheMatrix.TheMatrix.__init__ (   self,
  opt 
)

Definition at line 499 of file runTheMatrix.py.

499  def __init__(self, opt):
500  cmd.Cmd.__init__(self)
501  self.opt_ = opt
502  self.matrices_ = {}
503  tmp = MatrixReader(self.opt_)
504  self.processes_ = dict()
505  for what in tmp.files:
506  what = what.replace('relval_','')
507  self.opt_.what = what
508  self.matrices_[what] = MatrixReader(self.opt_)
509  self.matrices_[what].prepare(self.opt_.useInput, self.opt_.refRel,
510  self.opt_.fromScratch)
511  os.system("clear")
512 
def __init__(self, dataset, job_number, job_id, job_name, isDA, isMC, applyBOWS, applyEXTRACOND, extraconditions, runboundary, lumilist, intlumi, maxevents, gt, allFromGT, alignmentDB, alignmentTAG, apeDB, apeTAG, bowDB, bowTAG, vertextype, tracktype, refittertype, ttrhtype, applyruncontrol, ptcut, CMSSW_dir, the_dir)

Member Function Documentation

◆ complete_predefined()

def runTheMatrix.TheMatrix.complete_predefined (   self,
  text,
  line,
  start_idx,
  end_idx 
)

Definition at line 536 of file runTheMatrix.py.

536  def complete_predefined(self, text, line, start_idx, end_idx):
537  if text and len(text) > 0:
538  return [t for t in predefinedSet.keys() if t.startswith(text)]
539  else:
540  return predefinedSet.keys()
541 

◆ complete_runWorkflow()

def runTheMatrix.TheMatrix.complete_runWorkflow (   self,
  text,
  line,
  start_idx,
  end_idx 
)

Definition at line 636 of file runTheMatrix.py.

References relativeConstraints.keys, and runTheMatrix.TheMatrix.matrices_.

636  def complete_runWorkflow(self, text, line, start_idx, end_idx):
637  if text and len(text) > 0:
638  return [t for t in self.matrices_.keys() if t.startswith(text)]
639  else:
640  return self.matrices_.keys()
641 

◆ complete_searchInWorkflow()

def runTheMatrix.TheMatrix.complete_searchInWorkflow (   self,
  text,
  line,
  start_idx,
  end_idx 
)

Definition at line 680 of file runTheMatrix.py.

References relativeConstraints.keys, and runTheMatrix.TheMatrix.matrices_.

680  def complete_searchInWorkflow(self, text, line, start_idx, end_idx):
681  if text and len(text) > 0:
682  return [t for t in self.matrices_.keys() if t.startswith(text)]
683  else:
684  return self.matrices_.keys()
685 

◆ complete_showWorkflow()

def runTheMatrix.TheMatrix.complete_showWorkflow (   self,
  text,
  line,
  start_idx,
  end_idx 
)

Definition at line 560 of file runTheMatrix.py.

References relativeConstraints.keys, and runTheMatrix.TheMatrix.matrices_.

560  def complete_showWorkflow(self, text, line, start_idx, end_idx):
561  if text and len(text) > 0:
562  return [t for t in self.matrices_.keys() if t.startswith(text)]
563  else:
564  return self.matrices_.keys()
565 

◆ default()

def runTheMatrix.TheMatrix.default (   self,
  inp 
)

Definition at line 521 of file runTheMatrix.py.

References runTheMatrix.TheMatrix.do_exit(), and print().

521  def default(self, inp):
522  if inp == 'x' or inp == 'q':
523  return self.do_exit(inp)
524  else:
525  is_pipe = not isatty(sys.stdin.fileno())
526  print(Fore.RED + "Error: " + Fore.RESET + "unrecognized command.")
527  # Quit only if given a piped command.
528  if is_pipe:
529  sys.exit(1)
530 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ do_clear()

def runTheMatrix.TheMatrix.do_clear (   self,
  arg 
)
Clear the screen, put prompt at the top

Definition at line 513 of file runTheMatrix.py.

513  def do_clear(self, arg):
514  """Clear the screen, put prompt at the top"""
515  os.system("clear")
516 

◆ do_dumpWorkflowId()

def runTheMatrix.TheMatrix.do_dumpWorkflowId (   self,
  arg 
)

Definition at line 727 of file runTheMatrix.py.

References nano_mu_digi_cff.float, mps_monitormerge.items, runTheMatrix.TheMatrix.matrices_, print(), and str.

727  def do_dumpWorkflowId(self, arg):
728  wflids = arg.split()
729  if len(wflids) == 0:
730  print("dumpWorkflowId [wfl-id1 [...]]")
731  return
732 
733  fmt = "[%s]: %s\n"
734  maxLen = 100
735  for wflid in wflids:
736  dump = True
737  for key, mrd in self.matrices_.items():
738  for wfl in mrd.workFlows:
739  if wfl.numId == float(wflid):
740  if dump:
741  dump = False
742  print(Fore.GREEN + str(wfl.numId) + Fore.RESET + " " + Fore.YELLOW + wfl.nameId + Fore.RESET)
743  for i,s in enumerate(wfl.cmds):
744  print(fmt % (Fore.RED + str(i+1) + Fore.RESET,
745  (str(s)+' ')))
746  print("\nWorkflow found in %s." % key)
747  else:
748  print("Workflow also found in %s." % key)
749 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
#define str(s)

◆ do_exit()

def runTheMatrix.TheMatrix.do_exit (   self,
  arg 
)

Definition at line 517 of file runTheMatrix.py.

References print().

Referenced by runTheMatrix.TheMatrix.default().

517  def do_exit(self, arg):
518  print("Leaving the Matrix")
519  return True
520 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ do_jobs()

def runTheMatrix.TheMatrix.do_jobs (   self,
  args 
)

Definition at line 662 of file runTheMatrix.py.

References relativeConstraints.keys, print(), and runTheMatrix.TheMatrix.processes_.

662  def do_jobs(self, args):
663  print(Fore.GREEN + Style.BRIGHT + "List of jobs:")
664  for w in self.processes_.keys():
665  if self.processes_[w][0].poll() is None:
666  print(Fore.YELLOW + Style.BRIGHT + "Active job: {} since {:.2f} seconds.".format(w, time.time() - self.processes_[w][1]))
667  else:
668  print(Fore.RED + Style.BRIGHT + "Done job: {}".format(w))
669  print(Style.RESET_ALL)
670 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ do_predefined()

def runTheMatrix.TheMatrix.do_predefined (   self,
  arg 
)
Print the list of predefined workflows

Definition at line 542 of file runTheMatrix.py.

References join(), print(), and str.

542  def do_predefined(self, arg):
543  """Print the list of predefined workflows"""
544  print("List of predefined workflows")
545  if arg:
546  for w in arg.split():
547  if w in predefinedSet.keys():
548  print("Predefined Set: %s" % w)
549  print(predefinedSet[w])
550  else:
551  print("Unknown Set: %s" % w)
552  else:
553  print("[ " + Fore.RED + ", ".join([str(k) for k in predefinedSet.keys()]) + Fore.RESET + " ]")
554 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:21
#define str(s)

◆ do_runWorkflow()

def runTheMatrix.TheMatrix.do_runWorkflow (   self,
  arg 
)

Definition at line 583 of file runTheMatrix.py.

References nano_mu_digi_cff.float, relativeConstraints.keys, runTheMatrix.TheMatrix.matrices_, print(), runTheMatrix.TheMatrix.processes_, and mkLumiAveragedPlots.tuple.

583  def do_runWorkflow(self, arg):
584  # Split the input arguments into a list
585  args = arg.split()
586  if len(args) < 2:
587  print(Fore.RED + Style.BRIGHT + "Wrong number of parameters passed")
588  print(Style.RESET_ALL)
589  return
590  workflow_class = args[0]
591  workflow_id = args[1]
592  passed_down_args = list()
593  if len(args) > 2:
594  passed_down_args = args[2:]
595  print(Fore.YELLOW + Style.BRIGHT + "Running with the following options:\n")
596  print(Fore.GREEN + Style.BRIGHT + "Workflow class: {}".format(workflow_class))
597  print(Fore.GREEN + Style.BRIGHT + "Workflow ID: {}".format(workflow_id))
598  print(Fore.GREEN + Style.BRIGHT + "Additional runTheMatrix options: {}".format(passed_down_args))
599  print(Style.RESET_ALL)
600  if workflow_class not in self.matrices_.keys():
601  print(Fore.RED + Style.BRIGHT + "Unknown workflow selected: {}".format(workflow_class))
602  print("Available workflows:")
603  for k in self.matrices_.keys():
604  print(Fore.RED + Style.BRIGHT + k)
605  print(Style.RESET_ALL)
606  return
607  wflnums = [x.numId for x in self.matrices_[workflow_class].workFlows]
608  if float(workflow_id) not in wflnums:
609  print(Fore.RED + Style.BRIGHT + "Unknown workflow {}".format(workflow_id))
610  print(Fore.GREEN + Style.BRIGHT)
611  print(wflnums)
612  print(Style.RESET_ALL)
613  return
614  if workflow_id in self.processes_.keys():
615  # Check if the process is still active
616  if self.processes_[workflow_id][0].poll() is None:
617  print(Fore.RED + Style.BRIGHT + "Workflow {} already running!".format(workflow_id))
618  print(Style.RESET_ALL)
619  return
620  # If it was there but it's gone, proceeed and update the value for the same key
621  # run a job, redirecting standard output and error to files
622  lognames = ['stdout', 'stderr']
623  logfiles = tuple('%s_%s_%s.log' % (workflow_class, workflow_id, name) for name in lognames)
624  stdout = open(logfiles[0], 'w')
625  stderr = open(logfiles[1], 'w')
626  command = ('runTheMatrix.py', '-w', workflow_class, '-l', workflow_id)
627  if len(passed_down_args) > 0:
628  command += tuple(passed_down_args)
629  print(command)
630  p = subprocess.Popen(command,
631  stdout = stdout,
632  stderr = stderr)
633  self.processes_[workflow_id] = (p, time.time())
634 
635 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47

◆ do_search()

def runTheMatrix.TheMatrix.do_search (   self,
  arg 
)

Definition at line 715 of file runTheMatrix.py.

References runTheMatrix.TheMatrix.do_searchInWorkflow(), join(), relativeConstraints.keys, runTheMatrix.TheMatrix.matrices_, and print().

715  def do_search(self, arg):
716  args = arg.split()
717  if len(args) < 1:
718  print("search regexp")
719  return
720  for wfl in self.matrices_.keys():
721  self.do_searchInWorkflow(' '.join([wfl, args[0]]))
722 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:21

◆ do_searchInWorkflow()

def runTheMatrix.TheMatrix.do_searchInWorkflow (   self,
  arg 
)

Definition at line 686 of file runTheMatrix.py.

References relativeConstraints.keys, runTheMatrix.TheMatrix.matrices_, print(), and str.

Referenced by runTheMatrix.TheMatrix.do_search().

686  def do_searchInWorkflow(self, arg):
687  args = arg.split()
688  if len(args) < 2:
689  print("searchInWorkflow name regexp")
690  return
691  if args[0] not in self.matrices_.keys():
692  print("Unknown workflow")
693  return
694  import re
695  pattern = None
696  try:
697  pattern = re.compile(args[1])
698  except:
699  print("Failed to compile regexp %s" % args[1])
700  return
701  counter = 0
702  for wfl in self.matrices_[args[0]].workFlows:
703  if re.match(pattern, wfl.nameId):
704  print("%s %s" % (Fore.BLUE + str(wfl.numId) + Fore.RESET,
705  Fore.GREEN + wfl.nameId + Fore.RESET))
706  counter +=1
707  print("Found %s compatible workflows inside %s" % (Fore.RED + str(counter) + Fore.RESET,
708  Fore.YELLOW + str(args[0])) + Fore.RESET)
709 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
#define str(s)

◆ do_showWorkflow()

def runTheMatrix.TheMatrix.do_showWorkflow (   self,
  arg 
)

Definition at line 566 of file runTheMatrix.py.

References relativeConstraints.keys, runTheMatrix.TheMatrix.matrices_, print(), and str.

566  def do_showWorkflow(self, arg):
567  if arg == '':
568  print("Available workflows:")
569  for k in self.matrices_.keys():
570  print(Fore.RED + Style.BRIGHT + k)
571  print(Style.RESET_ALL)
572  else:
573  selected = arg.split()
574  for k in selected:
575  if k not in self.matrices_.keys():
576  print("Unknown workflow %s: skipping" % k)
577  else:
578  for wfl in self.matrices_[k].workFlows:
579  print("%s %s" % (Fore.BLUE + str(wfl.numId) + Fore.RESET,
580  Fore.GREEN + wfl.nameId + Fore.RESET))
581  print("%s contains %d workflows" % (Fore.RED + k + Fore.RESET, len(self.matrices_[k].workFlows)))
582 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
#define str(s)

◆ help_dumpWorkflowId()

def runTheMatrix.TheMatrix.help_dumpWorkflowId (   self)

Definition at line 723 of file runTheMatrix.py.

References join(), and print().

723  def help_dumpWorkflowId(self):
724  print("\n".join(["dumpWorkflowId [wfl-id1 [...]]\n",
725  "Dumps the details (cmsDriver commands for all steps) of the space-separated workflow-ids in input."]))
726 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:21

◆ help_jobs()

def runTheMatrix.TheMatrix.help_jobs (   self)

Definition at line 671 of file runTheMatrix.py.

References join(), and print().

671  def help_jobs(self):
672  print("\n".join(["Print a full list of active and done jobs submitted",
673  "in the ongoing interactive session"]))
674 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:21

◆ help_predefined()

def runTheMatrix.TheMatrix.help_predefined (   self)

Definition at line 531 of file runTheMatrix.py.

References join(), and print().

531  def help_predefined(self):
532  print("\n".join(["predefined [predef1 [...]]\n",
533  "Run w/o argument, it will print the list of known predefined workflows.",
534  "Run with space-separated predefined workflows, it will print the workflow-ids registered to them"]))
535 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:21

◆ help_runWorkflow()

def runTheMatrix.TheMatrix.help_runWorkflow (   self)

Definition at line 642 of file runTheMatrix.py.

References join(), and print().

642  def help_runWorkflow(self):
643  print("\n".join(["runWorkflow workflow_class workflow_id\n",
644  "This command will launch a new and independent process that invokes",
645  "the command:\n",
646  "runTheMatrix.py -w workflow_class -l workflow_id [runTheMatrix.py options]",
647  "\nYou can specify just one workflow_class and workflow_id per invocation.",
648  "The job will continue even after quitting the interactive session.",
649  "stdout and stderr of the new process will be automatically",
650  "redirected to 2 logfiles whose names contain the workflow_class",
651  "and workflow_id. Mutiple command can be issued one after the other.",
652  "The working directory of the new process will be the directory",
653  "from which the interactive session has started.",
654  "Autocompletion is available for workflow_class, but",
655  "not for workflow_id. Supplying a wrong workflow_class or",
656  "a non-existing workflow_id for a valid workflow_class",
657  "will trigger an error and no process will be invoked.",
658  "The interactive shell will keep track of all active processes",
659  "and will prevent the accidental resubmission of an already",
660  "active jobs."]))
661 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:21

◆ help_search()

def runTheMatrix.TheMatrix.help_search (   self)

Definition at line 710 of file runTheMatrix.py.

References join(), and print().

710  def help_search(self):
711  print("\n".join(["search search_regexp\n",
712  "This command will search for a match within all workflows registered.",
713  "The search is done on both the workflow name and the names of steps registered to it."]))
714 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:21

◆ help_searchInWorkflow()

def runTheMatrix.TheMatrix.help_searchInWorkflow (   self)

Definition at line 675 of file runTheMatrix.py.

References join(), and print().

675  def help_searchInWorkflow(self):
676  print("\n".join(["searchInWorkflow wfl_name search_regexp\n",
677  "This command will search for a match within all workflows registered to wfl_name.",
678  "The search is done on both the workflow name and the names of steps registered to it."]))
679 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:21

◆ help_showWorkflow()

def runTheMatrix.TheMatrix.help_showWorkflow (   self)

Definition at line 555 of file runTheMatrix.py.

References join(), and print().

555  def help_showWorkflow(self):
556  print("\n".join(["showWorkflow [workflow1 [...]]\n",
557  "Run w/o arguments, it will print the list of registered macro-workflows.",
558  "Run with space-separated workflows, it will print the full list of workflow-ids registered to them"]))
559 
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
static std::string join(char **cmd)
Definition: RemoteFile.cc:21

Member Data Documentation

◆ do_EOF

runTheMatrix.TheMatrix.do_EOF
static

Definition at line 750 of file runTheMatrix.py.

◆ intro

runTheMatrix.TheMatrix.intro
static

Definition at line 496 of file runTheMatrix.py.

◆ matrices_

runTheMatrix.TheMatrix.matrices_

◆ opt_

runTheMatrix.TheMatrix.opt_

Definition at line 501 of file runTheMatrix.py.

◆ processes_

runTheMatrix.TheMatrix.processes_

◆ prompt

runTheMatrix.TheMatrix.prompt
static

Definition at line 497 of file runTheMatrix.py.