docs: def pmap_by_grp(self):
          """
          :returns: dictionary "grp-XXX" -> ProbabilityMap instance
          """
          if hasattr(self, '_pmap_by_grp'):  # already called
              return self._pmap_by_grp
          # populate _pmap_by_grp
          self._pmap_by_grp = {}
          if 'poes' in self.dstore:
              # build probability maps restricted to the given sids
              ok_sids = set(self.sids)
              for grp, dset in self.dstore['poes'].items():
                  ds = dset['array']
                  L, G = ds.shape[1:]
                  pmap = probability_map.ProbabilityMap(L, G)
                  for idx, sid in enumerate(dset['sids'].value):
                      if sid in ok_sids:
                          pmap[sid] = probability_map.ProbabilityCurve(ds[idx])
                  self._pmap_by_grp[grp] = pmap
                  self.nbytes += pmap.nbytes
          return self._pmap_by_grp