class_docstr: This is a contextual dataset that is constructed from either a single
  dateset containing overall outcome or a list of datasets that each corresponds
  to a context breakdown.
docstr: Concatenates the Ys from the child datasets to create the Y expected
  by LCEM model if there are multiple datasets; Or return the Y expected
  by LCEA model if there is only one dataset.
code: def Y(self) -> Tensor:
      """Concatenates the Ys from the child datasets to create the Y expected
      by LCEM model if there are multiple datasets; Or return the Y expected
      by LCEA model if there is only one dataset.
      """
      if len(self.datasets) == 1:
          # use LCEA model
          return self.datasets[self.outcome_names[0]].Y
      else:
          return torch.cat(
              [
                  self.datasets[outcome_name].Y
                  for outcome_name in self.outcome_names
              ],
              dim=-1,
          )
  
imports: from __future__ import annotations
  import collections
  import warnings
  from typing import Any, Dict, List, Optional, Union
  import torch
  from botorch.exceptions.errors import InputDataError, UnsupportedError
  from botorch.utils.containers import BotorchContainer, SliceContainer
  from torch import long, ones, Tensor
label_desc: Use image node_id 3 for calling the ContextualDataset obj's underlying member method code with example usage: obj.Y() and returns: self, torch