class_docstr: The multivariate Value-at-Risk as introduced in [Prekopa2012MVaR]_.
  
  MVaR is defined as the non-dominated set of points in the extended domain
  of the random variable that have multivariate CDF greater than or equal to
  `alpha`. Note that MVaR is set valued and the size of the set depends on the
  particular realizations of the random variable. [Cousin2013MVaR]_ instead
  propose to use the expectation of the set-valued MVaR as the multivariate
  VaR. We support this alternative with an `expectation` flag.
  
  This supports approximate gradients as discussed in [Daulton2022MARS]_.
docstr: An experimental approach for obtaining the gradient of the MVaR via
  component-wise mapping to original samples. See [Daulton2022MARS]_.
  
  Args:
      prepared_samples: A `(sample_shape * batch_shape * q) x n_w x m`-dim tensor
          of posterior samples. The q-batches should be ordered so that each
          `n_w` block of samples correspond to the same input.
      mvars: A `(sample_shape * batch_shape * q) x k x m`-dim tensor
          of padded MVaR values.
  Returns:
      The same `mvars` with entries mapped to inputs to produce gradients.
docstr_tok: ["An","experimental","approach","for","obtaining","the","gradient","of","the","MVaR","via","component-wise","mapping","to","original","samples",".","See","[","Daulton2022MARS","]","_.","Args",":","prepared_samples",":","A","`","(","sample_shape","*","batch_shape","*","q",")","x","n_w","x","m","`","-dim","tensor","of","posterior","samples",".","The","q-batches","should","be","ordered","so","that","each","`","n_w","`","block","of","samples","correspond","to","the","same","input",".","mvars",":","A","`","(","sample_shape","*","batch_shape","*","q",")","x","k","x","m","`","-dim","tensor","of","padded","MVaR","values",".","Returns",":","The","same","`","mvars","`","with","entries","mapped","to","inputs","to","produce","gradients","."]
code: def make_differentiable(
      self, prepared_samples: Tensor, mvars: Tensor
  ) -> Tensor:
      r"""An experimental approach for obtaining the gradient of the MVaR via
      component-wise mapping to original samples. See [Daulton2022MARS]_.
  
      Args:
          prepared_samples: A `(sample_shape * batch_shape * q) x n_w x m`-dim tensor
              of posterior samples. The q-batches should be ordered so that each
              `n_w` block of samples correspond to the same input.
          mvars: A `(sample_shape * batch_shape * q) x k x m`-dim tensor
              of padded MVaR values.
      Returns:
          The same `mvars` with entries mapped to inputs to produce gradients.
      """
      samples = prepared_samples.unsqueeze(-2).repeat(
          1, 1, mvars.shape[-2], 1
      )
      mask = samples == mvars.unsqueeze(-3)
      samples[~mask] = 0
      return samples.sum(dim=-3) / mask.sum(dim=-3)
  
imports: import warnings
  from abc import ABC, abstractmethod
  from math import ceil
  from typing import Callable, List, Optional, Union
  import torch
  from botorch.acquisition.multi_objective.objective import IdentityMCMultiOutputObjective, MCMultiOutputObjective
  from botorch.acquisition.risk_measures import CVaR, RiskMeasureMCObjective, VaR
  from botorch.exceptions.errors import UnsupportedError
  from botorch.exceptions.warnings import BotorchWarning
  from botorch.models.model import Model
  from botorch.utils.multi_objective.pareto import is_non_dominated
  from botorch.utils.transforms import normalize
  from torch import Tensor
label_desc: Use image node_id 4 for calling the MVaR obj's underlying member method code with example usage: obj.make_differentiable(prepared_samples, mvars) and returns: unknown