Projects/laydi
Projects
/
laydi
Archived
7
0
Fork 0

Factored out packer

A    packer.py
This commit is contained in:
Arnar Flatberg 2007-02-09 14:02:39 +00:00
parent 7eb13b14cb
commit 15c89fb9b5
1 changed files with 28 additions and 0 deletions

28
fluents/lib/packer.py Normal file
View File

@ -0,0 +1,28 @@
class Packer:
"""A compression object used to speed up model calculations.
Often used in conjunction with crossvalidation and perturbations
analysis.
"""
def __init__(self,array):
self._shape = array.shape
self._array = array
self._packed_data = None
def expand(self,a):
if self._inflater!=None:
return dot(self._inflater,a)
def collapse(self,axis=None,mode='svd'):
if not axis:
axis = argmin(self._array.shape) # default is the smallest dim
if axis == 1:
self._array = self._array.T
u, s, vt = svd(self._array,full_matrices=0)
self._inflater = vt.T
self._packed_data = u*s
return self._packed_data
def get_packed_data(self):
return self._packed_data