updates to adding projections to the models

This commit is contained in:
Rowan Cockett
2015-06-03 15:59:20 -07:00
parent 1b7ad56e94
commit 838ee6e09b
2 changed files with 30 additions and 2 deletions
+16 -2
View File
@@ -1,4 +1,4 @@
import Utils, Maps, numpy as np
import Utils, Maps, numpy as np, scipy.sparse as sp
class Property(object):
@@ -87,10 +87,23 @@ class Property(object):
mapping = getattr(self, '%sMap'%prop.name)
if mapping is None:
return None
index = getattr(self.propMap, '_%sIndex'%prop.name, slice(None))
index = getattr(self.propMap, '%sIndex'%prop.name)
return self.vector[index]
return property(fget=fget)
def _getModelProjProperty(self):
prop = self
def fget(self):
mapping = getattr(self, '%sMap'%prop.name)
if mapping is None:
return None
inds = getattr(self.propMap, '%sIndex'%prop.name)
if type(inds) is slice:
inds = range(*inds.indices(self.nP))
nI, nP = len(inds),self.nP
return sp.csr_matrix((np.ones(nI), (range(nI), inds) ), shape=(nI, nP))
return property(fget=fget)
def _getModelMapProperty(self):
prop = self
def fget(self):
@@ -167,6 +180,7 @@ class _PropMapMetaClass(type):
attrs[attr ] = prop._getProperty()
attrs[attr + 'Map' ] = prop._getModelMapProperty()
attrs[attr + 'Proj' ] = prop._getModelProjProperty()
attrs[attr + 'Model'] = prop._getModelProperty()
attrs[attr + 'Deriv'] = prop._getModelDerivProperty()