code: def run_evaluation(
      file_name: str,
  ) -> Optional[Mapping[str, Iterable[EstimatorResults]]]:
      logger.info(f"received filename {file_name}")
      try:
          with open(file_name, "rb") as fp:
              estimators, inputs = pickle.load(fp)
      except Exception as err:
          return None
      results = {}
      for estimator in estimators:
          estimator_name = repr(estimator)
          estimator_results = []
          for input in inputs:
              try:
                  estimator_results.append(estimator.evaluate(input))
              except Exception as err:
                  logger.error(f"{estimator_name} error {err}")
          results[repr(estimator)] = estimator_results
      return results
  
imports: import logging
  import math
  import pickle
  import tempfile
  from abc import ABC, abstractmethod
  from dataclasses import dataclass, field
  from multiprocessing import Pool
  from typing import Iterable, List, Mapping, Optional, Tuple, Union
  import torch
  from reagent.evaluation.cpe import bootstrapped_std_error_of_mean
  from torch import Tensor
label_desc: Use image node_id 1 for calling a global function with example usage: run_evaluation(file_name) and returns: results, None