class_docstr: Linear Elliptical Slice Sampler.
  
  Ideas:
  - Add batch support, broadcasting over parallel chains.
  - Optimize computations if possible, potentially with torch.compile.
  - Extend fixed features constraint to general linear equality constraints.
class_docstr_tok: ["Linear","Elliptical","Slice","Sampler",".","Ideas",":","-","Add","batch","support",",","broadcasting","over","parallel","chains",".","-","Optimize","computations","if","possible",",","potentially","with","torch.compile",".","-","Extend","fixed","features","constraint","to","general","linear","equality","constraints","."]
docstr: For non-standard mean and covariance, we're going to rewrite the problem as
  sampling from a standard normal distribution subject to modified constraints.
      A @ x - b = A @ (covar_root @ z + mean) - b
                = (A @ covar_root) @ z - (b - A @ mean)
                = _Az @ z - _bz
  NOTE: We need to standardize bz before Az in the following, because it relies
  on the untransformed Az. We can't simply use A instead because Az might have
  been subject to the fixed features transformation.
docstr_tok: ["For","non-standard","mean","and","covariance",",","we","'re","going","to","rewrite","the","problem","as","sampling","from","a","standard","normal","distribution","subject","to","modified","constraints",".","A","@","x","-","b","=","A","@","(","covar_root","@","z","+","mean",")","-","b","=","(","A","@","covar_root",")","@","z","-","(","b","-","A","@","mean",")","=","_Az","@","z","-","_bz","NOTE",":","We","need","to","standardize","bz","before","Az","in","the","following",",","because","it","relies","on","the","untransformed","Az",".","We","ca","n't","simply","use","A","instead","because","Az","might","have","been","subject","to","the","fixed","features","transformation","."]
code: def _standardization_initialization(self) -> None:
      """For non-standard mean and covariance, we're going to rewrite the problem as
      sampling from a standard normal distribution subject to modified constraints.
          A @ x - b = A @ (covar_root @ z + mean) - b
                    = (A @ covar_root) @ z - (b - A @ mean)
                    = _Az @ z - _bz
      NOTE: We need to standardize bz before Az in the following, because it relies
      on the untransformed Az. We can't simply use A instead because Az might have
      been subject to the fixed features transformation.
      """
      if self._mean is not None:
          self._bz = self._bz - self._Az @ self._mean
      if self._covariance_root is not None:
          self._Az = self._Az @ self._covariance_root
  
imports: from __future__ import annotations
  import math
  from typing import List, Optional, Tuple, Union
  import torch
  from botorch.utils.sampling import PolytopeSampler
  from torch import Tensor
label_desc: Use image node_id 3 for calling the LinearEllipticalSliceSampler obj's underlying member method code with example usage: obj._standardization_initialization() without return types