code: def track(self, data: Dict[str, SeriesModel]):
      res = {}
      for ind, s in data.items():
          ind_split = ind.split(".")
          ind_type = ind_split[0]
          if ind_type not in INDICATORS:
              if ind not in self.metrics.indicators:
                  if len(self.metrics.indicators) >= INDICATOR_LIMIT:
                      continue
                  self.metrics.indicators.add(".".join(ind))
  
              res[ind] = s
  
      self.metrics.track(res)
  
imports: from typing import Dict, Any, List, Optional
  from fastapi import Request
  from fastapi.responses import JSONResponse
  from labml_db import Model, Index, load_keys
  from labml_db.serializer.pickle import PickleSerializer
  from labml_db.serializer.yaml import YamlSerializer
  from labml_app.logger import logger
  from labml_app import utils
  from labml_app.enums import INDICATORS
  from .distributed_metrics import get_merged_dist_metrics_tracking, set_merged_metrics_preferences, get_merged_metrics_preferences
  from ..analysis import Analysis
  from ..series import SeriesModel, Series
  from ..series_collection import SeriesCollection
  from ..preferences import Preferences
  from labml_app.settings import INDICATOR_LIMIT
  from ...db import run
label_desc: Use image node_id 2 for calling the MetricsAnalysis obj's underlying member method code with example usage: obj.track(data) without return types