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: Calculates the False Positives and True positives; returned as a list of pairs:
  
  `[(fp, tp)]`
code: def _calc_fp_tp(self) -> List[Tuple[int]]:
      """
      Calculates the False Positives and True positives; returned as a list of pairs:
  
      `[(fp, tp)]`
      """
      all_thresholds = sorted(
          set(list(self._pos_dict.keys()) + list(self._neg_dict.keys()))
      )
      # sorted in ascending order,
      # so adding a upper bound so that its tp, fp is (0, 0)
      all_thresholds.append(all_thresholds[-1] + 1)
      L = len(all_thresholds)
      # false positives, true positives
      fp_tp = [(0, 0)]
  
      # the biggest one is always (0,0), so skip that one
      for i in range(L - 2, -1, -1):
          fp, tp = fp_tp[-1]
          thres = all_thresholds[i]
          # false positives
          fp += self._neg_dict.get(thres, 0)
          # true positives
          tp += self._pos_dict.get(thres, 0)
          fp_tp.append((fp, tp))
      return fp_tp
  
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 6 for calling the AUCMetrics obj's underlying member method code with example usage: obj._calc_fp_tp() and returns: fp_tp