docstr: Computes the log probability `ln p(Y = value | a < X < b)`.
docstr_tok: ["Computes","the","log","probability","`","ln","p","(","Y","=","value","|","a","<","X","<","b",")","`","."]
code: def _log_prob(self, value: Tensor) -> Tensor:
      r"""Computes the log probability `ln p(Y = value | a < X < b)`."""
      # Center by subtracting E[X | Y = value] from `bounds`.
      bounds = (
          self.trunc.bounds
          - self.trunc.loc.unsqueeze(-1)
          - self._iKyy_Kyx.transpose(-2, -1)
          @ (value - self.gauss.loc).unsqueeze(-1)
      )
  
      # Approximately solve for MVN CDF
      solver = MVNXPB(
          covariance_matrix=self._K_schur_Kyy, bounds=bounds
      )
  
      # p(Y = value | a < X < b) = P(a < X < b | Y = value)p(Y = value)/P(a < X < b)
      return (
          solver.solve()
          + self.gauss.log_prob(value)
          - self.trunc.log_partition
      )
  
imports: from __future__ import annotations
  from inspect import getmembers
  from typing import Optional, Sequence, Union
  import torch
  from botorch.utils.probability.linalg import augment_cholesky, block_matrix_concat
  from botorch.utils.probability.mvnxpb import MVNXPB
  from botorch.utils.probability.truncated_multivariate_normal import TruncatedMultivariateNormal
  from linear_operator.operators import LinearOperator
  from linear_operator.utils.errors import NotPSDError
  from torch import Tensor
  from torch.distributions.multivariate_normal import Distribution, MultivariateNormal
  from torch.distributions.utils import lazy_property
  from torch.nn.functional import pad
label_desc: Use image node_id 3 for calling the UnifiedSkewNormal obj's underlying member method code with example usage: obj._log_prob(value) and returns: unknown