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: Modifies the constraint system (A, b) due to fixed indices and assigns
  the modified constraints system to `self._Az`, `self._bz`. NOTE: Needs to be
  called prior to `self._standardization_initialization` in the constructor.
  
  Returns:
      Tuple of `mean` and `covariance_matrix` tensors of the non-fixed dimensions.
docstr_tok: ["Modifies","the","constraint","system","(","A",",","b",")","due","to","fixed","indices","and","assigns","the","modified","constraints","system","to","`","self._Az","`",",","`","self._bz","`",".","NOTE",":","Needs","to","be","called","prior","to","`","self._standardization_initialization","`","in","the","constructor",".","Returns",":","Tuple","of","`","mean","`","and","`","covariance_matrix","`","tensors","of","the","non-fixed","dimensions","."]
code: def _fixed_features_initialization(
      self,
      A: Tensor,
      b: Tensor,
      interior_point: Optional[Tensor],
      fixed_indices: Union[List[int], Tensor],
      mean: Optional[Tensor],
      covariance_matrix: Optional[Tensor],
      covariance_root: Optional[Tensor],
  ) -> Tuple[Optional[Tensor], Optional[Tensor]]:
      """Modifies the constraint system (A, b) due to fixed indices and assigns
      the modified constraints system to `self._Az`, `self._bz`. NOTE: Needs to be
      called prior to `self._standardization_initialization` in the constructor.
  
      Returns:
          Tuple of `mean` and `covariance_matrix` tensors of the non-fixed dimensions.
      """
      if interior_point is None:
          raise ValueError(
              "If `fixed_indices` are provided, an interior point must also be "
              "provided in order to infer feasible values of the fixed features."
          )
      if covariance_root is not None:
          raise ValueError(
              "Provide either covariance_root or fixed_indices, not both."
          )
      d = interior_point.shape[0]
      is_fixed, not_fixed = get_index_tensors(
          fixed_indices=fixed_indices, d=d
      )
      self._is_fixed = is_fixed
      self._not_fixed = not_fixed
      # Transforming constraint system to incorporate fixed features:
      # A @ x - b = (A[:, fixed] @ x[fixed] + A[:, not fixed] @ x[not fixed]) - b
      #           = A[:, not fixed] @ x[not fixed] - (b - A[:, fixed] @ x[fixed])
      #           = Az @ z - bz
      self._Az = A[:, not_fixed]
      self._bz = b - A[:, is_fixed] @ interior_point[is_fixed]
      if mean is not None:
          mean = mean[not_fixed]
      if covariance_matrix is not None:  # subselect active dimensions
          covariance_matrix = covariance_matrix[
              not_fixed.unsqueeze(-1), not_fixed.unsqueeze(0)
          ]
      return mean, covariance_matrix
  
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 2 for calling the LinearEllipticalSliceSampler obj's underlying member method code with example usage: obj._fixed_features_initialization(A, b, interior_point, fixed_indices, mean, covariance_matrix, covariance_root) and returns: mean,  covariance_matrix