docs: def init(self):
          """
          Read the poes and set the .data attribute with the hazard curves
          """
          if hasattr(self, 'data'):  # already initialized
              return
          if isinstance(self.dstore, str):
              self.dstore = hdf5.File(self.dstore, 'r')
          else:
              self.dstore.open('r')  # if not
          if self.sids is None:
              self.sids = self.dstore['sitecol'].sids
          oq = self.dstore['oqparam']
          self.imtls = oq.imtls
          self.poes = self.poes or oq.poes
          self.data = {}
          try:
              hcurves = self.get_hcurves(self.imtls)  # shape (R, N)
          except IndexError:  # no data
              return
          for sid, hcurve_by_rlz in zip(self.sids, hcurves.T):
              self.data[sid] = datadict = {}
              for rlzi, hcurve in enumerate(hcurve_by_rlz):
                  datadict[rlzi] = lst = [None for imt in self.imtls]
                  for imti, imt in enumerate(self.imtls):
                      lst[imti] = hcurve[imt]