def load_pytables(cls, filename, copy=False): import numpy as np from csc.divisi.pyt_utils import get_pyt_handle fileh = get_pyt_handle(filename) root = fileh.root def wrapped_tensor(name): data = getattr(root, name) if copy: data = data.read() return DenseTensor(data) def wrapped_labeled_tensor(name, label_name): return wrapped_tensor(name).labeled(list(getattr(root, label_name))) u = wrapped_labeled_tensor("u", "u_labels") v = wrapped_labeled_tensor("v", "v_labels") svals = wrapped_tensor("svals") svd = cls(u, v, svals) svd._weighted_u = wrapped_tensor("weighted_u").labeled(u.label_lists()) svd._weighted_v = wrapped_tensor("weighted_v").labeled(v.label_lists()) svd._core = wrapped_tensor("core") return svd
def save_pytables(self, filename, title='SVD results', filters=None, **kw): from csc.divisi.pyt_utils import get_pyt_handle from tables import ObjectAtom, Filters, Atom fileh = get_pyt_handle(filename, title) if filters is None and kw: filters = Filters(**kw) try: root = fileh.root def store_tensor(name, tensor): data = tensor._data arr = fileh.createCArray(root, name, Atom.from_dtype(data.dtype), tensor.shape, filters=filters) arr[:] = data # Labeled stuff for name in ('u', 'v', 'weighted_u', 'weighted_v'): store_tensor(name, getattr(self, name).tensor) # Unlabeled stuff for name in ('svals', 'core'): store_tensor(name, getattr(self, name)) # Ordered sets def write_labels(name, view): arr = fileh.createVLArray(root, name, ObjectAtom(), filters=filters) for label in view.label_lists(): arr.append(label) write_labels('u_labels', self.u) write_labels('v_labels', self.v) finally: fileh.close()
def save_pytables(self, filename, title="SVD results", filters=None, **kw): from csc.divisi.pyt_utils import get_pyt_handle from tables import ObjectAtom, Filters, Atom fileh = get_pyt_handle(filename, title) if filters is None and kw: filters = Filters(**kw) try: root = fileh.root def store_tensor(name, tensor): data = tensor._data arr = fileh.createCArray(root, name, Atom.from_dtype(data.dtype), tensor.shape, filters=filters) arr[:] = data # Labeled stuff for name in ("u", "v", "weighted_u", "weighted_v"): store_tensor(name, getattr(self, name).tensor) # Unlabeled stuff for name in ("svals", "core"): store_tensor(name, getattr(self, name)) # Ordered sets def write_labels(name, view): arr = fileh.createVLArray(root, name, ObjectAtom(), filters=filters) for label in view.label_lists(): arr.append(label) write_labels("u_labels", self.u) write_labels("v_labels", self.v) finally: fileh.close()
def create(cls, filename, ndim, pt_path='/', pt_name='tensor', filters=None): ''' Create a new PyTables tensor. pt_path and pt_name are the "path" and "filename" within the PyTables file. Raises tables.NodeError if the table already exists. ''' fileh = get_pyt_handle(filename) table = fileh.createTable(pt_path, pt_name, cls.descriptor(ndim), filters=filters) return cls(table)
def open(cls, filename, pt_path='/', pt_name='tensor'): ''' Open an existing PyTables tensor. pt_path and pt_name are the "path" and "filename" within the PyTables file. Raises a tables.NoSuchNodeError if the table doesn't exist. (FIXME: it will still create a new, empty file.) ''' fileh = get_pyt_handle(filename) table = fileh.getNode(pt_path, pt_name) return cls(table)
def load_pytables(cls, filename, copy=False): import numpy as np from csc.divisi.pyt_utils import get_pyt_handle fileh = get_pyt_handle(filename) root = fileh.root def wrapped_tensor(name): data = getattr(root, name) if copy: data = data.read() return DenseTensor(data) def wrapped_labeled_tensor(name, label_name): return wrapped_tensor(name).labeled(list(getattr(root, label_name))) u = wrapped_labeled_tensor('u', 'u_labels') v = wrapped_labeled_tensor('v', 'v_labels') svals = wrapped_tensor('svals') svd = cls(u, v, svals) svd._weighted_u = wrapped_tensor('weighted_u').labeled(u.label_lists()) svd._weighted_v = wrapped_tensor('weighted_v').labeled(v.label_lists()) svd._core = wrapped_tensor('core') return svd
def create(cls, filename, pt_path, pt_name, filters=None): fileh = get_pyt_handle(filename) array = fileh.createVLArray(pt_path, pt_name, tables.ObjectAtom(), filters=filters) return cls(array)
def open(cls, filename, pt_path, pt_name): fileh = get_pyt_handle(filename) array = fileh.getNode(pt_path, pt_name) return cls(array)