code: def test_valid_init(self):
      class _HalfNormal(half_normal.HalfNormal):
          def _default_event_space_bijector(self):
              # This bijector is intentionally mis-specified so that ~50% of
              # initialiations will fail.
              return identity.Identity(validate_args=self.validate_args)
  
      tough_dist = jds.JointDistributionSequential(
          [
              _HalfNormal(scale=1.0, name=f"dist_{idx}")
              for idx in range(4)
          ]
      )
  
      # Twenty chains with three parameters gives a 1 / 2^60 chance of
      # initializing with a finite log probability by chance.
      _, init, _, _, _, _ = windowed_sampling._setup_mcmc(
          model=tough_dist,
          n_chains=[20],
          seed=test_util.test_seed(),
          dist_3=1.0,
      )
  
      self.assertAllGreater(self.evaluate(init), 0.0)
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import identity
  from tensorflow_probability.python.bijectors import pad
  from tensorflow_probability.python.distributions import autoregressive
  from tensorflow_probability.python.distributions import beta_binomial
  from tensorflow_probability.python.distributions import dirichlet
  from tensorflow_probability.python.distributions import half_normal
  from tensorflow_probability.python.distributions import independent
  from tensorflow_probability.python.distributions import joint_distribution_auto_batched
  from tensorflow_probability.python.distributions import joint_distribution_coroutine
  from tensorflow_probability.python.distributions import joint_distribution_named
  from tensorflow_probability.python.distributions import joint_distribution_sequential
  from tensorflow_probability.python.distributions import multinomial
  from tensorflow_probability.python.distributions import mvn_diag
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.distributions import poisson
  from tensorflow_probability.python.distributions import sample
  from tensorflow_probability.python.distributions import uniform
  from tensorflow_probability.python.experimental import distribute
  from tensorflow_probability.python.experimental.mcmc import windowed_sampling
  from tensorflow_probability.python.internal import callable_util
  from tensorflow_probability.python.internal import distribute_test_lib
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.internal import unnest
  from tensorflow_probability.python.mcmc import diagnostic
label_desc: Use image node_id 8 for calling the WindowedSamplingTest obj's underlying member method code with example usage: obj.test_valid_init() and returns: identity