X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FdaComposant%2FdaCore%2FAidsm.py;h=256c38a765483378a4d8f87d6fc51793d6db9f2b;hb=a6845547d27bcdc0928f898a4c8a2e4fc276c69e;hp=f8b0b997c2132991bb257f8a9d459d4d5f2e3202;hpb=850ff06673c4f71000caff5555d3cd51f17d5735;p=modules%2Fadao.git diff --git a/src/daComposant/daCore/Aidsm.py b/src/daComposant/daCore/Aidsm.py index f8b0b99..256c38a 100644 --- a/src/daComposant/daCore/Aidsm.py +++ b/src/daComposant/daCore/Aidsm.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2008-2021 EDF R&D +# Copyright (C) 2008-2023 EDF R&D # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -78,6 +78,10 @@ class Aidsm(object): self.__adaoObject[ename] = None for ename in ("ObservationOperator", "EvolutionModel", "ControlModel"): self.__adaoObject[ename] = {} + for ename in ("BackgroundError", "ObservationError"): + self.__adaoObject[ename] = Covariance(ename, asEyeByScalar = 1.) + for ename in ("EvolutionError",): + self.__adaoObject[ename] = Covariance(ename, asEyeByScalar = 1.e-16) for ename in ("Observer", "UserPostAnalysis"): self.__adaoObject[ename] = [] self.__StoredInputs[ename] = [] # Vide par defaut @@ -95,7 +99,6 @@ class Aidsm(object): Concept = None, # Premier argument Algorithm = None, AppliedInXb = None, - AvoidRC = True, Checked = False, ColMajor = False, ColNames = None, @@ -109,6 +112,7 @@ class Aidsm(object): ObjectMatrix = None, OneFunction = None, Parameters = None, + PerformanceProfile = None, ScalarSparseMatrix = None, Scheduler = None, Script = None, @@ -120,7 +124,7 @@ class Aidsm(object): Vector = None, VectorSerie = None, ): - "Interface unique de definition de variables d'entrees par argument" + "Interface unique de définition de variables d'entrées par argument" self.__case.register("set",dir(),locals(),None,True) try: if Concept in ("Background", "CheckingPoint", "ControlInput", "Observation"): @@ -152,20 +156,20 @@ class Aidsm(object): self.setObservationOperator( Matrix, OneFunction, ThreeFunctions, AppliedInXb, Parameters, Script, ExtraArguments, - Stored, AvoidRC, InputFunctionAsMulti, Checked ) + Stored, PerformanceProfile, InputFunctionAsMulti, Checked ) elif Concept in ("EvolutionModel", "ControlModel"): commande = getattr(self,"set"+Concept) commande( Matrix, OneFunction, ThreeFunctions, Parameters, Script, Scheduler, ExtraArguments, - Stored, AvoidRC, InputFunctionAsMulti, Checked ) + Stored, PerformanceProfile, InputFunctionAsMulti, Checked ) else: raise ValueError("the variable named '%s' is not allowed."%str(Concept)) except Exception as e: - if isinstance(e, SyntaxError): msg = "at %s: %s"%(e.offset, e.text) + if isinstance(e, SyntaxError): msg = " at %s: %s"%(e.offset, e.text) else: msg = "" raise ValueError(("during settings, the following error occurs:\n"+\ - "\n%s %s\n\nSee also the potential messages, "+\ + "\n%s%s\n\nSee also the potential messages, "+\ "which can show the origin of the above error, "+\ "in the launching terminal.")%(str(e),msg)) @@ -181,7 +185,7 @@ class Aidsm(object): Stored = False, Scheduler = None, Checked = False): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "Background" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = State( @@ -209,7 +213,7 @@ class Aidsm(object): Stored = False, Scheduler = None, Checked = False): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "CheckingPoint" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = State( @@ -237,7 +241,7 @@ class Aidsm(object): Stored = False, Scheduler = None, Checked = False): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "ControlInput" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = State( @@ -265,7 +269,7 @@ class Aidsm(object): Stored = False, Scheduler = None, Checked = False): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "Observation" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = State( @@ -291,7 +295,7 @@ class Aidsm(object): Stored = False, ObjectMatrix = None, Checked = False): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "BackgroundError" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = Covariance( @@ -315,7 +319,7 @@ class Aidsm(object): Stored = False, ObjectMatrix = None, Checked = False): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "ObservationError" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = Covariance( @@ -339,7 +343,7 @@ class Aidsm(object): Stored = False, ObjectMatrix = None, Checked = False): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "EvolutionError" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = Covariance( @@ -364,10 +368,10 @@ class Aidsm(object): Script = None, ExtraArguments = None, Stored = False, - AvoidRC = True, + PerformanceProfile = None, InputFunctionAsMulti = False, Checked = False): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "ObservationOperator" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = FullOperator( @@ -379,7 +383,7 @@ class Aidsm(object): asDict = Parameters, appliedInX = AppliedInXb, extraArguments = ExtraArguments, - avoidRC = AvoidRC, + performancePrf = PerformanceProfile, inputAsMF = InputFunctionAsMulti, scheduledBy = None, toBeChecked = Checked, @@ -397,10 +401,10 @@ class Aidsm(object): Scheduler = None, ExtraArguments = None, Stored = False, - AvoidRC = True, + PerformanceProfile = None, InputFunctionAsMulti = False, Checked = False): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "EvolutionModel" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = FullOperator( @@ -412,7 +416,7 @@ class Aidsm(object): asDict = Parameters, appliedInX = None, extraArguments = ExtraArguments, - avoidRC = AvoidRC, + performancePrf = PerformanceProfile, inputAsMF = InputFunctionAsMulti, scheduledBy = Scheduler, toBeChecked = Checked, @@ -430,10 +434,10 @@ class Aidsm(object): Scheduler = None, ExtraArguments = None, Stored = False, - AvoidRC = True, + PerformanceProfile = None, InputFunctionAsMulti = False, Checked = False): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "ControlModel" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = FullOperator( @@ -445,7 +449,7 @@ class Aidsm(object): asDict = Parameters, appliedInX = None, extraArguments = ExtraArguments, - avoidRC = AvoidRC, + performancePrf = PerformanceProfile, inputAsMF = InputFunctionAsMulti, scheduledBy = Scheduler, toBeChecked = Checked, @@ -455,7 +459,7 @@ class Aidsm(object): return 0 def setName(self, String=None): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" self.__case.register("setName",dir(),locals()) if String is not None: self.__name = str(String) @@ -464,7 +468,7 @@ class Aidsm(object): self.__StoredInputs["Name"] = self.__name def setDirectory(self, String=None): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" self.__case.register("setDirectory",dir(),locals()) if os.path.isdir(os.path.abspath(str(String))): self.__directory = os.path.abspath(str(String)) @@ -494,7 +498,7 @@ class Aidsm(object): Algorithm = None, Parameters = None, Script = None): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "AlgorithmParameters" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = AlgorithmAndParameters( @@ -508,7 +512,7 @@ class Aidsm(object): def updateAlgorithmParameters(self, Parameters = None, Script = None): - "Mise a jour d'un concept de calcul" + "Mise à jour d'un concept de calcul" Concept = "AlgorithmParameters" if Concept not in self.__adaoObject or self.__adaoObject[Concept] is None: raise ValueError("\n\nNo algorithm registred, set one before updating parameters or executing\n") @@ -523,7 +527,7 @@ class Aidsm(object): Algorithm = None, Parameters = None, Script = None): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "RegulationParameters" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = RegulationAndParameters( @@ -537,7 +541,7 @@ class Aidsm(object): def setSupplementaryParameters(self, Parameters = None, Script = None): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "SupplementaryParameters" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept] = ExternalParameters( @@ -550,7 +554,7 @@ class Aidsm(object): def updateSupplementaryParameters(self, Parameters = None, Script = None): - "Mise a jour d'un concept de calcul" + "Mise à jour d'un concept de calcul" Concept = "SupplementaryParameters" if Concept not in self.__adaoObject or self.__adaoObject[Concept] is None: self.__adaoObject[Concept] = ExternalParameters(name = Concept) @@ -568,7 +572,7 @@ class Aidsm(object): Info = None, ObjectFunction = None, Scheduler = None): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "Observer" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept].append( DataObserver( @@ -588,7 +592,7 @@ class Aidsm(object): Variable = None, ObjectFunction = None, ): - "Permet de retirer un observer à une ou des variable nommée" + "Permet de retirer un observer à une ou des variable nommées" if "AlgorithmParameters" not in self.__adaoObject: raise ValueError("No algorithm registred, ask for one before removing observers") # @@ -613,7 +617,7 @@ class Aidsm(object): Template = None, String = None, Script = None): - "Definition d'un concept de calcul" + "Définition d'un concept de calcul" Concept = "UserPostAnalysis" self.__case.register("set"+Concept, dir(), locals()) self.__adaoObject[Concept].append( repr(UserScript( @@ -622,11 +626,12 @@ class Aidsm(object): asString = String, asScript = self.__with_directory(Script), ))) + return 0 # ----------------------------------------------------------- def get(self, Concept=None, noDetails=True ): - "Recuperation d'une sortie du calcul" + "Récupération d'une sortie du calcul" if Concept is not None: try: self.__case.register("get", dir(), locals(), Concept) # Break pickle in Python 2 @@ -671,7 +676,7 @@ class Aidsm(object): # ----------------------------------------------------------- - def get_available_variables(self): + def __get_available_variables(self): """ Renvoie les variables potentiellement utilisables pour l'étude, initialement stockées comme données d'entrées ou dans les algorithmes, @@ -695,7 +700,7 @@ class Aidsm(object): variables.sort() return variables - def get_available_algorithms(self): + def __get_available_algorithms(self): """ Renvoie la liste des algorithmes potentiellement utilisables, identifiés par les chaînes de caractères. @@ -715,13 +720,13 @@ class Aidsm(object): files.sort() return files - def get_algorithms_main_path(self): + def __get_algorithms_main_path(self): """ Renvoie le chemin pour le répertoire principal contenant les algorithmes """ return self.__parent - def add_algorithms_path(self, Path=None): + def __add_algorithms_path(self, Path=None): """ Ajoute au chemin de recherche des algorithmes un répertoire dans lequel se trouve un sous-répertoire "daAlgorithms" @@ -762,8 +767,10 @@ class Aidsm(object): self.dump( FileName, "TUI") self.__adaoObject["AlgorithmParameters"].executePythonScheme( self.__adaoObject ) if "UserPostAnalysis" in self.__adaoObject and len(self.__adaoObject["UserPostAnalysis"])>0: - __Upa = eval("\n".join([str(val).replace("ADD.","self.") for val in self.__adaoObject["UserPostAnalysis"]])) - exec(__Upa, {}, {'self':self}) + self.__objname = self.__retrieve_objname() + for __UpaOne in self.__adaoObject["UserPostAnalysis"]: + __UpaOne = eval(str(__UpaOne)) + exec(__UpaOne, {}, {'self':self, 'ADD':self, 'case':self, 'adaopy':self, self.__objname:self}) return 0 def __executeYACSScheme(self, FileName=None): @@ -823,9 +830,8 @@ class Aidsm(object): for level in reversed(inspect.stack()): __names += [name for name, value in level.frame.f_locals.items() if value is self] __names += [name for name, value in globals().items() if value is self] - __names.remove('self') # Devrait toujours être trouvé, donc pas d'erreur + while 'self' in __names: __names.remove('self') # Devrait toujours être trouvé, donc pas d'erreur if len(__names) > 0: - logging.debug("Cet objet est appelé par au moins une variable :",__names) self.__objname = __names[0] else: self.__objname = "ADD"