class_docstr: An algorithm for approximating Gaussian probabilities `P(X \in bounds)`, where
  `X ~ N(0, covariance_matrix)`.
class_docstr_tok: ["An","algorithm","for","approximating","Gaussian","probabilities","`","P","(","X","\\in","bounds",")","`",",","where","`","X","~","N","(","0",",","covariance_matrix",")","`","."]
docstr: GGE variable prioritization strategy from [Gibson1994monte]_.
  
  Returns the index of the random variable least likely to satisfy its bounds
  when conditioning on the previously integrated random variables `X[:t - 1]`
  attaining the values of plug-in estimators `y[:t - 1]`. Equivalently,
  ```
  argmin_{i = t, ..., n} P(X[i] \in bounds[i] | X[:t-1] = y[:t -1]),
  ```
  where `t` denotes the current step.
docstr_tok: ["GGE","variable","prioritization","strategy","from","[","Gibson1994monte","]","_",".","Returns","the","index","of","the","random","variable","least","likely","to","satisfy","its","bounds","when","conditioning","on","the","previously","integrated","random","variables","`","X","[",":","t","-","1","]","`","attaining","the","values","of","plug-in","estimators","`","y","[",":","t","-","1","]","`",".","Equivalently",",","``","`","argmin_","{","i","=","t",",","...",",","n","}","P","(","X","[","i","]","\\in","bounds","[","i","]","|","X","[",":","t-1","]","=","y","[",":","t","-1","]",")",",","``","`","where","`","t","`","denotes","the","current","step","."]
code: def select_pivot(self) -> Optional[LongTensor]:
      r"""GGE variable prioritization strategy from [Gibson1994monte]_.
  
      Returns the index of the random variable least likely to satisfy its bounds
      when conditioning on the previously integrated random variables `X[:t - 1]`
      attaining the values of plug-in estimators `y[:t - 1]`. Equivalently,
      ```
      argmin_{i = t, ..., n} P(X[i] \in bounds[i] | X[:t-1] = y[:t -1]),
      ```
      where `t` denotes the current step."""
      i = self.piv_chol.step
      L = self.piv_chol.tril
      bounds = self.bounds
      if i:
          bounds = (
              bounds[..., i:, :]
              - L[..., i:, :i] @ self.plug_ins[..., :i, None]
          )
  
      inv_stddev = (
          torch.diagonal(L, dim1=-2, dim2=-1)[..., i:]
          .clip(min=0)
          .rsqrt()
      )
      probs_1d = (
          Phi(inv_stddev.unsqueeze(-1) * bounds)
          .diff(dim=-1)
          .squeeze(-1)
      )
      return i + torch.argmin(probs_1d, dim=-1)
  
imports: from __future__ import annotations
  from typing import Any, Optional, TypedDict
  from warnings import warn
  import torch
  from botorch.utils.probability.bvn import bvn, bvnmom
  from botorch.utils.probability.linalg import augment_cholesky, block_matrix_concat, PivotedCholesky
  from botorch.utils.probability.utils import case_dispatcher, get_constants_like, ndtr, phi, STANDARDIZED_RANGE, swap_along_dim_
  from botorch.utils.safe_math import log, mul
  from linear_operator.utils.cholesky import psd_safe_cholesky
  from linear_operator.utils.errors import NotPSDError
  from torch import LongTensor, Tensor
  from torch.nn.functional import pad
label_desc: Use image node_id 4 for calling the MVNXPB obj's underlying member method code with example usage: obj.select_pivot() and returns: unknown