class_docstr: Class that stores the results of an Open Images detection evaluation.
  
  Args:
      samples: the :class:`fiftyone.core.collections.SampleCollection` used
      config: the :class:`OpenImagesEvaluationConfig` used
      eval_key: the evaluation key
      matches: a list of
          ``(gt_label, pred_label, iou, pred_confidence, gt_id, pred_id)``
          matches. Either label can be ``None`` to indicate an unmatched
          object
      precision: a dict of per-class precision values
      recall: a dict of per-class recall values
      classes: the list of possible classes
      thresholds (None): an optional dict of per-class decision thresholds
      missing (None): a missing label string. Any unmatched objects are
          given this label for evaluation purposes
      backend (None): a :class:`OpenImagesEvaluation` backend
class_docstr_tok: ["Class","that","stores","the","results","of","an","Open","Images","detection","evaluation",".","Args",":","samples",":","the",":","class",":","`","fiftyone.core.collections.SampleCollection","`","used","config",":","the",":","class",":","`","OpenImagesEvaluationConfig","`","used","eval_key",":","the","evaluation","key","matches",":","a","list","of","``","(","gt_label",",","pred_label",",","iou",",","pred_confidence",",","gt_id",",","pred_id",")","``","matches",".","Either","label","can","be","``","None","``","to","indicate","an","unmatched","object","precision",":","a","dict","of","per-class","precision","values","recall",":","a","dict","of","per-class","recall","values","classes",":","the","list","of","possible","classes","thresholds","(","None",")",":","an","optional","dict","of","per-class","decision","thresholds","missing","(","None",")",":","a","missing","label","string",".","Any","unmatched","objects","are","given","this","label","for","evaluation","purposes","backend","(","None",")",":","a",":","class",":","`","OpenImagesEvaluation","`","backend"]
code: def __init__(
      self,
      samples,
      config,
      eval_key,
      matches,
      precision,
      recall,
      classes,
      thresholds=None,
      missing=None,
      backend=None,
  ):
      super().__init__(
          samples,
          config,
          eval_key,
          matches,
          classes=classes,
          missing=missing,
          backend=backend,
      )
  
      self.precision = precision
      self.recall = recall
      self.thresholds = thresholds
  
      self._classwise_AP = {}
      for c in classes:
          if c in precision and c in recall:
              ap = _compute_AP(precision[c], recall[c])
          else:
              ap = -1
  
          self._classwise_AP[c] = ap
  
imports: from collections import defaultdict
  from copy import deepcopy
  import numpy
  import fiftyone.core.plots
  import fiftyone.utils.iou
  from .detection import DetectionEvaluation, DetectionEvaluationConfig, DetectionResults
label_desc: Use image node_id 1 to create a new OpenImagesDetectionResults object from inherited base classes: DetectionResults with example: obj = OpenImagesDetectionResults(samples, config, eval_key, matches, precision, recall, classes, thresholds, missing, backend)