docstr: Run task with given parameters and provide error identifier
  
  Parameters
  ----------
  task_dict : dict
      input task dictionary for task run controller
  snapshot_dict : dict
      input snapshot dictionary for task run controller
  error_identifier : str
      identifier to print error
  data_paths : list
      list of data paths being passed for task run
  
  Returns
  -------
  Task or False
      the Task object which completed its run with updated parameters.
      returns False if an error occurs
docstr_tok: ["Run","task","with","given","parameters","and","provide","error","identifier","Parameters","--","--","--","--","--","task_dict",":","dict","input","task","dictionary","for","task","run","controller","snapshot_dict",":","dict","input","snapshot","dictionary","for","task","run","controller","error_identifier",":","str","identifier","to","print","error","data_paths",":","list","list","of","data","paths","being","passed","for","task","run","Returns","--","--","--","-","Task","or","False","the","Task","object","which","completed","its","run","with","updated","parameters",".","returns","False","if","an","error","occurs"]
code: def task_run_helper(
      self, task_dict, snapshot_dict, error_identifier, data_paths=None
  ):
      """
      Run task with given parameters and provide error identifier
  
      Parameters
      ----------
      task_dict : dict
          input task dictionary for task run controller
      snapshot_dict : dict
          input snapshot dictionary for task run controller
      error_identifier : str
          identifier to print error
      data_paths : list
          list of data paths being passed for task run
  
      Returns
      -------
      Task or False
          the Task object which completed its run with updated parameters.
          returns False if an error occurs
      """
      self.task_controller = TaskController()
      task_obj = self.task_controller.create()
  
      updated_task_obj = task_obj
      # Pass in the task
      status = "NOT STARTED"
      try:
          if data_paths:
              try:
                  (
                      _,
                      _,
                      task_dict["data_file_path_map"],
                      task_dict["data_directory_path_map"],
                  ) = parse_paths(
                      self.task_controller.home, data_paths, "/data"
                  )
              except PathDoesNotExist as e:
                  status = "NOT STARTED"
                  workspace = task_dict.get("workspace", None)
                  command = task_dict.get("command", None)
                  command_list = task_dict.get("command_list", None)
                  interactive = task_dict.get("interactive", False)
                  self.task_controller.update(
                      task_obj.id,
                      workspace=workspace,
                      command=command,
                      command_list=command_list,
                      interactive=interactive,
                  )
                  self.cli_helper.echo(
                      __("error", "cli.run.parse.paths", str(e))
                  )
                  return False
  
          updated_task_obj = self.task_controller.run(
              task_obj.id,
              snapshot_dict=snapshot_dict,
              task_dict=task_dict,
          )
          status = "SUCCESS"
          self.cli_helper.echo(__("info", "cli.run.run.stop"))
      except Exception as e:
          status = "FAILED"
          self.logger.error("%s %s" % (e, task_dict))
          self.cli_helper.echo("%s" % e)
          self.cli_helper.echo(
              __("error", error_identifier, task_obj.id)
          )
          return False
      finally:
          self.task_controller.stop(
              task_id=updated_task_obj.id, status=status
          )
      self.cli_helper.echo(
          __("info", "cli.run.run.complete", updated_task_obj.id)
      )
  
      return updated_task_obj
  
file_path: datmo/datmo/cli/command/base.py
imports: from datmo.config import Config
  from datmo.core.util.i18n import get
  from datmo.core.util.exceptions import ClassMethodNotFound, PathDoesNotExist
  from datmo.cli.parser import get_datmo_parser
  from datmo.core.controller.task import TaskController
  from datmo.core.util.logger import DatmoLogger
  from datmo.core.util.misc_functions import parameterized, parse_paths
label_desc: Use image node_id 5 for calling the BaseCommand obj's underlying member method code with example usage: obj.task_run_helper(task_dict, snapshot_dict, error_identifier, data_paths) and returns: updated_task_obj, False, False