code: def power_chisq(template, data, num_bins, psd,
                  low_frequency_cutoff=None,
                  high_frequency_cutoff=None,
                  return_bins=False):
      
      htilde = make_frequency_series(template)
      stilde = make_frequency_series(data)
  
      bins = power_chisq_bins(htilde, num_bins, psd, low_frequency_cutoff,
                              high_frequency_cutoff)
      corra = zeros((len(htilde)-1)*2, dtype=htilde.dtype)
      total_snr, corr, tnorm = matched_filter_core(htilde, stilde, psd,
                             low_frequency_cutoff, high_frequency_cutoff,
                             corr_out=corra)
  
      return power_chisq_from_precomputed(corr, total_snr, tnorm, bins, return_bins=return_bins)
docs: Calculate the chisq timeseries
  
      Parameters
      ----------
      template: FrequencySeries or TimeSeries
          A time or frequency series that contains the filter template.
      data: FrequencySeries or TimeSeries
          A time or frequency series that contains the data to filter. The length
          must be commensurate with the template.
          (EXPLAINME - does this mean 'the same as' or something else?)
      num_bins: int
          The number of bins in the chisq. Note that the dof goes as 2*num_bins-2.
      psd: FrequencySeries
          The psd of the data.
      low_frequency_cutoff: {None, float}, optional
          The low frequency cutoff for the filter
      high_frequency_cutoff: {None, float}, optional
          The high frequency cutoff for the filter
      return_bins: {boolean, False}, optional
          Return a list of the individual chisq bins
  
      Returns
      -------
      chisq: TimeSeries
          TimeSeries containing the chisq values for all times.