code: def __getitem__(self, key: Any) -> PivotedCholesky:
      return PivotedCholesky(
          step=self.step,
          tril=self.tril[key],
          perm=self.perm[key],
          diag=None if self.diag is None else self.diag[key],
      )
  
file_path: botorch/botorch/utils/probability/linalg.py
imports: from __future__ import annotations
  from dataclasses import dataclass, InitVar
  from itertools import chain
  from typing import Any, Optional, Sequence
  import torch
  from botorch.utils.probability.utils import swap_along_dim_
  from linear_operator.utils.errors import NotPSDError
  from torch import LongTensor, Tensor
  from torch.nn.functional import pad
label_desc: Use image node_id 2 for calling the PivotedCholesky obj's underlying member method code with example usage: obj.__getitem__(key) and returns: PivotedCholesky