docs: def convert_nonParametricSeismicSource(self, node):
          """
          Convert the given node into a non parametric source object.
  
          :param node:
              a node with tag areaGeometry
          :returns:
              a :class:`openquake.hazardlib.source.NonParametricSeismicSource`
              instance
          """
          trt = node.attrib.get('tectonicRegion')
          rup_pmf_data = []
          rups_weights = None
          if 'rup_weights' in node.attrib:
              tmp = node.attrib.get('rup_weights')
              rups_weights = numpy.array([float(s) for s in tmp.split()])
          for i, rupnode in enumerate(node):
              probs = pmf.PMF(valid.pmf(rupnode['probs_occur']))
              rup = RuptureConverter.convert_node(self, rupnode)
              rup.tectonic_region_type = trt
              rup.weight = None if rups_weights is None else rups_weights[i]
              rup_pmf_data.append((rup, probs))
          nps = source.NonParametricSeismicSource(
              node['id'], node['name'], trt, rup_pmf_data)
          nps.splittable = 'rup_weights' not in node.attrib
          return nps