code: def create_waveform_generator(variable_params, data,
                                recalibration=None, gates=None,
                                **static_params):
      try:
          approximant = static_params['approximant']
      except KeyError:
          raise ValueError("no approximant provided in the static args")
      generator_function = generator.select_waveform_generator(approximant)
      delta_f = None
      for d in data.values():
          if delta_f is None:
              delta_f = d.delta_f
              delta_t = d.delta_t
              start_time = d.start_time
          else:
              if not all([d.delta_f == delta_f, d.delta_t == delta_t,
                          d.start_time == start_time]):
                  raise ValueError("data must all have the same delta_t, "
                                   "delta_f, and start_time")
      waveform_generator = generator.FDomainDetFrameGenerator(
          generator_function, epoch=start_time,
          variable_args=variable_params, detectors=list(data.keys()),
          delta_f=delta_f, delta_t=delta_t,
          recalib=recalibration, gates=gates,
          **static_params)
      return waveform_generator