code: def test_LCEAGP_construct_inputs(self):
      for dtype in (torch.float, torch.double):
          tkwargs = {"device": self.device, "dtype": dtype}
          datasets, (train_X, train_Y, train_Yvar) = _gen_datasets(
              **tkwargs
          )
          decomposition = {"1": [0, 1], "2": [2, 3]}
  
          model = LCEAGP(train_X, train_Y, train_Yvar, decomposition)
          data_dict = model.construct_inputs(
              training_data=datasets,
              decomposition=decomposition,
              train_embedding=False,
          )
  
          self.assertTrue(train_X.equal(data_dict["train_X"]))
          self.assertTrue(train_Y.equal(data_dict["train_Y"]))
          self.assertTrue(train_Yvar.equal(data_dict["train_Yvar"]))
          self.assertDictEqual(
              data_dict["decomposition"], decomposition
          )
          self.assertFalse(data_dict["train_embedding"])
  
imports: from typing import Dict, Tuple
  import torch
  from botorch.fit import fit_gpytorch_mll
  from botorch.models.contextual import LCEAGP, SACGP
  from botorch.models.gp_regression import SingleTaskGP
  from botorch.models.kernels.contextual_lcea import LCEAKernel
  from botorch.models.kernels.contextual_sac import SACKernel
  from botorch.utils.datasets import SupervisedDataset
  from botorch.utils.testing import BotorchTestCase
  from gpytorch.distributions.multivariate_normal import MultivariateNormal
  from gpytorch.likelihoods.gaussian_likelihood import FixedNoiseGaussianLikelihood, GaussianLikelihood
  from gpytorch.means import ConstantMean
  from gpytorch.mlls.exact_marginal_log_likelihood import ExactMarginalLogLikelihood
  from torch import Tensor
label_desc: Use image node_id 4 for calling the TestContextualGP obj's underlying member method code with example usage: obj.test_LCEAGP_construct_inputs() without return types