code: def qplane(qplane_tile_dict, fseries, return_complex=False):
      
      # store q-transforms for each q in a dict
      qplanes = {}
      max_energy, max_key = None, None
      for i, q in enumerate(qplane_tile_dict):
          energies = []
          for f0 in qplane_tile_dict[q]:
              energy = qseries(fseries, q, f0, return_complex=return_complex)
              menergy = abs(energy).max()
              energies.append(energy)
  
              if i == 0 or menergy > max_energy:
                  max_energy = menergy
                  max_key = q
  
          qplanes[q] = energies
  
      # record q-transform output for peak q
      plane = qplanes[max_key]
      frequencies = qplane_tile_dict[max_key]
      times = plane[0].sample_times.numpy()
      plane = numpy.array([v.numpy() for v in plane])
      return max_key, times, frequencies, numpy.array(plane)
docs: Performs q-transform on each tile for each q-plane and selects
         tile with the maximum energy. Q-transform can then
         be interpolated to a desired frequency and time resolution.
  
      Parameters
      ----------
      qplane_tile_dict:
          Dictionary containing a list of q-tile tupples for each q-plane
      fseries: 'pycbc FrequencySeries'
          frequency-series data set
      return_complex: {False, bool}
          Return the raw complex series instead of the normalized power.
  
      Returns
      -------
      q : float
          The q of the maximum q plane
      times : numpy.ndarray
          The time that the qtransform is sampled.
      freqs : numpy.ndarray
          The frequencies that the qtransform is samled.
      qplane : numpy.ndarray (2d)
          The two dimensional interpolated qtransform of this time series.