code: def meraculous_runner(self):
          
          #set the dir to temp assembly dir
          os.chdir(self.allAssembliesDir)
  
          print(self.callString)
          p = subprocess.run(self.callString, shell=True, stdout=subprocess.PIPE,
                             stderr=subprocess.PIPE,
                             universal_newlines=True)
          output = str(p.stdout)
          err = str(p.stderr)
  
          #generate the report for the run
          self._generate_report()
  
          #exit, returning the output and err
          return (output, err)
docs: Check to make sure that the allAssembliesDir has been created, if not,
          make it. This will only execute for the first time an assembly has been
          run in this directory.
  
          Run the directory from allAssembliesDir. The self.callString instance
          attribute tells Meraculous to name the assembly directory self.runName.
  
          After the run is complete, create the meraculous report, passing the
          directory containing the run (aka self.thisAssemblyDir).