+ logging.debug("%s Taille mémoire utilisée de %.0f Mio"%(self._name, self._m.getUsedMemory("Mio")))
+ self._getTimeState(reset=True)
+ #
+ # Mise à jour des paramètres internes avec le contenu de Parameters, en
+ # reprenant les valeurs par défauts pour toutes celles non définies
+ self.__setParameters(Parameters, reset=True)
+ for k, v in self.__variable_names_not_public.items():
+ if k not in self._parameters: self.__setParameters( {k:v} )
+
+ # Corrections et compléments des vecteurs
+ def __test_vvalue(argument, variable, argname, symbol=None):
+ if symbol is None: symbol = variable
+ if argument is None:
+ if variable in self.__required_inputs["RequiredInputValues"]["mandatory"]:
+ raise ValueError("%s %s vector %s is not set and has to be properly defined!"%(self._name,argname,symbol))
+ elif variable in self.__required_inputs["RequiredInputValues"]["optional"]:
+ logging.debug("%s %s vector %s is not set, but is optional."%(self._name,argname,symbol))
+ else:
+ logging.debug("%s %s vector %s is not set, but is not required."%(self._name,argname,symbol))
+ else:
+ if variable in self.__required_inputs["RequiredInputValues"]["mandatory"]:
+ logging.debug("%s %s vector %s is required and set, and its size is %i."%(self._name,argname,symbol,numpy.array(argument).size))
+ elif variable in self.__required_inputs["RequiredInputValues"]["optional"]:
+ logging.debug("%s %s vector %s is optional and set, and its size is %i."%(self._name,argname,symbol,numpy.array(argument).size))
+ else:
+ logging.debug(
+ "%s %s vector %s is set although neither required nor optional, and its size is %i."%(
+ self._name,argname,symbol,numpy.array(argument).size))
+ return 0
+ __test_vvalue( Xb, "Xb", "Background or initial state" )
+ __test_vvalue( Y, "Y", "Observation" )
+ __test_vvalue( U, "U", "Control" )
+
+ # Corrections et compléments des covariances
+ def __test_cvalue(argument, variable, argname, symbol=None):
+ if symbol is None: symbol = variable
+ if argument is None:
+ if variable in self.__required_inputs["RequiredInputValues"]["mandatory"]:
+ raise ValueError("%s %s error covariance matrix %s is not set and has to be properly defined!"%(self._name,argname,symbol))
+ elif variable in self.__required_inputs["RequiredInputValues"]["optional"]:
+ logging.debug("%s %s error covariance matrix %s is not set, but is optional."%(self._name,argname,symbol))
+ else:
+ logging.debug("%s %s error covariance matrix %s is not set, but is not required."%(self._name,argname,symbol))
+ else:
+ if variable in self.__required_inputs["RequiredInputValues"]["mandatory"]:
+ logging.debug("%s %s error covariance matrix %s is required and set."%(self._name,argname,symbol))
+ elif variable in self.__required_inputs["RequiredInputValues"]["optional"]:
+ logging.debug("%s %s error covariance matrix %s is optional and set."%(self._name,argname,symbol))
+ else:
+ logging.debug("%s %s error covariance matrix %s is set although neither required nor optional."%(self._name,argname,symbol))
+ return 0
+ __test_cvalue( B, "B", "Background" )
+ __test_cvalue( R, "R", "Observation" )
+ __test_cvalue( Q, "Q", "Evolution" )
+
+ # Corrections et compléments des opérateurs
+ def __test_ovalue(argument, variable, argname, symbol=None):
+ if symbol is None: symbol = variable
+ if argument is None or (isinstance(argument,dict) and len(argument)==0):
+ if variable in self.__required_inputs["RequiredInputValues"]["mandatory"]:
+ raise ValueError("%s %s operator %s is not set and has to be properly defined!"%(self._name,argname,symbol))
+ elif variable in self.__required_inputs["RequiredInputValues"]["optional"]:
+ logging.debug("%s %s operator %s is not set, but is optional."%(self._name,argname,symbol))
+ else:
+ logging.debug("%s %s operator %s is not set, but is not required."%(self._name,argname,symbol))
+ else:
+ if variable in self.__required_inputs["RequiredInputValues"]["mandatory"]:
+ logging.debug("%s %s operator %s is required and set."%(self._name,argname,symbol))
+ elif variable in self.__required_inputs["RequiredInputValues"]["optional"]:
+ logging.debug("%s %s operator %s is optional and set."%(self._name,argname,symbol))
+ else:
+ logging.debug("%s %s operator %s is set although neither required nor optional."%(self._name,argname,symbol))
+ return 0
+ __test_ovalue( HO, "HO", "Observation", "H" )
+ __test_ovalue( EM, "EM", "Evolution", "M" )
+ __test_ovalue( CM, "CM", "Control Model", "C" )