docstr: :param pred_group, label_group: Strings, the groups to check
  :param correct_counts: Tuple of (TP, FP, FN), the expected counts
  :param metric_type: String, whether we should convert the groups using
  the groups dictionary or joint groups dicionary
docstr_tok: [":","param","pred_group",",","label_group",":","Strings",",","the","groups","to","check",":","param","correct_counts",":","Tuple","of","(","TP",",","FP",",","FN",")",",","the","expected","counts",":","param","metric_type",":","String",",","whether","we","should","convert","the","groups","using","the","groups","dictionary","or","joint","groups","dicionary"]
code: def check_token_counts(
      self, pred_group, label_group, correct_counts, metric_type="group"
  ):
      """
      :param pred_group, label_group: Strings, the groups to check
      :param correct_counts: Tuple of (TP, FP, FN), the expected counts
      :param metric_type: String, whether we should convert the groups using
      the groups dictionary or joint groups dicionary
      """
      count_fn = get_count_fn(metric_type, "token")
  
      # Get dictionary to convert from str -> group
      if metric_type == "group":
          all_groups = self.groups
      elif metric_type == "joint":
          all_groups = self.joint_groups
  
      pred_group = all_groups[pred_group]
      label_group = all_groups[label_group]
  
      self.check_counts(
          count_fn, pred_group, label_group, correct_counts
      )
  
imports: import unittest
  from copy import deepcopy
  from finetune.util.group_metrics import get_count_fn, calc_group_assignment, create_joint_groups, get_metrics, group_metrics, joint_metrics
label_desc: Use image node_id 12 for calling the TestGroupMetricCountFunctions obj's underlying member method code with example usage: obj.check_token_counts(pred_group, label_group, correct_counts, metric_type) without return types