Source code for batman.tasks.snapshot_io

# coding: utf-8
"""
SnapshotManager Class
=====================

Defines methods to interact with snapshots:
    - build an appropriate data provider
    - perform read/write operations on snaphsots
"""
import os
import numpy as np

from ..space import Point
from ..input_output import formater


[docs]class SnapshotIO(object): """Manage data I/Os and data generation for Snapshot."""
[docs] def __init__(self, parameter_names, feature_names, point_filename='sample-space.json', data_filename='sample-data.json', point_format='json', data_format='json'): """Initialize the IO manager for snapshots. :param list parameter_names: List of parameter labels. :param list feature_names: List of feature labels. :param str point_filename: Name of the snapshot point file. :param str data_filename: Name of the snapshot data file. :param str point_format: Name of the point file format. :param str data_format: Name of the data file format. """ # sample parameters self.plabels = parameter_names self.point_filename = point_filename self.point_formater = formater(point_format) # sample features self.flabels = feature_names self.data_filename = data_filename
self.data_formater = formater(data_format)
[docs] def read_point(self, dirpath): """Read sample parameters from the point file. :param str dirpath: Path to snapshot directory. :rtype: :class:`numpy.ndarray` """ filepath = os.path.join(dirpath, self.point_filename)
return Point(np.ravel(self.point_formater.read(filepath, self.plabels)))
[docs] def write_point(self, dirpath, point): """Write sample parameters to the point file. :param str dirpath: Path to snapshot directory. :param array-like point: Sample parameters to write. """ filepath = os.path.join(dirpath, self.point_filename)
self.point_formater.write(filepath, point, self.plabels)
[docs] def read_data(self, dirpath): """Read sample features from the data file. :param str path: Path to snapshot directory. :rtype: :class:`numpy.ndarray` """ filepath = os.path.join(dirpath, self.data_filename)
return np.ravel(self.data_formater.read(filepath, self.flabels))
[docs] def write_data(self, dirpath, data): """Write sample features to the data file. :param str path: Path to snapshot directory. :param data: Sample features to write. :type data: :class:`numpy.ndarray` """ filepath = os.path.join(dirpath, self.data_filename)
self.point_formater.write(filepath, data, self.flabels)