From d9c1593b3ce93107e372627d4adcc1d62038c016 Mon Sep 17 00:00:00 2001 From: Jean-Philippe ARGAUD Date: Mon, 5 Jan 2015 21:14:18 +0100 Subject: [PATCH] Minor documentation and source improvements --- doc/en/ref_algorithm_3DVAR.rst | 44 +++++++++++++++++- doc/en/ref_algorithm_Blue.rst | 45 +++++++++++++++++- doc/en/ref_algorithm_ExtendedBlue.rst | 45 +++++++++++++++++- doc/fr/ref_algorithm_3DVAR.rst | 45 +++++++++++++++++- doc/fr/ref_algorithm_Blue.rst | 48 ++++++++++++++++++-- doc/fr/ref_algorithm_ExtendedBlue.rst | 44 +++++++++++++++++- src/daComposant/daAlgorithms/3DVAR.py | 2 + src/daComposant/daAlgorithms/Blue.py | 2 + src/daComposant/daAlgorithms/ExtendedBlue.py | 2 + src/daComposant/daCore/BasicObjects.py | 4 +- 10 files changed, 271 insertions(+), 10 deletions(-) diff --git a/doc/en/ref_algorithm_3DVAR.rst b/doc/en/ref_algorithm_3DVAR.rst index 1db7125..b4ac08e 100644 --- a/doc/en/ref_algorithm_3DVAR.rst +++ b/doc/en/ref_algorithm_3DVAR.rst @@ -54,6 +54,10 @@ Optional and required commands .. index:: single: GradientNormTolerance .. index:: single: StoreInternalVariables .. index:: single: StoreSupplementaryCalculations +.. index:: single: Quantiles +.. index:: single: SetSeed +.. index:: single: NumberOfSamplesForQuantiles +.. index:: single: SimulationForQuantiles The general required commands, available in the editing user interface, are the following: @@ -167,10 +171,48 @@ The options of the algorithm are the following: calculations or memory consumptions. The default is a void list, none of these variables being calculated and stored by default. The possible names are in the following list: ["APosterioriCovariance", "BMA", "OMA", "OMB", - "Innovation", "SigmaObs2", "MahalanobisConsistency"]. + "Innovation", "SigmaObs2", "MahalanobisConsistency", "SimulationQuantiles"]. Example : ``{"StoreSupplementaryCalculations":["BMA","Innovation"]}`` + Quantiles + This list indicates the values of quantile, between 0 and 1, to be estimated + by simulation around the optimal state. The sampling uses a multivariate + gaussian random sampling, directed by the *a posteriori* covariance matrix. + This option is useful only if the supplementary calculation + "SimulationQuantiles" has been chosen. The default is a void list. + + Example : ``{"Quantiles":[0.1,0.9]}`` + + SetSeed + This key allow to give an integer in order to fix the seed of the random + generator used to generate the ensemble. A convenient value is for example + 1000. By default, the seed is left uninitialized, and so use the default + initialization from the computer. + + Example : ``{"SetSeed":1000}`` + + NumberOfSamplesForQuantiles + This key indicates the number of simulation to be done in order to estimate + the quantiles. This option is useful only if the supplementary calculation + "SimulationQuantiles" has been chosen. The default is 100, which is often + sufficient for correct estimation of common quantiles at 5%, 10%, 90% or + 95%. + + Example : ``{"NumberOfSamplesForQuantiles":100}`` + + SimulationForQuantiles + This key indicates the type of simulation, linear (with the tangent + observation operator applied to perturbation increments around the optimal + state) or non-linear (with standard observation operator applied to + perturbated states), one want to do for each perturbation. It changes mainly + the time of each elementary calculation, usually longer in non-linear than + in linear. This option is useful only if the supplementary calculation + "SimulationQuantiles" has been chosen. The default value is "Linear", and + the possible choices are "Linear" and "NonLinear". + + Example : ``{"SimulationForQuantiles":"Linear"}`` + See also ++++++++ diff --git a/doc/en/ref_algorithm_Blue.rst b/doc/en/ref_algorithm_Blue.rst index 27f2088..25275a4 100644 --- a/doc/en/ref_algorithm_Blue.rst +++ b/doc/en/ref_algorithm_Blue.rst @@ -53,6 +53,10 @@ Optional and required commands .. index:: single: ObservationOperator .. index:: single: StoreInternalVariables .. index:: single: StoreSupplementaryCalculations +.. index:: single: Quantiles +.. index:: single: SetSeed +.. index:: single: NumberOfSamplesForQuantiles +.. index:: single: SimulationForQuantiles The general required commands, available in the editing user interface, are the following: @@ -112,10 +116,49 @@ The options of the algorithm are the following: calculations or memory consumptions. The default is a void list, none of these variables being calculated and stored by default. The possible names are in the following list: ["APosterioriCovariance", "BMA", "OMA", "OMB", - "Innovation", "SigmaBck2", "SigmaObs2", "MahalanobisConsistency"]. + "Innovation", "SigmaBck2", "SigmaObs2", "MahalanobisConsistency", + "SimulationQuantiles"]. Example : ``{"StoreSupplementaryCalculations":["BMA","Innovation"]}`` + Quantiles + This list indicates the values of quantile, between 0 and 1, to be estimated + by simulation around the optimal state. The sampling uses a multivariate + gaussian random sampling, directed by the *a posteriori* covariance matrix. + This option is useful only if the supplementary calculation + "SimulationQuantiles" has been chosen. The default is a void list. + + Example : ``{"Quantiles":[0.1,0.9]}`` + + SetSeed + This key allow to give an integer in order to fix the seed of the random + generator used to generate the ensemble. A convenient value is for example + 1000. By default, the seed is left uninitialized, and so use the default + initialization from the computer. + + Example : ``{"SetSeed":1000}`` + + NumberOfSamplesForQuantiles + This key indicates the number of simulation to be done in order to estimate + the quantiles. This option is useful only if the supplementary calculation + "SimulationQuantiles" has been chosen. The default is 100, which is often + sufficient for correct estimation of common quantiles at 5%, 10%, 90% or + 95%. + + Example : ``{"NumberOfSamplesForQuantiles":100}`` + + SimulationForQuantiles + This key indicates the type of simulation, linear (with the tangent + observation operator applied to perturbation increments around the optimal + state) or non-linear (with standard observation operator applied to + perturbated states), one want to do for each perturbation. It changes mainly + the time of each elementary calculation, usually longer in non-linear than + in linear. This option is useful only if the supplementary calculation + "SimulationQuantiles" has been chosen. The default value is "Linear", and + the possible choices are "Linear" and "NonLinear". + + Example : ``{"SimulationForQuantiles":"Linear"}`` + See also ++++++++ diff --git a/doc/en/ref_algorithm_ExtendedBlue.rst b/doc/en/ref_algorithm_ExtendedBlue.rst index 2337cdd..5c3c3c4 100644 --- a/doc/en/ref_algorithm_ExtendedBlue.rst +++ b/doc/en/ref_algorithm_ExtendedBlue.rst @@ -51,6 +51,10 @@ Optional and required commands .. index:: single: ObservationOperator .. index:: single: StoreInternalVariables .. index:: single: StoreSupplementaryCalculations +.. index:: single: Quantiles +.. index:: single: SetSeed +.. index:: single: NumberOfSamplesForQuantiles +.. index:: single: SimulationForQuantiles The general required commands, available in the editing user interface, are the following: @@ -110,10 +114,49 @@ The options of the algorithm are the following: calculations or memory consumptions. The default is a void list, none of these variables being calculated and stored by default. The possible names are in the following list: ["APosterioriCovariance", "BMA", "OMA", "OMB", - "Innovation", "SigmaBck2", "SigmaObs2", "MahalanobisConsistency"]. + "Innovation", "SigmaBck2", "SigmaObs2", "MahalanobisConsistency", + "SimulationQuantiles"]. Example : ``{"StoreSupplementaryCalculations":["BMA","Innovation"]}`` + Quantiles + This list indicates the values of quantile, between 0 and 1, to be estimated + by simulation around the optimal state. The sampling uses a multivariate + gaussian random sampling, directed by the *a posteriori* covariance matrix. + This option is useful only if the supplementary calculation + "SimulationQuantiles" has been chosen. The default is a void list. + + Example : ``{"Quantiles":[0.1,0.9]}`` + + SetSeed + This key allow to give an integer in order to fix the seed of the random + generator used to generate the ensemble. A convenient value is for example + 1000. By default, the seed is left uninitialized, and so use the default + initialization from the computer. + + Example : ``{"SetSeed":1000}`` + + NumberOfSamplesForQuantiles + This key indicates the number of simulation to be done in order to estimate + the quantiles. This option is useful only if the supplementary calculation + "SimulationQuantiles" has been chosen. The default is 100, which is often + sufficient for correct estimation of common quantiles at 5%, 10%, 90% or + 95%. + + Example : ``{"NumberOfSamplesForQuantiles":100}`` + + SimulationForQuantiles + This key indicates the type of simulation, linear (with the tangent + observation operator applied to perturbation increments around the optimal + state) or non-linear (with standard observation operator applied to + perturbated states), one want to do for each perturbation. It changes mainly + the time of each elementary calculation, usually longer in non-linear than + in linear. This option is useful only if the supplementary calculation + "SimulationQuantiles" has been chosen. The default value is "Linear", and + the possible choices are "Linear" and "NonLinear". + + Example : ``{"SimulationForQuantiles":"Linear"}`` + See also ++++++++ diff --git a/doc/fr/ref_algorithm_3DVAR.rst b/doc/fr/ref_algorithm_3DVAR.rst index b1d5da6..66e2861 100644 --- a/doc/fr/ref_algorithm_3DVAR.rst +++ b/doc/fr/ref_algorithm_3DVAR.rst @@ -55,6 +55,10 @@ Commandes requises et optionnelles .. index:: single: GradientNormTolerance .. index:: single: StoreInternalVariables .. index:: single: StoreSupplementaryCalculations +.. index:: single: Quantiles +.. index:: single: SetSeed +.. index:: single: NumberOfSamplesForQuantiles +.. index:: single: SimulationForQuantiles Les commandes requises générales, disponibles dans l'interface en édition, sont les suivantes: @@ -173,10 +177,49 @@ Les options de l'algorithme sont les suivantes: calculs ou du stockage coûteux. La valeur par défaut est une liste vide, aucune de ces variables n'étant calculée et stockée par défaut. Les noms possibles sont dans la liste suivante : ["APosterioriCovariance", "BMA", - "OMA", "OMB", "Innovation", "SigmaObs2", "MahalanobisConsistency"]. + "OMA", "OMB", "Innovation", "SigmaObs2", "MahalanobisConsistency", + "SimulationQuantiles"]. Exemple : ``{"StoreSupplementaryCalculations":["BMA","Innovation"]}`` + Quantiles + Cette liste indique les valeurs de quantile, entre 0 et 1, à estimer par + simulation autour de l'état optimal. L'échantillonnage utilise des tirages + aléatoires gaussiens multivariés, dirigés par la matrice de covariance a + posteriori. Cette option n'est utile que si le calcul supplémentaire + "SimulationQuantiles" a été choisi. La valeur par défaut est une liste vide. + + Exemple : ``{"Quantiles":[0.1,0.9]}`` + + SetSeed + Cette clé permet de donner un nombre entier pour fixer la graine du + générateur aléatoire utilisé pour générer l'ensemble. Un valeur pratique est + par exemple 1000. Par défaut, la graine est laissée non initialisée, et elle + utilise ainsi l'initialisation par défaut de l'ordinateur. + + Exemple : ``{"SetSeed":1000}`` + + NumberOfSamplesForQuantiles + Cette clé indique le nombre de simulations effectuées pour estimer les + quantiles. Cette option n'est utile que si le calcul supplémentaire + "SimulationQuantiles" a été choisi. Le défaut est 100, ce qui suffit souvent + pour une estimation correcte de quantiles courants à 5%, 10%, 90% ou 95%. + + Exemple : ``{"NumberOfSamplesForQuantiles":100}`` + + SimulationForQuantiles + Cette clé indique le type de simulation, linéaire (avec l'opérateur + d'observation tangent appliqué sur des incréments de perturbations autour de + l'état optimal) ou non-linéaire (avec l'opérateur d'observation standard + appliqué aux états perturbés), que l'on veut faire pour chaque perturbation. + Cela change essentiellement le temps de chaque simulation élémentaire, + usuellement plus long en non-linéaire qu'en linéaire. Cette option n'est + utile que si le calcul supplémentaire "SimulationQuantiles" a été choisi. La + valeur par défaut est "Linear", et les choix possibles sont "Linear" et + "NonLinear". + + Exemple : ``{"SimulationForQuantiles":"Linear"}`` + Voir aussi ++++++++++ diff --git a/doc/fr/ref_algorithm_Blue.rst b/doc/fr/ref_algorithm_Blue.rst index 37e4ee7..2729882 100644 --- a/doc/fr/ref_algorithm_Blue.rst +++ b/doc/fr/ref_algorithm_Blue.rst @@ -37,10 +37,10 @@ d'Aitken. Cet algorithme est toujours le plus rapide de l'ensemble des algorithmes d'assimilation d'ADAO. Il est théoriquement réservé aux cas d'opérateurs d'observation linéaires, même s'il fonctionne parfois dans les cas "faiblement" -non-linéaire. On peut vérifier la linéarité de l'opérateur d'observation à +non-linéaires. On peut vérifier la linéarité de l'opérateur d'observation à l'aide de l':ref:`section_ref_algorithm_LinearityTest`. -En cas de non-linéarité, même peu marquée, on lui préfèrera aisément +En cas de non-linéarité, même peu marquée, on lui préférera aisément l':ref:`section_ref_algorithm_ExtendedBlue` ou l':ref:`section_ref_algorithm_3DVAR`. @@ -54,6 +54,10 @@ Commandes requises et optionnelles .. index:: single: ObservationOperator .. index:: single: StoreInternalVariables .. index:: single: StoreSupplementaryCalculations +.. index:: single: Quantiles +.. index:: single: SetSeed +.. index:: single: NumberOfSamplesForQuantiles +.. index:: single: SimulationForQuantiles Les commandes requises générales, disponibles dans l'interface en édition, sont les suivantes: @@ -116,10 +120,48 @@ Les options de l'algorithme sont les suivantes: aucune de ces variables n'étant calculée et stockée par défaut. Les noms possibles sont dans la liste suivante : ["APosterioriCovariance", "BMA", "OMA", "OMB", "Innovation", "SigmaBck2", "SigmaObs2", - "MahalanobisConsistency"]. + "MahalanobisConsistency", "SimulationQuantiles"]. Exemple : ``{"StoreSupplementaryCalculations":["BMA","Innovation"]}`` + Quantiles + Cette liste indique les valeurs de quantile, entre 0 et 1, à estimer par + simulation autour de l'état optimal. L'échantillonnage utilise des tirages + aléatoires gaussiens multivariés, dirigés par la matrice de covariance a + posteriori. Cette option n'est utile que si le calcul supplémentaire + "SimulationQuantiles" a été choisi. La valeur par défaut est une liste vide. + + Exemple : ``{"Quantiles":[0.1,0.9]}`` + + SetSeed + Cette clé permet de donner un nombre entier pour fixer la graine du + générateur aléatoire utilisé pour générer l'ensemble. Un valeur pratique est + par exemple 1000. Par défaut, la graine est laissée non initialisée, et elle + utilise ainsi l'initialisation par défaut de l'ordinateur. + + Exemple : ``{"SetSeed":1000}`` + + NumberOfSamplesForQuantiles + Cette clé indique le nombre de simulations effectuées pour estimer les + quantiles. Cette option n'est utile que si le calcul supplémentaire + "SimulationQuantiles" a été choisi. Le défaut est 100, ce qui suffit souvent + pour une estimation correcte de quantiles courants à 5%, 10%, 90% ou 95%. + + Exemple : ``{"NumberOfSamplesForQuantiles":100}`` + + SimulationForQuantiles + Cette clé indique le type de simulation, linéaire (avec l'opérateur + d'observation tangent appliqué sur des incréments de perturbations autour de + l'état optimal) ou non-linéaire (avec l'opérateur d'observation standard + appliqué aux états perturbés), que l'on veut faire pour chaque perturbation. + Cela change essentiellement le temps de chaque simulation élémentaire, + usuellement plus long en non-linéaire qu'en linéaire. Cette option n'est + utile que si le calcul supplémentaire "SimulationQuantiles" a été choisi. La + valeur par défaut est "Linear", et les choix possibles sont "Linear" et + "NonLinear". + + Exemple : ``{"SimulationForQuantiles":"Linear"}`` + Voir aussi ++++++++++ diff --git a/doc/fr/ref_algorithm_ExtendedBlue.rst b/doc/fr/ref_algorithm_ExtendedBlue.rst index 7d7dc50..65d730e 100644 --- a/doc/fr/ref_algorithm_ExtendedBlue.rst +++ b/doc/fr/ref_algorithm_ExtendedBlue.rst @@ -51,6 +51,10 @@ Commandes requises et optionnelles .. index:: single: ObservationOperator .. index:: single: StoreInternalVariables .. index:: single: StoreSupplementaryCalculations +.. index:: single: Quantiles +.. index:: single: SetSeed +.. index:: single: NumberOfSamplesForQuantiles +.. index:: single: SimulationForQuantiles Les commandes requises générales, disponibles dans l'interface en édition, sont les suivantes: @@ -113,10 +117,48 @@ Les options de l'algorithme sont les suivantes: aucune de ces variables n'étant calculée et stockée par défaut. Les noms possibles sont dans la liste suivante : ["APosterioriCovariance", "BMA", "OMA", "OMB", "Innovation", "SigmaBck2", "SigmaObs2", - "MahalanobisConsistency"]. + "MahalanobisConsistency", "SimulationQuantiles"]. Exemple : ``{"StoreSupplementaryCalculations":["BMA","Innovation"]}`` + Quantiles + Cette liste indique les valeurs de quantile, entre 0 et 1, à estimer par + simulation autour de l'état optimal. L'échantillonnage utilise des tirages + aléatoires gaussiens multivariés, dirigés par la matrice de covariance a + posteriori. Cette option n'est utile que si le calcul supplémentaire + "SimulationQuantiles" a été choisi. La valeur par défaut est une liste vide. + + Exemple : ``{"Quantiles":[0.1,0.9]}`` + + SetSeed + Cette clé permet de donner un nombre entier pour fixer la graine du + générateur aléatoire utilisé pour générer l'ensemble. Un valeur pratique est + par exemple 1000. Par défaut, la graine est laissée non initialisée, et elle + utilise ainsi l'initialisation par défaut de l'ordinateur. + + Exemple : ``{"SetSeed":1000}`` + + NumberOfSamplesForQuantiles + Cette clé indique le nombre de simulations effectuées pour estimer les + quantiles. Cette option n'est utile que si le calcul supplémentaire + "SimulationQuantiles" a été choisi. Le défaut est 100, ce qui suffit souvent + pour une estimation correcte de quantiles courants à 5%, 10%, 90% ou 95%. + + Exemple : ``{"NumberOfSamplesForQuantiles":100}`` + + SimulationForQuantiles + Cette clé indique le type de simulation, linéaire (avec l'opérateur + d'observation tangent appliqué sur des incréments de perturbations autour de + l'état optimal) ou non-linéaire (avec l'opérateur d'observation standard + appliqué aux états perturbés), que l'on veut faire pour chaque perturbation. + Cela change essentiellement le temps de chaque simulation élémentaire, + usuellement plus long en non-linéaire qu'en linéaire. Cette option n'est + utile que si le calcul supplémentaire "SimulationQuantiles" a été choisi. La + valeur par défaut est "Linear", et les choix possibles sont "Linear" et + "NonLinear". + + Exemple : ``{"SimulationForQuantiles":"Linear"}`` + Voir aussi ++++++++++ diff --git a/src/daComposant/daAlgorithms/3DVAR.py b/src/daComposant/daAlgorithms/3DVAR.py index 3be52c8..7ddf398 100644 --- a/src/daComposant/daAlgorithms/3DVAR.py +++ b/src/daComposant/daAlgorithms/3DVAR.py @@ -79,6 +79,8 @@ class ElementaryAlgorithm(BasicObjects.Algorithm): default = [], typecast = tuple, message = "Liste des valeurs de quantiles", + minval = 0., + maxval = 1., ) self.defineRequiredParameter( name = "SetSeed", diff --git a/src/daComposant/daAlgorithms/Blue.py b/src/daComposant/daAlgorithms/Blue.py index 339d661..019305f 100644 --- a/src/daComposant/daAlgorithms/Blue.py +++ b/src/daComposant/daAlgorithms/Blue.py @@ -46,6 +46,8 @@ class ElementaryAlgorithm(BasicObjects.Algorithm): default = [], typecast = tuple, message = "Liste des valeurs de quantiles", + minval = 0., + maxval = 1., ) self.defineRequiredParameter( name = "SetSeed", diff --git a/src/daComposant/daAlgorithms/ExtendedBlue.py b/src/daComposant/daAlgorithms/ExtendedBlue.py index 7ccf7c4..0f755d4 100644 --- a/src/daComposant/daAlgorithms/ExtendedBlue.py +++ b/src/daComposant/daAlgorithms/ExtendedBlue.py @@ -46,6 +46,8 @@ class ElementaryAlgorithm(BasicObjects.Algorithm): default = [], typecast = tuple, message = "Liste des valeurs de quantiles", + minval = 0., + maxval = 1., ) self.defineRequiredParameter( name = "SetSeed", diff --git a/src/daComposant/daCore/BasicObjects.py b/src/daComposant/daCore/BasicObjects.py index b93a2d5..e425312 100644 --- a/src/daComposant/daCore/BasicObjects.py +++ b/src/daComposant/daCore/BasicObjects.py @@ -394,9 +394,9 @@ class Algorithm: if typecast is None: __val = value else: __val = typecast( value ) # - if minval is not None and __val < minval: + if minval is not None and (numpy.array(__val) < minval).any(): raise ValueError("The parameter named \"%s\" of value \"%s\" can not be less than %s."%(name, __val, minval)) - if maxval is not None and __val > maxval: + if maxval is not None and (numpy.array(__val) > maxval).any(): raise ValueError("The parameter named \"%s\" of value \"%s\" can not be greater than %s."%(name, __val, maxval)) if listval is not None: if typecast is list or typecast is tuple or type(__val) is list or type(__val) is tuple: -- 2.39.2