class_docstr: Abstract base class for models based on multi-output GPyTorch models.
  
  This is meant to be used with a gpytorch ModelList wrapper for independent
  evaluation of submodels. Those submodels can themselves be multi-output
  models, in which case the task covariances will be ignored.
  
  :meta private:
class_docstr_tok: ["Abstract","base","class","for","models","based","on","multi-output","GPyTorch","models",".","This","is","meant","to","be","used","with","a","gpytorch","ModelList","wrapper","for","independent","evaluation","of","submodels",".","Those","submodels","can","themselves","be","multi-output","models",",","in","which","case","the","task","covariances","will","be","ignored",".",":","meta","private",":"]
code: def condition_on_observations(
      self, X: Tensor, Y: Tensor, **kwargs: Any
  ) -> Model:
      raise NotImplementedError()
  
imports: from __future__ import annotations
  import itertools
  import warnings
  from abc import ABC
  from copy import deepcopy
  from typing import Any, List, Optional, Tuple, TYPE_CHECKING, Union
  import torch
  from botorch.acquisition.objective import PosteriorTransform
  from botorch.exceptions.errors import BotorchTensorDimensionError, InputDataError
  from botorch.exceptions.warnings import _get_single_precision_warning, BotorchTensorDimensionWarning
  from botorch.models.model import Model, ModelList
  from botorch.models.utils import _make_X_full, add_output_dim, gpt_posterior_settings, mod_batch_shape, multioutput_to_batch_mode_transform
  from botorch.posteriors.fully_bayesian import GaussianMixturePosterior
  from botorch.posteriors.gpytorch import GPyTorchPosterior
  from botorch.utils.multitask import separate_mtmvn
  from botorch.utils.transforms import is_ensemble
  from gpytorch.distributions import MultitaskMultivariateNormal, MultivariateNormal
  from gpytorch.likelihoods.gaussian_likelihood import FixedNoiseGaussianLikelihood
  from linear_operator.operators import BlockDiagLinearOperator, CatLinearOperator
  from torch import Tensor
label_desc: Use image node_id 3 for calling the ModelListGPyTorchModel obj's underlying member method code with example usage: obj.condition_on_observations(X, Y) without return types