code: def _compute_curve(labels, predictions, num_thresholds, weights=None):
      
  
      if weights is None:
          weights = 1.0
  
      # Compute bins of true positives and false positives.
      bucket_indices = np.int32(np.floor(predictions * (num_thresholds - 1)))
      float_labels = labels.astype(np.float)
      histogram_range = (0, num_thresholds - 1)
      tp_buckets, _ = np.histogram(
          bucket_indices,
          bins=num_thresholds,
          range=histogram_range,
          weights=float_labels * weights)
      fp_buckets, _ = np.histogram(
          bucket_indices,
          bins=num_thresholds,
          range=histogram_range,
          weights=(1.0 - float_labels) * weights)
  
      # Obtain the reverse cumulative sum.
      tp = np.cumsum(tp_buckets[::-1])[::-1]
      fp = np.cumsum(fp_buckets[::-1])[::-1]
      tn = fp[0] - fp
      fn = tp[0] - tp
      precision = tp / np.maximum(_MINIMUM_COUNT, tp + fp)
      recall = tp / np.maximum(_MINIMUM_COUNT, tp + fn)
      return np.stack((tp, fp, tn, fn, precision, recall))
docs: This function is another implementation of functions in
      https://github.com/tensorflow/tensorboard/blob/master/tensorboard/plugins/pr_curve/summary.py