code: def apply_gates_to_fd(stilde_dict, gates):
      
      # copy data to new dictionary
      outdict = dict(stilde_dict.items())
      # create a time-domin strain dictionary to apply the gates to
      strain_dict = dict([[ifo, outdict[ifo].to_timeseries()] for ifo in gates])
      # apply gates and fft back to the frequency domain
      for ifo,d in apply_gates_to_td(strain_dict, gates).items():
          outdict[ifo] = d.to_frequencyseries()
      return outdict
docs: Applies the given dictionary of gates to the given dictionary of
      strain in the frequency domain.
  
      Gates are applied by IFFT-ing the strain data to the time domain, applying
      the gate, then FFT-ing back to the frequency domain.
  
      Parameters
      ----------
      stilde_dict : dict
          Dictionary of frequency-domain strain, keyed by the ifos.
      gates : dict
          Dictionary of gates. Keys should be the ifo to apply the data to,
          values are a tuple giving the central time of the gate, the half
          duration, and the taper duration.
  
      Returns
      -------
      dict
          Dictionary of frequency-domain strain with the gates applied.