code: def aggregate_preds(self, new_batch, context=None):
      if new_batch is None:
          return
  
      target_vocab = self.tensorizers["trg_seq_tokens"].vocab
      target_pad_token = target_vocab.get_pad_index()
      target_bos_token = target_vocab.get_bos_index()
      target_eos_token = target_vocab.get_eos_index()
  
      cleaned_preds = [
          self._remove_tokens(
              pred,
              [target_pad_token, target_eos_token, target_bos_token],
          )
          for pred in self._make_simple_list(new_batch)
      ]
  
      self.aggregate_data(self.all_preds, cleaned_preds)
  
      pred_trees = [
          self.stringify_annotation_tree(pred[0])
          for pred in cleaned_preds
      ]
  
      self.aggregate_data(self.all_pred_trees, pred_trees)
  
imports: from typing import Dict, List, Optional
  from pytext.common.constants import BatchContext, DatasetFieldName, RawExampleFieldName, Stage
  from pytext.data.data_structures.annotation import Annotation, INVALID_TREE_STR
  from pytext.data.tensorizers import Tensorizer
  from pytext.metric_reporters.channel import Channel, ConsoleChannel
  from pytext.metric_reporters.compositional_metric_reporter import CompositionalMetricReporter
  from pytext.metric_reporters.metric_reporter import MetricReporter
  from pytext.metric_reporters.seq2seq_metric_reporter import Seq2SeqFileChannel, Seq2SeqMetricReporter
  from pytext.metrics.intent_slot_metrics import compute_all_metrics, FramePredictionPair
label_desc: Use image node_id 7 for calling the Seq2SeqCompositionalMetricReporter obj's underlying member method code with example usage: obj.aggregate_preds(new_batch, context) without return types