Source code for magni.cs.phase_transition.io
"""
..
Copyright (c) 2014-2017, Magni developers.
All rights reserved.
See LICENSE.rst for further information.
Module providing input/output functionality for stored phase transitions.
Routine listings
----------------
load_phase_transition(path, label='default')
Load the coordinates of a phase transition from a HDF5 file.
"""
from __future__ import division
import numpy as np
from magni.utils.multiprocessing import File as _File
from magni.utils.validation import decorate_validation as _decorate_validation
from magni.utils.validation import validate_generic as _generic
from magni.utils.validation import validate_numeric as _numeric
[docs]def load_phase_transition(path, label='default', delta=None):
"""
Load the coordinates of a phase transition from a HDF5 file.
This function is used to load the phase transition from the output file
generated by `magni.cs.phase_transition.determine`.
Parameters
----------
path : str
The path of the HDF5 file where the phase transition is stored.
label : str
The label assigned to the phase transition (the default is 'default').
delta : ndarray
The undersampling ratio values to use (the default is None which
implies that a uniform spacing of values in the interval (0,1] is
assumed.)
Returns
-------
delta : ndarray
The delta values of the phase transition points.
rho : ndarray
The rho values of the phase transition points.
See Also
--------
magni.cs.phase_transition.determine : Phase transition determination.
magni.cs.phase_transition.plotting : Phase transition plotting.
Examples
--------
An example of how to use this function is provided in the `examples` folder
in the `cs-phase_transition.ipynb` ipython notebook file.
"""
@_decorate_validation
def validate_input():
_generic('path', 'string')
_generic('label', 'string')
_numeric('delta', ('floating', 'integer'), range_='[0;1]', shape=(-1,),
ignore_none=True)
@_decorate_validation
def validate_output():
_numeric('rho', ('floating', 'integer'), range_='[0;1]', shape=(-1,))
_numeric('delta', ('floating', 'integer'), range_='[0;1]',
shape=rho.shape)
validate_input()
with _File(path, 'r') as f:
rho = f.get_node('/' + label + '/phase_transition')[:]
if delta is None:
delta = np.linspace(0, 1, len(rho) + 1)[1:]
validate_output()
return (delta, rho)