@classmethod
def load(cls, fname):
    """Loads the posterior from an input file.

        Parameters
        ----------
        fname : :obj:`str`
            input filename

        Returns
        -------
        posterior : :obj:`posterior`
            loaded posterior object

        """
    import h5py as h5
    import numpy as np
    from ctypes import c_double
    from pyselfi.utils import PrintMessage
    PrintMessage(3, "Reading posterior in data file '{}'...".format(fname))
    with h5.File(fname, 'r') as hf:
        theta_0 = np.array(hf.get('/posterior/theta_0'), dtype=c_double)
        prior_covariance = np.array(hf.get('/posterior/prior_covariance'),
            dtype=c_double)
        inv_prior_covariance = np.array(hf.get(
            '/posterior/inv_prior_covariance'), dtype=c_double)
        f_0 = np.array(hf.get('/posterior/f_0'), dtype=c_double)
        C_0 = np.array(hf.get('/posterior/C_0'), dtype=c_double)
        inv_C_0 = np.array(hf.get('/posterior/inv_C_0'), dtype=c_double)
        grad_f = np.array(hf.get('/posterior/grad_f'), dtype=c_double)
        phi_obs = np.array(hf.get('/posterior/phi_obs'), dtype=c_double)
        posterior = cls(theta_0, prior_covariance, inv_prior_covariance,
            f_0, C_0, inv_C_0, grad_f, phi_obs)
        posterior.inv_covariance = np.array(hf.get(
            '/posterior/inv_covariance'), dtype=c_double)
        posterior.mean = np.array(hf.get('/posterior/mean'), dtype=c_double)
        posterior.covariance = np.array(hf.get('/posterior/covariance'),
            dtype=c_double)
    PrintMessage(3, "Reading posterior in data file '{}' done.".format(fname))
    return posterior
