class_docstr: Computes Area Under ROC Curve (AUC) metrics.
  
  Does so by keeping track of positives' and negatives' probability score counts in
  Counters or dictionaries. Note the introduction of `max_bucket_dec_places`; this
  integer number determines the number of digits to save for the probability scores. A
  higher `max_bucket_dec_places` will a more accurate estimate of the exact AUC
  metric, but may also use more space.
  
  NOTE: currently only used for classifiers in the `eval_model` script; to use,
  add the argument `-auc <max_bucket_dec_places>` when calling `eval_model` script
class_docstr_tok: ["Computes","Area","Under","ROC","Curve","(","AUC",")","metrics",".","Does","so","by","keeping","track","of","positives","'","and","negatives","'","probability","score","counts","in","Counters","or","dictionaries",".","Note","the","introduction","of","`","max_bucket_dec_places","`",";","this","integer","number","determines","the","number","of","digits","to","save","for","the","probability","scores",".","A","higher","`","max_bucket_dec_places","`","will","a","more","accurate","estimate","of","the","exact","AUC","metric",",","but","may","also","use","more","space",".","NOTE",":","currently","only","used","for","classifiers","in","the","`","eval_model","`","script",";","to","use",",","add","the","argument","`","-auc","<","max_bucket_dec_places",">","`","when","calling","`","eval_model","`","script"]
docstr: given the true/golden labels and the probabilities of the positive class, we
  will update our bucket dictionaries of positive and negatives (based on the
  class_name); `max_bucket_dec_places` is also used here to round the
  probabilities and possibly.
code: def update_raw(
      self,
      true_labels: List[Union[int, str]],
      pos_probs: List[float],
      class_name,
  ):
      """
      given the true/golden labels and the probabilities of the positive class, we
      will update our bucket dictionaries of positive and negatives (based on the
      class_name); `max_bucket_dec_places` is also used here to round the
      probabilities and possibly.
      """
      assert self._class_name == class_name
      assert len(true_labels) == len(pos_probs)
  
      TO_INT_FACTOR = 10**self._max_bucket_dec_places
      # add the upper and lower bound of the values
      for label, prob in zip(true_labels, pos_probs):
          # calculate the upper and lower bound of the values
          prob_down = math.floor(prob * TO_INT_FACTOR) / TO_INT_FACTOR
          if label == self._class_name:
              interested_dict = self._pos_dict
          else:
              interested_dict = self._neg_dict
          if interested_dict.get(prob_down):
              interested_dict[prob_down] += 1
          else:
              interested_dict[prob_down] = 1
  
imports: from parlai.core.params import ParlaiParser
  from parlai.core.opt import Opt
  from parlai.utils.torch import PipelineHelper, total_parameters, trainable_parameters
  from parlai.core.torch_agent import TorchAgent, Output
  from parlai.utils.misc import round_sigfigs, warn_once
  from parlai.core.metrics import Metric, AverageMetric
  from typing import List, Optional, Tuple, Dict, Union
  from typing import Counter
  from parlai.utils.typing import TScalar
  from parlai.utils.io import PathManager
  from sklearn.metrics import auc
  import parlai.utils.logging
  import torch.nn.functional
  import torch
  import math
label_desc: Use image node_id 4 for calling the AUCMetrics obj's underlying member method code with example usage: obj.update_raw(true_labels, pos_probs, class_name) without return types