code: def get_mean_and_stddevs(self, sites, rup, dists, imt, stddev_types):
          
          assert all(stddev_type in self.DEFINED_FOR_STANDARD_DEVIATION_TYPES
                     for stddev_type in stddev_types)
  
          mean = np.zeros_like(sites.vs30)
          stddevs = [np.zeros_like(sites.vs30) for _ in stddev_types]
  
          idx_rock = sites.vs30 >= self.ROCK_VS30
          idx_soil = sites.vs30 < self.ROCK_VS30
  
          if idx_rock.any():
              C = self.COEFFS_ROCK[imt]
              self._compute_mean(C, rup.mag, dists.rhypo, rup.hypo_depth, mean,
                                 idx_rock)
              self._compute_std(C, stddevs, idx_rock)
  
          if idx_soil.any():
              C = self.COEFFS_SOIL[imt]
              self._compute_mean(C, rup.mag, dists.rhypo, rup.hypo_depth, mean,
                                 idx_soil)
              self._compute_std(C, stddevs, idx_soil)
  
          return mean, stddevs
docs: See :meth:`superclass method
          <.base.GroundShakingIntensityModel.get_mean_and_stddevs>`
          for spec of input and result values.