code: def _compute_logpdf_quadrature(self, alpha0, beta0, alpha1, beta1, z):
      def _log_integrand(y):
          # Pad the axes to allow for vectorized computation
          return (
              np.log(y)
              + sp_stats.beta.logpdf(
                  y * z[..., np.newaxis],
                  alpha0[..., np.newaxis],
                  beta0[..., np.newaxis],
              )
              + sp_stats.beta.logpdf(
                  y, alpha1[..., np.newaxis], beta1[..., np.newaxis]
              )
          )
  
      roots, weights = sp_special.roots_legendre(8000)
      # We need to account for the change of interval from [-1, 1] to [0, 1]
      shifted_roots = 0.5 * roots + 0.5
      return -np.log(2.0) + sp_special.logsumexp(
          _log_integrand(shifted_roots) + np.log(weights), axis=-1
      )
  
imports: import numpy
  from scipy import special
  from scipy import stats
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import beta_quotient
  from tensorflow_probability.python.distributions.internal import statistical_testing
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 1 for calling the _BetaQuotientTest obj's underlying member method code with example usage: obj._compute_logpdf_quadrature(alpha0, beta0, alpha1, beta1, z) and returns: unknown, unknown