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 500 of file runTheMatrix.py.

Constructor & Destructor Documentation

◆ __init__()

def runTheMatrix.TheMatrix.__init__ (   self,
  opt 
)

Definition at line 504 of file runTheMatrix.py.

504  def __init__(self, opt):
505  cmd.Cmd.__init__(self)
506  self.opt_ = opt
507  self.matrices_ = {}
508  tmp = MatrixReader(self.opt_)
509  self.processes_ = dict()
510  for what in tmp.files:
511  what = what.replace('relval_','')
512  self.opt_.what = what
513  self.matrices_[what] = MatrixReader(self.opt_)
514  self.matrices_[what].prepare(self.opt_.useInput, self.opt_.refRel,
515  self.opt_.fromScratch)
516  os.system("clear")
517 
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 541 of file runTheMatrix.py.

541  def complete_predefined(self, text, line, start_idx, end_idx):
542  if text and len(text) > 0:
543  return [t for t in predefinedSet.keys() if t.startswith(text)]
544  else:
545  return predefinedSet.keys()
546 

◆ complete_runWorkflow()

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

Definition at line 641 of file runTheMatrix.py.

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

641  def complete_runWorkflow(self, text, line, start_idx, end_idx):
642  if text and len(text) > 0:
643  return [t for t in self.matrices_.keys() if t.startswith(text)]
644  else:
645  return self.matrices_.keys()
646 

◆ complete_searchInWorkflow()

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

Definition at line 685 of file runTheMatrix.py.

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

685  def complete_searchInWorkflow(self, text, line, start_idx, end_idx):
686  if text and len(text) > 0:
687  return [t for t in self.matrices_.keys() if t.startswith(text)]
688  else:
689  return self.matrices_.keys()
690 

◆ complete_showWorkflow()

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

Definition at line 565 of file runTheMatrix.py.

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

565  def complete_showWorkflow(self, text, line, start_idx, end_idx):
566  if text and len(text) > 0:
567  return [t for t in self.matrices_.keys() if t.startswith(text)]
568  else:
569  return self.matrices_.keys()
570 

◆ default()

def runTheMatrix.TheMatrix.default (   self,
  inp 
)

Definition at line 526 of file runTheMatrix.py.

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

526  def default(self, inp):
527  if inp == 'x' or inp == 'q':
528  return self.do_exit(inp)
529  else:
530  is_pipe = not isatty(sys.stdin.fileno())
531  print(Fore.RED + "Error: " + Fore.RESET + "unrecognized command.")
532  # Quit only if given a piped command.
533  if is_pipe:
534  sys.exit(1)
535 
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 518 of file runTheMatrix.py.

518  def do_clear(self, arg):
519  """Clear the screen, put prompt at the top"""
520  os.system("clear")
521 

◆ do_dumpWorkflowId()

def runTheMatrix.TheMatrix.do_dumpWorkflowId (   self,
  arg 
)

Definition at line 732 of file runTheMatrix.py.

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

732  def do_dumpWorkflowId(self, arg):
733  wflids = arg.split()
734  if len(wflids) == 0:
735  print("dumpWorkflowId [wfl-id1 [...]]")
736  return
737 
738  fmt = "[%s]: %s\n"
739  maxLen = 100
740  for wflid in wflids:
741  dump = True
742  for key, mrd in self.matrices_.items():
743  for wfl in mrd.workFlows:
744  if wfl.numId == float(wflid):
745  if dump:
746  dump = False
747  print(Fore.GREEN + str(wfl.numId) + Fore.RESET + " " + Fore.YELLOW + wfl.nameId + Fore.RESET)
748  for i,s in enumerate(wfl.cmds):
749  print(fmt % (Fore.RED + str(i+1) + Fore.RESET,
750  (str(s)+' ')))
751  print("\nWorkflow found in %s." % key)
752  else:
753  print("Workflow also found in %s." % key)
754 
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 522 of file runTheMatrix.py.

References print().

Referenced by runTheMatrix.TheMatrix.default().

522  def do_exit(self, arg):
523  print("Leaving the Matrix")
524  return True
525 
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 667 of file runTheMatrix.py.

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

667  def do_jobs(self, args):
668  print(Fore.GREEN + Style.BRIGHT + "List of jobs:")
669  for w in self.processes_.keys():
670  if self.processes_[w][0].poll() is None:
671  print(Fore.YELLOW + Style.BRIGHT + "Active job: {} since {:.2f} seconds.".format(w, time.time() - self.processes_[w][1]))
672  else:
673  print(Fore.RED + Style.BRIGHT + "Done job: {}".format(w))
674  print(Style.RESET_ALL)
675 
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 547 of file runTheMatrix.py.

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

547  def do_predefined(self, arg):
548  """Print the list of predefined workflows"""
549  print("List of predefined workflows")
550  if arg:
551  for w in arg.split():
552  if w in predefinedSet.keys():
553  print("Predefined Set: %s" % w)
554  print(predefinedSet[w])
555  else:
556  print("Unknown Set: %s" % w)
557  else:
558  print("[ " + Fore.RED + ", ".join([str(k) for k in predefinedSet.keys()]) + Fore.RESET + " ]")
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:19
#define str(s)

◆ do_runWorkflow()

def runTheMatrix.TheMatrix.do_runWorkflow (   self,
  arg 
)

Definition at line 588 of file runTheMatrix.py.

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

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

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

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

◆ do_searchInWorkflow()

def runTheMatrix.TheMatrix.do_searchInWorkflow (   self,
  arg 
)

Definition at line 691 of file runTheMatrix.py.

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

Referenced by runTheMatrix.TheMatrix.do_search().

691  def do_searchInWorkflow(self, arg):
692  args = arg.split()
693  if len(args) < 2:
694  print("searchInWorkflow name regexp")
695  return
696  if args[0] not in self.matrices_.keys():
697  print("Unknown workflow")
698  return
699  import re
700  pattern = None
701  try:
702  pattern = re.compile(args[1])
703  except:
704  print("Failed to compile regexp %s" % args[1])
705  return
706  counter = 0
707  for wfl in self.matrices_[args[0]].workFlows:
708  if re.match(pattern, wfl.nameId):
709  print("%s %s" % (Fore.BLUE + str(wfl.numId) + Fore.RESET,
710  Fore.GREEN + wfl.nameId + Fore.RESET))
711  counter +=1
712  print("Found %s compatible workflows inside %s" % (Fore.RED + str(counter) + Fore.RESET,
713  Fore.YELLOW + str(args[0])) + Fore.RESET)
714 
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 571 of file runTheMatrix.py.

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

571  def do_showWorkflow(self, arg):
572  if arg == '':
573  print("Available workflows:")
574  for k in self.matrices_.keys():
575  print(Fore.RED + Style.BRIGHT + k)
576  print(Style.RESET_ALL)
577  else:
578  selected = arg.split()
579  for k in selected:
580  if k not in self.matrices_.keys():
581  print("Unknown workflow %s: skipping" % k)
582  else:
583  for wfl in self.matrices_[k].workFlows:
584  print("%s %s" % (Fore.BLUE + str(wfl.numId) + Fore.RESET,
585  Fore.GREEN + wfl.nameId + Fore.RESET))
586  print("%s contains %d workflows" % (Fore.RED + k + Fore.RESET, len(self.matrices_[k].workFlows)))
587 
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 728 of file runTheMatrix.py.

References join(), and print().

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

◆ help_jobs()

def runTheMatrix.TheMatrix.help_jobs (   self)

Definition at line 676 of file runTheMatrix.py.

References join(), and print().

676  def help_jobs(self):
677  print("\n".join(["Print a full list of active and done jobs submitted",
678  "in the ongoing interactive session"]))
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:19

◆ help_predefined()

def runTheMatrix.TheMatrix.help_predefined (   self)

Definition at line 536 of file runTheMatrix.py.

References join(), and print().

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

◆ help_runWorkflow()

def runTheMatrix.TheMatrix.help_runWorkflow (   self)

Definition at line 647 of file runTheMatrix.py.

References join(), and print().

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

◆ help_search()

def runTheMatrix.TheMatrix.help_search (   self)

Definition at line 715 of file runTheMatrix.py.

References join(), and print().

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

◆ help_searchInWorkflow()

def runTheMatrix.TheMatrix.help_searchInWorkflow (   self)

Definition at line 680 of file runTheMatrix.py.

References join(), and print().

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

◆ help_showWorkflow()

def runTheMatrix.TheMatrix.help_showWorkflow (   self)

Definition at line 560 of file runTheMatrix.py.

References join(), and print().

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

Member Data Documentation

◆ do_EOF

runTheMatrix.TheMatrix.do_EOF
static

Definition at line 755 of file runTheMatrix.py.

◆ intro

runTheMatrix.TheMatrix.intro
static

Definition at line 501 of file runTheMatrix.py.

◆ matrices_

runTheMatrix.TheMatrix.matrices_

◆ opt_

runTheMatrix.TheMatrix.opt_

Definition at line 506 of file runTheMatrix.py.

◆ processes_

runTheMatrix.TheMatrix.processes_

◆ prompt

runTheMatrix.TheMatrix.prompt
static

Definition at line 502 of file runTheMatrix.py.