code: def test_metrics_new_label(self):
      expected = {
          "per_class_metrics": {
              "class1": {
                  "precision": 0,
                  "recall": 0,
                  "f1-score": 0,
                  "support": 20,
                  "true_positives": 0,
                  "false_positives": 0,
                  "false_negatives": 20,
              },
              "class2": {
                  "precision": 0,
                  "recall": 0,
                  "f1-score": 0,
                  "support": 10,
                  "true_positives": 0,
                  "false_positives": 0,
                  "false_negatives": 10,
              },
              "class3": {
                  "precision": 0,
                  "recall": 0,
                  "f1-score": 0,
                  "support": 10,
                  "true_positives": 0,
                  "false_positives": 30,
                  "false_negatives": 0,
              },
          },
          "avg_f1": {
              "micro": 0,
              "macro": 0,
              "weighted": 0,
          },
      }
      preds = [self.new_label_groups] * 10
      labels = [self.base_groups] * 10
      self.check_metrics(preds, labels, expected, get_metrics)
  
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 TestGroupMetrics obj's underlying member method code with example usage: obj.test_metrics_new_label() without return types