jakob 4 settimane fa
parent
commit
f57fdc668c
2 ha cambiato i file con 45 aggiunte e 8 eliminazioni
  1. 45 8
      pythonScripts/cModel.py
  2. 0 0
      pythonScripts/uporaba_run_solver.py

+ 45 - 8
pythonScripts/cModel.py

@@ -310,6 +310,17 @@ class model:
          self.scaled.append(m)
          self.scaled.append(m)
 
 
       self.add_default_parameters()
       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.
       #standard parameters such as one,zero etc.
       for s in self.mod['inputs']:
       for s in self.mod['inputs']:
          #src=mod['inputs'][s]
          #src=mod['inputs'][s]
@@ -543,7 +554,10 @@ class model:
          #return sln2*v*v
          #return sln2*v*v
       #else:
       #else:
          #for Gaussian, cv is sigma/value; get sigma by value multiplication
          #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):
    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=self.getWeights(self.lutSE)
       w=numpy.ones((self.m))
       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):
    def get(self,parName):
       pars=self.parSetup['parameters']
       pars=self.parSetup['parameters']
       par=pars[parName]
       par=pars[parName]
@@ -723,5 +761,4 @@ def get(timeUnit,par):
       return 60*v
       return 60*v
 
 
    #no idea what to do
    #no idea what to do
-   return v
-     
+   return v

+ 0 - 0
pythonScripts/uporaba_run_solver.py