self._pre_run(Parameters)
#
# Correction pour pallier a un bug de TNC sur le retour du Minimum
- if self._parameters.has_key("Minimizer") == "TNC":
+ if "Minimizer" in self._parameters and self._parameters["Minimizer"] == "TNC":
self.setParameterValue("StoreInternalVariables",True)
#
# Opérateurs
Hm = HO["Direct"].appliedTo
Ha = HO["Adjoint"].appliedInXTo
#
- # Utilisation éventuelle d'un vecteur H(Xb) précalculé (sans cout)
- # ----------------------------------------------------------------
- if HO["AppliedToX"] is not None and HO["AppliedToX"].has_key("HXb"):
+ # Utilisation éventuelle d'un vecteur H(Xb) précalculé
+ # ----------------------------------------------------
+ if HO["AppliedToX"] is not None and "HXb" in HO["AppliedToX"]:
HXb = Hm( Xb, HO["AppliedToX"]["HXb"])
else:
HXb = Hm( Xb )
#
if "OMA" in self._parameters["StoreSupplementaryCalculations"] or \
"SigmaObs2" in self._parameters["StoreSupplementaryCalculations"] or \
- "SimulatedObservationAtOptimum" in self._parameters["StoreSupplementaryCalculations"] or \
- "SimulationQuantiles" in self._parameters["StoreSupplementaryCalculations"]:
+ "SimulationQuantiles" in self._parameters["StoreSupplementaryCalculations"] or \
+ "SimulatedObservationAtOptimum" in self._parameters["StoreSupplementaryCalculations"]:
if "SimulatedObservationAtCurrentState" in self._parameters["StoreSupplementaryCalculations"]:
HXa = self.StoredVariables["SimulatedObservationAtCurrentState"][IndexMin]
elif "SimulatedObservationAtCurrentOptimum" in self._parameters["StoreSupplementaryCalculations"]:
# Calculs et/ou stockages supplémentaires
# ---------------------------------------
if "Innovation" in self._parameters["StoreSupplementaryCalculations"] or \
- "OMB" in self._parameters["StoreSupplementaryCalculations"] or \
"SigmaObs2" in self._parameters["StoreSupplementaryCalculations"] or \
- "MahalanobisConsistency" in self._parameters["StoreSupplementaryCalculations"]:
+ "MahalanobisConsistency" in self._parameters["StoreSupplementaryCalculations"] or \
+ "OMB" in self._parameters["StoreSupplementaryCalculations"]:
d = Y - HXb
if "Innovation" in self._parameters["StoreSupplementaryCalculations"]:
self.StoredVariables["Innovation"].store( numpy.ravel(d) )
self._pre_run(Parameters)
#
# Correction pour pallier a un bug de TNC sur le retour du Minimum
- if self._parameters.has_key("Minimizer") == "TNC":
+ if "Minimizer" in self._parameters and self._parameters["Minimizer"] == "TNC":
self.setParameterValue("StoreInternalVariables",True)
#
# Opérateurs
#
Mm = EM["Direct"].appliedControledFormTo
#
- if CM is not None and CM.has_key("Tangent") and U is not None:
+ if CM is not None and "Tangent" in CM and U is not None:
Cm = CM["Tangent"].asMatrix(Xb)
else:
Cm = None
#
# Utilisation éventuelle d'un vecteur H(Xb) précalculé
# ----------------------------------------------------
- if HO["AppliedToX"] is not None and HO["AppliedToX"].has_key("HXb"):
+ if HO["AppliedToX"] is not None and "HXb" in HO["AppliedToX"]:
HXb = H( Xb, HO["AppliedToX"]["HXb"])
else:
HXb = H( Xb )
if self._parameters["EstimationOf"] == "State":
M = EM["Direct"].appliedControledFormTo
#
- if CM is not None and CM.has_key("Tangent") and U is not None:
+ if CM is not None and "Tangent" in CM and U is not None:
Cm = CM["Tangent"].asMatrix(Xb)
else:
Cm = None
Mt = EM["Tangent"].asMatrix(Xb)
Ma = EM["Adjoint"].asMatrix(Xb)
#
- if CM is not None and CM.has_key("Tangent") and U is not None:
+ if CM is not None and "Tangent" in CM and U is not None:
Cm = CM["Tangent"].asMatrix(Xb)
else:
Cm = None
def run(self, Xb=None, Y=None, U=None, HO=None, EM=None, CM=None, R=None, B=None, Q=None, Parameters=None):
self._pre_run(Parameters)
#
- if self._parameters.has_key("BoxBounds") and (type(self._parameters["BoxBounds"]) is type([]) or type(self._parameters["BoxBounds"]) is type(())) and (len(self._parameters["BoxBounds"]) > 0):
+ if "BoxBounds" in self._parameters and (type(self._parameters["BoxBounds"]) is type([]) or type(self._parameters["BoxBounds"]) is type(())) and (len(self._parameters["BoxBounds"]) > 0):
BoxBounds = self._parameters["BoxBounds"]
logging.debug("%s Prise en compte des bornes d'incréments de paramètres effectuee"%(self._name,))
else:
#
# Utilisation éventuelle d'un vecteur H(Xb) précalculé
# ----------------------------------------------------
- if HO["AppliedToX"] is not None and HO["AppliedToX"].has_key("HXb"):
+ if HO["AppliedToX"] is not None and "HXb" in HO["AppliedToX"]:
HXb = Hm( Xb, HO["AppliedToX"]["HXb"])
else:
HXb = Hm( Xb )
if self._parameters["EstimationOf"] == "State":
M = EM["Direct"].appliedControledFormTo
#
- if CM is not None and CM.has_key("Tangent") and U is not None:
+ if CM is not None and "Tangent" in CM and U is not None:
Cm = CM["Tangent"].asMatrix(Xb)
else:
Cm = None
import os, sys
import numpy
-import ExtendedLogging ; ExtendedLogging.ExtendedLogging() # A importer en premier
+from daCore import ExtendedLogging ; ExtendedLogging.ExtendedLogging() # A importer en premier
import logging
try:
import scipy.optimize
logging.debug("Succeed initial import of scipy.optimize with Scipy %s", scipy.version.version)
except ImportError:
logging.debug("Fail initial import of scipy.optimize")
-import Persistence
-from BasicObjects import Operator, Covariance
-import PlatformInfo
+from daCore import Persistence
+from daCore.BasicObjects import Operator, Covariance
+from daCore import PlatformInfo
# ==============================================================================
class AssimilationStudy:
import logging, copy
import numpy
-import Persistence
-import PlatformInfo
+from daCore import Persistence
+from daCore import PlatformInfo
# ==============================================================================
class CacheManager(object):
"Vérifie l'existence d'un calcul correspondant à la valeur"
__alc = False
__HxV = None
- for i in xrange(min(len(self.__listOPCV),self.__lenghtOR)-1,-1,-1):
+ for i in range(min(len(self.__listOPCV),self.__lenghtOR)-1,-1,-1):
if xValue.size != self.__listOPCV[i][0].size:
# logging.debug("CM Différence de la taille %s de X et de celle %s du point %i déjà calculé", xValue.shape,i,self.__listOPCP[i].shape)
continue
#
return HxValue
- def appliedControledFormTo(self, (xValue, uValue) ):
+ def appliedControledFormTo(self, paire ):
"""
Permet de restituer le résultat de l'application de l'opérateur à une
paire (xValue, uValue). Cette méthode se contente d'appliquer, son
- xValue : argument X adapté pour appliquer l'opérateur
- uValue : argument U adapté pour appliquer l'opérateur
"""
+ assert len(paire) == 2, "Incorrect number of arguments"
+ xValue, uValue = paire
if self.__Matrix is not None:
self.__addOneMatrixCall()
return self.__Matrix * xValue
self.__addOneMethodCall()
return self.__Method( xValue )
- def appliedInXTo(self, (xNominal, xValue) ):
+ def appliedInXTo(self, paire ):
"""
Permet de restituer le résultat de l'application de l'opérateur à un
argument xValue, sachant que l'opérateur est valable en xNominal.
est construit pour etre ensuite appliqué
- xValue : argument adapté pour appliquer l'opérateur
"""
+ assert len(paire) == 2, "Incorrect number of arguments"
+ xNominal, xValue = paire
if self.__Matrix is not None:
self.__addOneMatrixCall()
return self.__Matrix * xValue
self.__setParameters(Parameters)
#
# Corrections et complements
- if self._parameters.has_key("Bounds") and (type(self._parameters["Bounds"]) is type([]) or type(self._parameters["Bounds"]) is type(())) and (len(self._parameters["Bounds"]) > 0):
+ if "Bounds" in self._parameters and (type(self._parameters["Bounds"]) is type([]) or type(self._parameters["Bounds"]) is type(())) and (len(self._parameters["Bounds"]) > 0):
logging.debug("%s Prise en compte des bornes effectuee"%(self._name,))
else:
self._parameters["Bounds"] = None
import os
import sys
import logging
-import PlatformInfo
+from daCore import PlatformInfo
LOGFILE = os.path.join(os.path.abspath(os.curdir),"AssimilationStudy.log")
import numpy, copy
-from PlatformInfo import PathManagement ; PathManagement()
+from daCore.PlatformInfo import PathManagement ; PathManagement()
# ==============================================================================
class Persistence(object):
def getName(self):
"Retourne le nom de l'application"
- import version as dav
+ import daCore.version as dav
return dav.name
def getVersion(self):
"Retourne le numéro de la version"
- import version as dav
+ import daCore.version as dav
return dav.version
def getDate(self):
"Retourne la date de création de la version"
- import version as dav
+ import daCore.version as dav
return dav.date
def getPythonVersion(self):
return sys.float_info.epsilon
def __str__(self):
- import version as dav
+ import daCore.version as dav
return "%s %s (%s)"%(dav.name,dav.version,dav.date)
# ==============================================================================
__keys.sort()
return __keys
- def has_key(self, name):
- "D.has_key(k) -> True if D has a key k, else False"
- return name in self.__values
+ # def has_key(self, name):
+ # "D.has_key(k) -> True if D has a key k, else False"
+ # return name in self.__values
def __contains__(self, name):
"D.__contains__(k) -> True if D has a key k, else False"
# ==============================================================================
if __name__ == "__main__":
- print '\n AUTODIAGNOSTIC \n'
+ print('\n AUTODIAGNOSTIC \n')
D = ElementaryDiagnostic("Mon Plot")
D.calculate(vect, title = "Vecteur 8", ltitle = "Vecteur 8")
temps = [0.1,0.2,0.3,0.4,0.5]
D.calculate(vect, temps, title = "Vecteur 8 avec axe du temps modifie")
- print
+ print("")
self.__g('set style data lines')
self.__g('set grid')
self.__g('set autoscale')
- self.__g('set title "'+title +'"')
- self.__g('set xlabel "'+xlabel+'"')
- self.__g('set ylabel "'+ylabel+'"')
+ self.__g('set title "'+str(title) +'"')
+ self.__g('set xlabel "'+str(xlabel)+'"')
+ self.__g('set ylabel "'+str(ylabel)+'"')
self.__g.plot( self.__gnuplot.Data( Steps, Vector.pop(0), title=ltitle.pop(0) ) )
for vector in Vector:
self.__g.replot( self.__gnuplot.Data( Steps, vector, title=ltitle.pop(0) ) )
# ==============================================================================
if __name__ == "__main__":
- print '\n AUTODIAGNOSTIC \n'
+ print('\n AUTODIAGNOSTIC \n')
D = ElementaryDiagnostic("Mon Plot")
[0.1,0.2,0.3,0.4,0.5],
title = "Vecteurs 1 a 3, temps modifie",
ltitle = ["Vecteur 1","Vecteur 2","Vecteur 3"])
- print
+ print("")
# ==============================================================================
if __name__ == "__main__":
- print '\n AUTODIAGNOSTIC \n'
+ print('\n AUTODIAGNOSTIC \n')
D = ElementaryDiagnostic("Ma RMS")
vect1 = [-0.23262176, 1.36065207, 0.32988102, 0.24400551, -0.66765848, -0.19088483, -0.31082575, 0.56849814, 1.21453443, 0.99657516]
vect2 = [0,0,0,0,0,0,0,0,0,0]
D.calculate(vect1,vect2)
- print " Les valeurs de RMS attendues sont les suivantes : [1.0, 1.0, 1.0, 3.0, 0.53162016515553656, 0.73784217096601323]"
- print " Les RMS obtenues................................:", D[:]
- print " La moyenne......................................:", D.mean()
- print
+ print(" Les valeurs de RMS attendues sont les suivantes : [1.0, 1.0, 1.0, 3.0, 0.53162016515553656, 0.73784217096601323]")
+ print(" Les RMS obtenues................................: %s"%(D[:],))
+ print(" La moyenne......................................: %s"%(D.mean(),))
+ print("")
#===============================================================================
if __name__ == "__main__":
- print '\n AUTODIAGNOSTIC \n'
+ print('\n AUTODIAGNOSTIC \n')
#
# Instanciation de l'objet diagnostic
# -----------------------------------
# ----------------------
x1 = numpy.matrix(([3. , 4., 5. ]))
x2 = numpy.matrix(([1.5, 2., 2.5]))
- print " L'écart entre les observations et l'ébauche est OMB :", x1
- print " La moyenne de OMB (i.e. le biais) est de............:", x1.mean()
- print " La variance de OMB est de...........................:", x1.var()
- print " L'écart entre les observations et l'analyse est OMA :", x2
- print " La moyenne de OMA (i.e. le biais) est de............:", x2.mean()
- print " La variance de OMA est de...........................:", x2.var()
+ print(" L'écart entre les observations et l'ébauche est OMB :", x1)
+ print(" La moyenne de OMB (i.e. le biais) est de............:", x1.mean())
+ print(" La variance de OMB est de...........................:", x1.var())
+ print(" L'écart entre les observations et l'analyse est OMA :", x2)
+ print(" La moyenne de OMA (i.e. le biais) est de............:", x2.mean())
+ print(" La variance de OMA est de...........................:", x2.var())
#
D.calculate( vectorOMB = x1, vectorOMA = x2)
if not D[0] :
- print " Résultat : l'analyse NE RÉDUIT PAS la variance"
+ print(" Résultat : l'analyse NE RÉDUIT PAS la variance")
else :
- print " Résultat : l'analyse RÉDUIT la variance"
- print
+ print(" Résultat : l'analyse RÉDUIT la variance")
+ print("")
#
# Vecteur de type array
# ---------------------
x1 = numpy.array(range(11))
x2 = numpy.matrix(range(-10,12,2))
- print " L'écart entre les observations et l'ébauche est OMB :", x1
- print " La moyenne de OMB (i.e. le biais) est de............:", x1.mean()
- print " La variance de OMB est de...........................:", x1.var()
- print " L'écart entre les observations et l'analyse est OMA :", x2
- print " La moyenne de OMA (i.e. le biais) est de............:", x2.mean()
- print " La variance de OMA est de...........................:", x2.var()
+ print(" L'écart entre les observations et l'ébauche est OMB :", x1)
+ print(" La moyenne de OMB (i.e. le biais) est de............:", x1.mean())
+ print(" La variance de OMB est de...........................:", x1.var())
+ print(" L'écart entre les observations et l'analyse est OMA :", x2)
+ print(" La moyenne de OMA (i.e. le biais) est de............:", x2.mean())
+ print(" La variance de OMA est de...........................:", x2.var())
#
D.calculate( vectorOMB = x1, vectorOMA = x2)
if not D[1] :
- print " Résultat : l'analyse NE RÉDUIT PAS la variance"
+ print(" Résultat : l'analyse NE RÉDUIT PAS la variance")
else :
- print " Résultat : l'analyse RÉDUIT la variance"
- print
+ print(" Résultat : l'analyse RÉDUIT la variance")
+ print("")
# logging.getLogger().setLevel(logging.DEBUG)
# ==============================================================================
-def ExecuteFunction( (X, funcrepr) ):
+def ExecuteFunction( paire ):
+ assert len(paire) == 2, "Incorrect number of arguments"
+ X, funcrepr = paire
__X = numpy.asmatrix(numpy.ravel( X )).T
__sys_path_tmp = sys.path ; sys.path.insert(0,funcrepr["__userFunction__path"])
__module = __import__(funcrepr["__userFunction__modl"], globals(), locals(), [])
self.__listJPIN = [] # Jacobian Previous Calculated Increment Norms
else:
self.__avoidRC = False
- if float(increment) <> 0.:
+ if abs(float(increment)) > 1.e-15:
self.__increment = float(increment)
else:
self.__increment = 0.01
return _Jacobienne
# ---------------------------------------------------------
- def TangentOperator(self, (X, dX) ):
+ def TangentOperator(self, paire ):
"""
Calcul du tangent à l'aide de la Jacobienne.
"""
+ assert len(paire) == 2, "Incorrect number of arguments"
+ X, dX = paire
_Jacobienne = self.TangentMatrix( X )
if dX is None or len(dX) == 0:
#
return _HtX.A1
# ---------------------------------------------------------
- def AdjointOperator(self, (X, Y) ):
+ def AdjointOperator(self, paire ):
"""
Calcul de l'adjoint à l'aide de la Jacobienne.
"""
+ assert len(paire) == 2, "Incorrect number of arguments"
+ X, Y = paire
_JacobienneT = self.TangentMatrix( X ).T
if Y is None or len(Y) == 0:
#
# ==============================================================================
if __name__ == "__main__":
- print '\n AUTODIAGNOSTIC \n'
+ print('\n AUTODIAGNOSTIC \n')
# ==============================================================================
if __name__ == "__main__":
- print '\n AUTODIAGNOSTIC \n'
+ print('\n AUTODIAGNOSTIC \n')