code: def region_est_hull(self, level=0.95, modelparam_slice=None):
          
          points = self.est_credible_region(
              level=level,
              modelparam_slice=modelparam_slice
          )
          hull = ConvexHull(points)
  
          return points[hull.simplices], points[u.uniquify(hull.vertices.flatten())]
docs: Estimates a credible region over models by taking the convex hull of
          a credible subset of particles.
  
          :param float level: The desired crediblity level (see
              :meth:`SMCUpdater.est_credible_region`).
          :param slice modelparam_slice: Slice over which model parameters
              to consider.
  
          :return: The tuple ``(faces, vertices)`` where ``faces`` describes all the
              vertices of all of the faces on the exterior of the convex hull, and
              ``vertices`` is a list of all vertices on the exterior of the
              convex hull.
          :rtype: ``faces`` is a ``numpy.ndarray`` with shape
              ``(n_face, n_mps, n_mps)`` and indeces ``(idx_face, idx_vertex, idx_mps)``
              where ``n_mps`` corresponds to the size of ``modelparam_slice``.
              ``vertices`` is an  ``numpy.ndarray`` of shape ``(n_vertices, n_mps)``.