#
from daCore.BasicObjects import State, Covariance, FullOperator, Operator
from daCore.BasicObjects import AlgorithmAndParameters, DataObserver
-from daCore.BasicObjects import CaseLogger
+from daCore.BasicObjects import RegulationAndParameters, CaseLogger
from daCore import PlatformInfo
#
from daCore import ExtendedLogging ; ExtendedLogging.ExtendedLogging() # A importer en premier
#
self.__adaoObject = {}
self.__StoredInputs = {}
+ self.__PostAnalysis = []
#
self.__Concepts = [
"AlgorithmParameters",
"CheckingPoint",
"ControlInput",
"Observation",
- "Controls",
"BackgroundError",
"ObservationError",
"EvolutionError",
"ObservationOperator",
"EvolutionModel",
"ControlModel",
+ "Name",
+ "Directory",
"Debug",
"NoDebug",
+ "RegulationParameters",
"Observer",
]
#
AppliedInXb = None,
AvoidRC = True,
Checked = False,
+ ColMajor = False,
+ ColNames = None,
+ DataFile = None,
DiagonalSparseMatrix = None,
Info = None,
+ InputAsMF = False,
Matrix = None,
ObjectFunction = None,
ObjectMatrix = None,
"Interface unique de definition de variables d'entrees par argument"
self.__case.register("set",dir(),locals(),None,True)
try:
- if Concept in ("Background", "CheckingPoint", "ControlInput", "Observation", "Controls"):
+ if Concept in ("Background", "CheckingPoint", "ControlInput", "Observation"):
commande = getattr(self,"set"+Concept)
- commande(Vector, VectorSerie, Script, Stored, Scheduler, Checked )
+ commande(Vector, VectorSerie, Script, DataFile, ColNames, ColMajor, Stored, Scheduler, Checked )
elif Concept in ("BackgroundError", "ObservationError", "EvolutionError"):
commande = getattr(self,"set"+Concept)
commande(Matrix, ScalarSparseMatrix, DiagonalSparseMatrix,
Script, Stored, ObjectMatrix, Checked )
elif Concept == "AlgorithmParameters":
self.setAlgorithmParameters( Algorithm, Parameters, Script )
+ elif Concept == "RegulationParameters":
+ self.setRegulationParameters( Algorithm, Parameters, Script )
+ elif Concept == "Name":
+ self.setName(String)
+ elif Concept == "Directory":
+ self.setDirectory(String)
elif Concept == "Debug":
self.setDebug()
elif Concept == "NoDebug":
elif Concept == "ObservationOperator":
self.setObservationOperator(
Matrix, OneFunction, ThreeFunctions, AppliedInXb,
- Parameters, Script, Stored, AvoidRC, Checked )
+ Parameters, Script,
+ Stored, AvoidRC, InputAsMF, Checked )
elif Concept in ("EvolutionModel", "ControlModel"):
commande = getattr(self,"set"+Concept)
commande(
Matrix, OneFunction, ThreeFunctions,
- Parameters, Script, Scheduler, Stored, AvoidRC, Checked )
-
+ Parameters, Script, Scheduler,
+ Stored, AvoidRC, InputAsMF, Checked )
else:
raise ValueError("the variable named '%s' is not allowed."%str(Concept))
except Exception as e:
Vector = None,
VectorSerie = None,
Script = None,
+ DataFile = None,
+ ColNames = None,
+ ColMajor = False,
Stored = False,
Scheduler = None,
Checked = False):
name = Concept,
asVector = Vector,
asPersistentVector = VectorSerie,
- asScript = Script,
+ asScript = self.__with_directory(Script),
+ asDataFile = DataFile,
+ colNames = ColNames,
+ colMajor = ColMajor,
scheduledBy = Scheduler,
toBeChecked = Checked,
)
Vector = None,
VectorSerie = None,
Script = None,
+ DataFile = None,
+ ColNames = None,
+ ColMajor = False,
Stored = False,
Scheduler = None,
Checked = False):
name = Concept,
asVector = Vector,
asPersistentVector = VectorSerie,
- asScript = Script,
+ asScript = self.__with_directory(Script),
+ asDataFile = DataFile,
+ colNames = ColNames,
+ colMajor = ColMajor,
scheduledBy = Scheduler,
toBeChecked = Checked,
)
Vector = None,
VectorSerie = None,
Script = None,
+ DataFile = None,
+ ColNames = None,
+ ColMajor = False,
Stored = False,
Scheduler = None,
Checked = False):
name = Concept,
asVector = Vector,
asPersistentVector = VectorSerie,
- asScript = Script,
+ asScript = self.__with_directory(Script),
+ asDataFile = DataFile,
+ colNames = ColNames,
+ colMajor = ColMajor,
scheduledBy = Scheduler,
toBeChecked = Checked,
)
Vector = None,
VectorSerie = None,
Script = None,
+ DataFile = None,
+ ColNames = None,
+ ColMajor = False,
Stored = False,
Scheduler = None,
Checked = False):
name = Concept,
asVector = Vector,
asPersistentVector = VectorSerie,
- asScript = self.with_directory(Script),
+ asScript = self.__with_directory(Script),
+ asDataFile = DataFile,
+ colNames = ColNames,
+ colMajor = ColMajor,
scheduledBy = Scheduler,
toBeChecked = Checked,
)
asEyeByScalar = ScalarSparseMatrix,
asEyeByVector = DiagonalSparseMatrix,
asCovObject = ObjectMatrix,
- asScript = Script,
+ asScript = self.__with_directory(Script),
toBeChecked = Checked,
)
if Stored:
asEyeByScalar = ScalarSparseMatrix,
asEyeByVector = DiagonalSparseMatrix,
asCovObject = ObjectMatrix,
- asScript = Script,
+ asScript = self.__with_directory(Script),
toBeChecked = Checked,
)
if Stored:
asEyeByScalar = ScalarSparseMatrix,
asEyeByVector = DiagonalSparseMatrix,
asCovObject = ObjectMatrix,
- asScript = Script,
+ asScript = self.__with_directory(Script),
toBeChecked = Checked,
)
if Stored:
Script = None,
Stored = False,
AvoidRC = True,
+ InputAsMF = False,
Checked = False):
"Definition d'un concept de calcul"
Concept = "ObservationOperator"
asMatrix = Matrix,
asOneFunction = OneFunction,
asThreeFunctions = ThreeFunctions,
- asScript = Script,
+ asScript = self.__with_directory(Script),
asDict = Parameters,
appliedInX = AppliedInXb,
avoidRC = AvoidRC,
+ inputAsMF = InputAsMF,
scheduledBy = None,
toBeChecked = Checked,
)
ThreeFunctions = None,
Parameters = None,
Script = None,
- Stored = False,
Scheduler = None,
+ Stored = False,
AvoidRC = True,
+ InputAsMF = False,
Checked = False):
"Definition d'un concept de calcul"
Concept = "EvolutionModel"
asMatrix = Matrix,
asOneFunction = OneFunction,
asThreeFunctions = ThreeFunctions,
- asScript = Script,
+ asScript = self.__with_directory(Script),
asDict = Parameters,
appliedInX = None,
avoidRC = AvoidRC,
+ inputAsMF = InputAsMF,
scheduledBy = Scheduler,
toBeChecked = Checked,
)
ThreeFunctions = None,
Parameters = None,
Script = None,
- Stored = False,
Scheduler = None,
+ Stored = False,
AvoidRC = True,
+ InputAsMF = False,
Checked = False):
"Definition d'un concept de calcul"
Concept = "ControlModel"
asMatrix = Matrix,
asOneFunction = OneFunction,
asThreeFunctions = ThreeFunctions,
- asScript = Script,
+ asScript = self.__with_directory(Script),
asDict = Parameters,
appliedInX = None,
avoidRC = AvoidRC,
+ inputAsMF = InputAsMF,
scheduledBy = Scheduler,
toBeChecked = Checked,
)
self.__StoredInputs[Concept] = self.__adaoObject[Concept].getO()
return 0
+ def setName(self, String=None):
+ "Definition d'un concept de calcul"
+ self.__case.register("setName",dir(),locals())
+ if String is not None:
+ self.__name = str(String)
+ else:
+ self.__name = None
+ self.__StoredInputs["Name"] = self.__name
+
+ def setDirectory(self, String=None):
+ "Definition 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))
+ else:
+ self.__directory = None
+ self.__StoredInputs["Directory"] = self.__directory
+
def setDebug(self, __level = 10):
"NOTSET=0 < DEBUG=10 < INFO=20 < WARNING=30 < ERROR=40 < CRITICAL=50"
self.__case.register("setDebug",dir(),locals())
name = Concept,
asAlgorithm = Algorithm,
asDict = Parameters,
- asScript = Script,
+ asScript = self.__with_directory(Script),
)
return 0
raise ValueError("No algorithm registred, ask for one before updating parameters")
self.__adaoObject["AlgorithmParameters"].updateParameters(
asDict = Parameters,
- asScript = Script,
+ asScript = self.__with_directory(Script),
+ )
+ return 0
+
+ def setRegulationParameters(self,
+ Algorithm = None,
+ Parameters = None,
+ Script = None):
+ "Definition d'un concept de calcul"
+ Concept = "RegulationParameters"
+ self.__case.register("set"+Concept, dir(), locals())
+ self.__adaoObject[Concept] = RegulationAndParameters(
+ name = Concept,
+ asAlgorithm = Algorithm,
+ asDict = Parameters,
+ asScript = self.__with_directory(Script),
)
return 0
onVariable = Variable,
asTemplate = Template,
asString = String,
- asScript = Script,
+ asScript = self.__with_directory(Script),
asObsObject = ObjectFunction,
withInfo = Info,
scheduledBy = Scheduler,
files.sort()
return files
-
def get_algorithms_main_path(self):
"""
Renvoie le chemin pour le répertoire principal contenant les algorithmes
def dump(self, FileName=None, Formater="TUI"):
"Restitution normalisée des commandes"
- return self.__case.dump(FileName, Formater)
+ __Upa = "\n".join(self.__PostAnalysis)
+ return self.__case.dump(FileName, Formater, __Upa)
- def load(self, FileName=None, Formater="TUI"):
+ def load(self, FileName=None, Content=None, Object=None, Formater="TUI"):
"Chargement normalisé des commandes"
- __commands = self.__case.load(FileName, Formater)
+ __commands = self.__case.load(FileName, Content, Object, Formater)
from numpy import array, matrix
for __command in __commands:
- exec("self."+__command)
+ if __command.find("set")>-1 and __command.find("set_")<0:
+ exec("self."+__command)
+ else:
+ self.__PostAnalysis.append(__command)
return self
+ def convert(self,
+ FileNameFrom=None, ContentFrom=None, ObjectFrom=None, FormaterFrom="TUI",
+ FileNameTo=None, FormaterTo="TUI",
+ ):
+ "Conversion normalisée des commandes"
+ return self.load(
+ FileName=FileNameFrom, Content=ContentFrom, Object=ObjectFrom, Formater=FormaterFrom
+ ).dump(
+ FileName=FileNameTo, Formater=FormaterTo
+ )
+
def clear(self):
"Effacement du contenu du cas en cours"
self.__init__(self.__name)
# -----------------------------------------------------------
+ def __with_directory(self, __filename=None):
+ if os.path.exists(str(__filename)):
+ __fullpath = __filename
+ elif os.path.exists(os.path.join(str(self.__directory), str(__filename))):
+ __fullpath = os.path.join(self.__directory, str(__filename))
+ else:
+ __fullpath = __filename
+ return __fullpath
+
def __dir__(self):
"Clarifie la visibilité des méthodes"
- return ['set', 'get', 'execute', '__doc__', '__init__', '__module__']
+ return ['set', 'get', 'execute', 'dump', 'load', '__doc__', '__init__', '__module__']
def prepare_to_pickle(self):
"Retire les variables non pickelisables, avec recopie efficace"
if sys.version_info[0] == 2:
del self.__adaoObject # Because it breaks pickle in Python 2. Not required for Python 3
del self.__case # Because it breaks pickle in Python 2. Not required for Python 3
- return 0
+ if sys.version_info.major < 3:
+ return 0
+ else:
+ return self.__StoredInputs
# ==============================================================================
if __name__ == "__main__":