code: def run(model_specification, results_directory, verbose, log, with_debugger):
      
      log_level = logging.DEBUG if verbose else logging.ERROR
      logging.basicConfig(filename=log, level=log_level)
  
      try:
          run_simulation(model_specification, results_directory)
      except (BdbQuit, KeyboardInterrupt):
          raise
      except Exception as e:
          if with_debugger:
              import pdb
              import traceback
              traceback.print_exc()
              pdb.post_mortem()
          else:
              logging.exception("Uncaught exception {}".format(e))
              raise
docs: Run a simulation from the command line.
  
      The simulation itself is defined by the given MODEL_SPECIFICATION yaml file.
  
      Within the results directory, which defaults to ~/vivarium_results if none
      is provided, a subdirectory will be created with the same name as the
      MODEL_SPECIFICATION if one does not exist. Results will be written to a
      further subdirectory named after the start time of the simulation run.