code: def __init__(self, *args, **kwargs) -> None:
      super().__init__(*args, **kwargs)
      self.csv_name = join(rootdir, "data", "example.csv")
      self.test_len = 32768
      self.data = csv_to_time_series(
          self.csv_name, timestamp_unit="ms", data_cols="kpi"
      )
      logger.info(f"Data looks like:\n{self.data[:5]}")
      self.vals_train = self.data[: -self.test_len]
      self.vals_test = self.data[-self.test_len :]
      self.model = SpectralResidual(
          SpectralResidualConfig(
              local_wind_sz=21,
              estimated_points=5,
              predicting_points=5,
              target_seq_index=0,
              threshold=AggregateAlarms(
                  alm_threshold=3.5, min_alm_in_window=1
              ),
          )
      )
      print()
      logger.info("Training model...\n")
      self.model.train(self.vals_train)
  
file_path: merlion/tests/anomaly/test_spectral_residual.py
imports: import logging
  import sys
  import unittest
  from os.path import join, dirname, abspath
  import numpy
  from merlion.models.anomaly.spectral_residual import SpectralResidual, SpectralResidualConfig
  from merlion.post_process.threshold import AggregateAlarms
  from merlion.utils.data_io import csv_to_time_series
label_desc: Use image node_id 1 to create a new TestSpectralResidual object from inherited base classes: unittest with example: obj = TestSpectralResidual()