code: def test_multi_signal_series_processor(dummy_data):
      def percentile_clip(series, l_perc=0.01, h_perc=0.99):
          # Note: this func is useless in ML (data leakage; percentiles are not fitted)
          l_thresh = np.percentile(series, l_perc * 100)
          h_thresh = np.percentile(series, h_perc * 100)
          return series.clip(l_thresh, h_thresh)
  
      lower = 0.02
      upper = 0.99  # The default value => do not pass
      series_processor = SeriesProcessor(
          series_names=["EDA", "TMP"],
          function=percentile_clip,
          l_perc=lower,
      )
      assert series_processor.name == "percentile_clip"
      assert len(series_processor.get_required_series()) == 2
      assert set(series_processor.get_required_series()) == set(
          ["EDA", "TMP"]
      )
      series_dict = dataframe_to_series_dict(dummy_data)
      res = series_processor(series_dict)
  
      assert isinstance(res, dict)
      assert res.keys() == set(["EDA", "TMP"])
      assert isinstance(res["EDA"], pd.Series)
      assert isinstance(res["TMP"], pd.Series)
      assert res["EDA"].shape == dummy_data["EDA"].shape
      assert res["TMP"].shape == dummy_data["TMP"].shape
  
      assert min(res["EDA"]) == dummy_data["EDA"].quantile(lower)
      assert max(res["EDA"]) == dummy_data["EDA"].quantile(upper)
      assert min(res["TMP"]) == dummy_data["TMP"].quantile(lower)
      assert max(res["TMP"]) == dummy_data["TMP"].quantile(upper)
  
imports: from typing import List
  import numpy
  import pandas
  import pytest
  from pandas.testing import assert_index_equal, assert_series_equal
  from tsflex.processing import SeriesProcessor, dataframe_func
  from .utils import dataframe_to_series_dict, dummy_data, series_to_series_dict
label_desc: Use image node_id 11 for calling a global function with example usage: test_multi_signal_series_processor(dummy_data) and returns: series