Beispiel #1
0
    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
Beispiel #2
0
    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()
Beispiel #3
0
    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()
Beispiel #4
0
    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)
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
    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
Beispiel #8
0
    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)
Beispiel #9
0
 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)
Beispiel #10
0
 def open(cls, filename, pt_path, pt_name):
     fileh = get_pyt_handle(filename)
     array = fileh.getNode(pt_path, pt_name)
     return cls(array)