class_docstr: A class for generating synthetic time series by composing
  other TimeSeriesGenerator's.
class_docstr_tok: ["A","class","for","generating","synthetic","time","series","by","composing","other","TimeSeriesGenerator","'s","."]
code: def __init__(
      self,
      generators: List[TimeSeriesGenerator],
      per_generator_noise: bool = False,
      **kwargs,
  ):
      kwargs["f"] = lambda x: x
      super().__init__(**kwargs)
      """
          :param generators: A list of other time series generators to compose.
          :param per_generator_noise: True if noise should be injected by each generator
              during composition. i.e., if we have two generators with generating functions
              f and g. If per_generator_noise = True, y = f(g+noise)+noise. Otherwise, 
              y = f(g) + noise.
          """
      self.per_generator_noise = per_generator_noise
      self.generators = generators
  
imports: import numpy
  import pandas
  from operator import add
  from functools import reduce
  from typing import Callable, List, Union
  from merlion.utils.time_series import UnivariateTimeSeries, TimeSeries
label_desc: Use image node_id 1 to create a new GeneratorComposer object from inherited base classes: TimeSeriesGenerator with example: obj = GeneratorComposer(generators, per_generator_noise)