code: def test_sample_conditional(
      whiten: bool, full_cov: bool, full_output_cov: bool
  ) -> None:
      if full_cov and full_output_cov:
          return
  
      q_mu = tf.random.uniform(
          (Data.M, Data.P), dtype=tf.float64
      )  # [M, P]
      q_sqrt = tf.convert_to_tensor(
          [
              np.tril(
                  tf.random.uniform((Data.M, Data.M), dtype=tf.float64)
              )
              for _ in range(Data.P)
          ]
      )  # [P, M, M]
  
      Z = Data.X[: Data.M, ...]  # [M, D]
      Xs: AnyNDArray = np.ones((Data.N, Data.D), dtype=float_type)
  
      inducing_variable = InducingPoints(Z)
      kernel = SquaredExponential()
  
      # Path 1
      value_f, mean_f, var_f = sample_conditional(
          Xs,
          inducing_variable,
          kernel,
          q_mu,
          q_sqrt=q_sqrt,
          white=whiten,
          full_cov=full_cov,
          full_output_cov=full_output_cov,
          num_samples=int(1e5),
      )
      value_f = value_f.numpy().reshape(
          (-1,) + value_f.numpy().shape[2:]
      )
  
      # Path 2
      if full_output_cov:
          pytest.skip(
              "sample_conditional with X instead of inducing_variable does not support full_output_cov"
          )
  
      value_x, mean_x, var_x = sample_conditional(
          Xs,
          Z,
          kernel,
          q_mu,
          q_sqrt=q_sqrt,
          white=whiten,
          full_cov=full_cov,
          full_output_cov=full_output_cov,
          num_samples=int(1e5),
      )
      value_x = value_x.numpy().reshape(
          (-1,) + value_x.numpy().shape[2:]
      )
  
      # check if mean and covariance of samples are similar
      np.testing.assert_array_almost_equal(
          np.mean(value_x, axis=0), np.mean(value_f, axis=0), decimal=1
      )
      np.testing.assert_array_almost_equal(
          np.cov(value_x, rowvar=False),
          np.cov(value_f, rowvar=False),
          decimal=1,
      )
      np.testing.assert_allclose(mean_x, mean_f)
      np.testing.assert_allclose(var_x, var_f)
  
imports: from typing import Callable, List, Sequence, Tuple, cast
  import numpy
  import pytest
  import scipy
  import tensorflow
  from _pytest.fixtures import SubRequest
  from check_shapes import ShapeChecker, check_shapes
  import gpflow
  import gpflow.inducing_variables.multioutput
  import gpflow.kernels.multioutput
  from gpflow import set_trainable
  from gpflow.base import AnyNDArray, RegressionData
  from gpflow.conditionals import sample_conditional
  from gpflow.conditionals.util import fully_correlated_conditional, fully_correlated_conditional_repeat, independent_interdomain_conditional, sample_mvn
  from gpflow.config import default_float, default_jitter
  from gpflow.inducing_variables import InducingPoints
  from gpflow.kernels import SquaredExponential
  from gpflow.likelihoods import Gaussian
  from gpflow.models import SVGP
label_desc: Use image node_id 7 for calling a global function with example usage: test_sample_conditional(whiten, full_cov, full_output_cov) without return types