code: def margin(self, axis):
          
          if self._slice.ndim < 2:
              msg = (
                  "Scale Means marginal cannot be calculated on 1D cubes, as"
                  "the scale means already get reduced to a scalar value."
              )
              raise ValueError(msg)
  
          dimension_index = 1 - axis
          margin = self._slice.margin(axis=axis)
          if len(margin.shape) > 1:
              index = [
                  0 if d.dimension_type == DT.MR else slice(None)
                  for d in self._slice.dimensions
              ]
              margin = margin[index]
          total = np.sum(margin)
          values = self.values[dimension_index]
  
          if values is None:
              return None
  
          return np.sum(values * margin) / total
docs: Return marginal value of the current slice scaled means.
  
          This value is the the same what you would get from a single variable
          (constituting a 2D cube/slice), when the "non-missing" filter of the
          opposite variable would be applied. This behavior is consistent with
          what is visible in the front-end client.