class_docstr: Base class for kendall's tau metrics.
class_docstr_tok: ["Base","class","for","kendall","'s","tau","metrics","."]
docstr: Compute a tuple containing the concordant pairs, discordant pairs,
  ties in `y_true` and `y_pred`.
  
  Returns:
    A tuple
docstr_tok: ["Compute","a","tuple","containing","the","concordant","pairs",",","discordant","pairs",",","ties","in","`","y_true","`","and","`","y_pred","`",".","Returns",":","A","tuple"]
code: def _compute_variables(self):
      """Compute a tuple containing the concordant pairs, discordant pairs,
      ties in `y_true` and `y_pred`.
  
      Returns:
        A tuple
      """
      m = tf.cast(self.m, tf.float32)
      n_cap = tf.cumsum(tf.cumsum(m, axis=0), axis=1)
      # Number of concordant pairs.
      p = tf.math.reduce_sum(tf.multiply(n_cap[:-1, :-1], m[1:, 1:]))
      sum_m_squard = tf.math.reduce_sum(tf.math.square(m))
      # Ties in x.
      t = (
          tf.cast(
              tf.math.reduce_sum(tf.math.square(self.nrow)), tf.float32
          )
          - sum_m_squard
      ) / 2.0
      # Ties in y.
      u = (
          tf.cast(
              tf.math.reduce_sum(tf.math.square(self.ncol)), tf.float32
          )
          - sum_m_squard
      ) / 2.0
      # Ties in both.
      b = tf.math.reduce_sum(tf.multiply(m, (m - 1.0))) / 2.0
      # Number of discordant pairs.
      n = tf.cast(self.n, tf.float32)
      q = (n - 1.0) * n / 2.0 - p - t - u - b
      return p, q, t, u
  
imports: from abc import abstractmethod
  import numpy
  import tensorflow
  from tensorflow.keras import backend
  from tensorflow.keras.metrics import Metric
  from tensorflow_addons.utils.types import AcceptableDTypes
  from typeguard import typechecked
label_desc: Use image node_id 1 for calling the KendallsTauBase obj's underlying member method code with example usage: obj._compute_variables() and returns: p,  q,  t,  u