|
@@ -310,6 +310,17 @@ class model:
|
|
|
self.scaled.append(m)
|
|
|
|
|
|
self.add_default_parameters()
|
|
|
+ self.applyValues()
|
|
|
+
|
|
|
+ def clearCompartments(self):
|
|
|
+ for c in self.compartments:
|
|
|
+ for t in self.compartments[c]:
|
|
|
+ self.compartments[c][t]={}
|
|
|
+
|
|
|
+
|
|
|
+ def applyValues(self):
|
|
|
+ self.clearCompartments()
|
|
|
+ #print(self.compartments)
|
|
|
#standard parameters such as one,zero etc.
|
|
|
for s in self.mod['inputs']:
|
|
|
#src=mod['inputs'][s]
|
|
@@ -543,7 +554,10 @@ class model:
|
|
|
#return sln2*v*v
|
|
|
#else:
|
|
|
#for Gaussian, cv is sigma/value; get sigma by value multiplication
|
|
|
- return par["cv"]*par["cv"]*v*v
|
|
|
+ try:
|
|
|
+ return par["cv"]*par["cv"]*v*v
|
|
|
+ except KeyError:
|
|
|
+ return 0
|
|
|
|
|
|
|
|
|
def getMax(lutSE):
|
|
@@ -580,15 +594,39 @@ class model:
|
|
|
|
|
|
|
|
|
|
|
|
- def calculateUncertainty(self,se):
|
|
|
+ def calculateUncertainty(self,s):
|
|
|
|
|
|
- s2out=numpy.zeros(se.shape[1:])
|
|
|
- se2=numpy.multiply(se,se)
|
|
|
+ #s2out=numpy.zeros(s1.shape[1:])
|
|
|
+ s2=numpy.multiply(s,s)
|
|
|
#w=self.getWeights(self.lutSE)
|
|
|
w=numpy.ones((self.m))
|
|
|
- return numpy.sqrt(numpy.dot(se2,w))
|
|
|
-
|
|
|
+ return numpy.sqrt(numpy.dot(s2,w))
|
|
|
|
|
|
+ def setValue(self, parName, parValue):
|
|
|
+#change a single parameter parName to value parValue
|
|
|
+#should run applyValues after all values are set
|
|
|
+ pars=self.parSetup['parameters']
|
|
|
+ try:
|
|
|
+ par=pars[parName]
|
|
|
+ except:
|
|
|
+ print(f'Failed to find parameter {parName}')
|
|
|
+ return False
|
|
|
+ try:
|
|
|
+ par['value']=parValue
|
|
|
+ except KeyError:
|
|
|
+ print(f'Failed to set value for {parName}')
|
|
|
+ return False
|
|
|
+ return True
|
|
|
+
|
|
|
+ def setValues(self,parNames,parValues):
|
|
|
+#change a set of parameters in list parNames to
|
|
|
+#accordingly ordered set of values parValues
|
|
|
+#also recalculates the matrix
|
|
|
+
|
|
|
+ for p,v in zip(parNames,parValues):
|
|
|
+ self.setValue(p,v)
|
|
|
+ self.applyValues()
|
|
|
+
|
|
|
def get(self,parName):
|
|
|
pars=self.parSetup['parameters']
|
|
|
par=pars[parName]
|
|
@@ -723,5 +761,4 @@ def get(timeUnit,par):
|
|
|
return 60*v
|
|
|
|
|
|
#no idea what to do
|
|
|
- return v
|
|
|
-
|
|
|
+ return v
|