code: def poe_map(self, src, s_sites, imtls, trunclevel, rup_indep=True):
          
          pmap = ProbabilityMap.build(
              len(imtls.array), len(self.gsims), s_sites.sids,
              initvalue=rup_indep)
          eff_ruptures = 0
          for rup, sctx, dctx in self.gen_rup_contexts(src, s_sites):
              eff_ruptures += 1
              with self.poe_mon:
                  pnes = self._make_pnes(rup, sctx, dctx, imtls, trunclevel)
                  for sid, pne in zip(sctx.sids, pnes):
                      if rup_indep:
                          pmap[sid].array *= pne
                      else:
                          pmap[sid].array += (1.-pne) * rup.weight
          if rup_indep:
              pmap = ~pmap
          pmap.eff_ruptures = eff_ruptures
          return pmap
docs: :param src: a source object
          :param s_sites: a filtered SiteCollection of sites around the source
          :param imtls: intensity measure and levels
          :param trunclevel: truncation level
          :param rup_indep: True if the ruptures are independent
          :returns: a ProbabilityMap instance