Source code for anesthetic.read.polychord

"""Read NestedSamples from PolyChord chains."""
import os
import numpy as np
from anesthetic.read.getdist import read_paramnames
from anesthetic.samples import NestedSamples


[docs] def read_polychord(root, *args, **kwargs): """Read PolyChord chain files. Parameters ---------- root : str root name for reading files in PolyChord format, i.e. the files ``<root>_dead-birth.txt`` and ``<root>_phys_live-birth.txt``. """ birth_file = root + '_dead-birth.txt' birth_file data = np.loadtxt(birth_file) try: phys_live_birth_file = root + '_phys_live-birth.txt' _data = np.loadtxt(phys_live_birth_file) _data = np.atleast_2d(_data) data = np.concatenate([data, _data]) if _data.size else data data = np.unique(data, axis=0) i = np.argsort(data[:, -2]) data = data[i, :] except IOError: pass data, logL, logL_birth = np.split(data, [-2, -1], axis=1) columns, labels = read_paramnames(root) columns = kwargs.pop('columns', columns) labels = kwargs.pop('labels', labels) kwargs['label'] = kwargs.get('label', os.path.basename(root)) return NestedSamples(data=data, columns=columns, logL=logL, logL_birth=logL_birth, labels=labels, *args, **kwargs)