Source code for pesummary.core.file.formats.numpy

# Licensed under an MIT style license -- see LICENSE.md

import numpy as np
from pesummary.utils.utils import check_filename

__author__ = ["Charlie Hoy <charlie.hoy@ligo.org>"]


def _parameters_and_samples_from_structured_array(array):
    """Return the parameters and samples stored in a structured array

    Parameters
    ----------
    array: numpy.ndarray
        structured array containing the parameters and samples. Each column
        should correspond to the samples for a single distribution
    """
    parameters = list(array.dtype.names)
    array = np.atleast_1d(array)
    samples = array.view((float, len(array.dtype.names)))
    return parameters, samples


def genfromtxt(path, **kwargs):
    """Return the parameters and samples stored in a `txt` file

    Parameters
    ----------
    path: str
        path to the result file you wish to read in
    **kwargs: dict, optional
        all additional kwargs are passed to the `np.genfromtxt` function
    """
    data = np.genfromtxt(path, **kwargs)
    return _parameters_and_samples_from_structured_array(data)


[docs]def read_numpy(path, **kwargs): """Grab the parameters and samples in a .npy file Parameters ---------- path: str path to the result file you wish to read in **kwargs: dict, optional all additional kwargs are passed to the `np.load` function """ data = load(path, **kwargs) return _parameters_and_samples_from_structured_array(data)
def load(*args, **kwargs): """Load a .npy file using the `np.load` function Parameters ---------- *args: tuple all args passed to `np.load` **kwargs: dict all kwargs passed to `np.load` """ return np.load(*args, **kwargs) def _write_numpy( parameters, samples, outdir="./", label=None, filename=None, overwrite=False, default_filename="pesummary_{}.npy", **kwargs ): """Write a set of samples to a csv file Parameters ---------- parameters: list list of parameters samples: 2d list list of samples. Columns correspond to a given parameter outdir: str, optional directory to write the dat file label: str, optional The label of the analysis. This is used in the filename if a filename if not specified filename: str, optional The name of the file that you wish to write overwrite: Bool, optional If True, an existing file of the same name will be overwritten """ from pesummary.utils.samples_dict import SamplesDict filename = check_filename( default_filename=default_filename, outdir=outdir, label=label, filename=filename, overwrite=overwrite ) _array = SamplesDict( parameters, np.array(samples).T ).to_structured_array() np.save(filename, _array) def write_numpy( parameters, samples, outdir="./", label=None, filename=None, overwrite=False, **kwargs ): """Write a set of samples to a npy file Parameters ---------- parameters: nd list list of parameters samples: nd list list of samples. Columns correspond to a given parameter outdir: str, optional directory to write the csv file label: str, optional The label of the analysis. This is used in the filename if a filename if not specified filename: str, optional The name of the file that you wish to write overwrite: Bool, optional If True, an existing file of the same name will be overwritten """ from pesummary.io.write import _multi_analysis_write _multi_analysis_write( _write_numpy, parameters, samples, outdir=outdir, label=label, filename=filename, overwrite=overwrite, file_format="numpy", **kwargs )