WSL/SLF GitLab Repository

meteoio_filters.xml 60.8 KB
Newer Older
1
2
3
4
5
6
<!--
/*****************************************************************************/
/*  Copyright 2019 WSL Institute for Snow and Avalanche Research  SLF-DAVOS  */
/*****************************************************************************/
/* This file is part of INIshell.
INIshell is free software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
9
10
11
12
13
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

INIshell is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
GNU General Public License for more details.
15

16
17
You should have received a copy of the GNU General Public License
along with INIshell.  If not, see <http://www.gnu.org/licenses/>.
18
19
20
21
22
23
24
*/
-->

<!--
INIshell include file for MeteoIO filters
-->

25
<inishell_include>
26

27
28
	<!-- TIME FILTERS -->
	<parametergroup name="TIMEFILTERS">
29
30
31
		<parameter key="ENABLE_TIME_FILTERS" label="ENABLE_TIME_FILTERS" caption="Enable time filters?" type="checkbox" default="TRUE">
			<help>Should the declared time filters be processed? (it is very strongly suggested to keep it set to TRUE for most applications)</help>
		</parameter>
32
33
34
		<parameter key="TIME::FILTER#" label="Add/remove filter for timestamps:" type="alternative" replicate="true">
			<!-- time filters -->
			<reference name="TIMEFILTER_SUPPR"/>
35
			<reference name="TIMEFILTER_SHIFT"/>
36
			<reference name="TIMEFILTER_SORT"/>
37
38
39
			<reference name="TIMEFILTER_TIMELOOP"/>
		</parameter>
	</parametergroup>
40
41
42

	<!-- FILTERS -->
	<parametergroup name="FILTERS">
43
44
45
		<parameter key="ENABLE_METEO_FILTERS" label="ENABLE_METEO_FILTERS" caption="Enable meteo parameters filters?" type="checkbox" default="TRUE">
			<help>Should the declared meteorological filters be processed? (it is very strongly suggested to keep it set to TRUE for most applications)</help>
		</parameter>
46
		<parameter label="Add/Remove Filter" type="selector">
47
			<parameter key="%::FILTER#" type="alternative" replicate="true" template="true" pre-generate="false" bold="true">
48
49
				<!-- filters -->
				<reference name="FILTER_NONE"/>
50
51
				<reference name="FILTER_MIN"/>
				<reference name="FILTER_MAX"/>
52
53
				<reference name="FILTER_MIN_MAX"/>
				<reference name="FILTER_MIN_MAX_CONDITIONAL"/>
54
				<reference name="FILTER_RATE"/>
55
56
57
58
				<reference name="FILTER_UNHEATED_RAINGAUGE"/>
				<reference name="FILTER_DETECT_GRASS"/>
				<reference name="FILTER_POTENTIALSW"/>
				<reference name="FILTER_MATHS"/>
59
60
61
				<reference name="FILTER_STD_DEV"/>
				<reference name="FILTER_MAD"/>
				<reference name="FILTER_TUKEY"/>
62
63
64
65
66
67
68
69
				<reference name="FILTER_DESPIKING"/>
				<reference name="FILTER_NO_CHANGE"/>
				<reference name="FILTER_TIME_CONSISTENCY"/>
				<reference name="FILTER_KALMAN"/>
				<reference name="FILTER_PARTICLE"/>
				<!-- general data transformations -->
				<reference name="FILTER_SUPPR"/>
				<reference name="PROC_ADD"/>
70
				<reference name="PROC_MULT"/>
71
72
				<reference name="PROC_QUANTILEMAPPING"/>
				<!-- specific data transformations -->
73
74
				<reference name="PROC_AGGREGATE"/>
				<reference name="PROC_DEACCUMULATE"/>
75
76
77
78
79
80
81
82
83
84
				<reference name="PROC_EXP_SMOOTHING"/>
				<reference name="PROC_WMA_SMOOTHING"/>
				<reference name="PROC_IIR"/>
				<reference name="PROC_UNDERCATCH_WMO"/>
				<reference name="PROC_UNDERCATCH_FORLAND"/>
				<reference name="PROC_UNDERCATCH_HAMON"/>
				<reference name="PROC_UNVENTILATED_T"/>
				<reference name="PROC_PSUM_DISTRIBUTE"/>
				<reference name="PROC_SHADE"/>
				<reference name="PROC_RHWATERTOICE"/>
85
				<reference name="PROC_TRANSFORMWINDVECTOR"/>
86
87
88
89
			</parameter>
			<reference name="METEOPARAMETERS"/>
		</parameter>
	</parametergroup>
90
91
92

	<!-- FILTER NONE -->
	<parametergroup name="FILTER_NONE">
93
		<option caption="None" value="NONE" color="#3282b8">
94
			<reference name="ID_RESTRICT"/>
95
			<reference name="TIME_RESTRICT"/>
96
97
98
99
			<help>This does nothing (this is useful in an IMPORT to overwrite previous filters)</help>
		</option>
	</parametergroup>

100
101
	<!-- FILTER MIN -->
	<parametergroup name="FILTER_MIN">
102
		<option caption="Min Range Filter" value="MIN" color="#3282b8">
103
			<parameter key="%::ARG#" label="" underline="true" type="horizontal">
104
				<o><parameter key="@::SOFT" caption="Soft" type="checkbox"/></o>
Mathias Bavay's avatar
Mathias Bavay committed
105
106
				<o><parameter key="@::MIN" label="Min:" type="number" format="decimal" precision="6"/></o>
				<o><parameter key="@::MIN_RESET" label="Adjust to:" type="number" format="decimal" precision="6"/></o>
107
108
				<help>If "soft", all rejected data will be replaced by either the minimum permissible value or a user-defined &lt;code&gt;MIN_RESET&lt;/code&gt; value (if given in &lt;code&gt;Adjust to&lt;/code&gt;).</help>
			</parameter>
109
			<reference name="ID_RESTRICT"/>
110
			<reference name="TIME_RESTRICT"/>
111
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterMin.html&quot;&gt;Min range filter&lt;/a&gt;. Reject all values smaller than the min.</help>
112
113
		</option>
	</parametergroup>
114

115
116
	<!-- FILTER MAX -->
	<parametergroup name="FILTER_MAX">
117
		<option caption="Max Range Filter" value="MAX" color="#3282b8">
118
			<parameter key="%::ARG#" label="" underline="true" type="horizontal">
119
				<o><parameter key="@::SOFT" caption="Soft" type="checkbox"/></o>
Mathias Bavay's avatar
Mathias Bavay committed
120
121
				<o><parameter key="@::MAX" label="Max:" type="number" format="decimal" precision="6"/></o>
				<o><parameter key="@::MAX_RESET" label="Adjust to:" type="number" format="decimal" precision="6"/></o>
122
123
				<help>If "soft", all rejected data will be replaced by either the maximum permissible or a user-defined &lt;code&gt;MAX_RESET&lt;/code&gt; value (if given in &lt;code&gt;Adjust to&lt;/code&gt;).</help>
			</parameter>
124
			<reference name="ID_RESTRICT"/>
125
			<reference name="TIME_RESTRICT"/>
126
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterMax.html&quot;&gt;Max range filter&lt;/a&gt;. Reject all values greater than the max.</help>
127
128
		</option>
	</parametergroup>
129

130
131
	<!-- FILTER MIN_MAX -->
	<parametergroup name="FILTER_MIN_MAX">
132
		<option caption="Minimum and Maximum Filter" value="MIN_MAX" color="#3282b8">
133
			<parameter key="%::ARG#" label="" underline="true" type="horizontal">
134
				<o><parameter key="@::SOFT" caption="Soft" type="checkbox"/></o>
Mathias Bavay's avatar
Mathias Bavay committed
135
136
				<o><parameter key="@::MIN" label="Min:" type="number" format="decimal" precision="6"/></o>
				<o><parameter key="@::MAX" label="Max:" type="number" format="decimal" precision="6"/></o>
137
138
139
140
141
				<help>The keyword "soft" maybe added, in such a case all data greater than the max would be assigned
					the maximum permissible value and all data smaller than the min would be assigned the minimum
					permissible value or an optional extra set of two user provided values</help>
			</parameter>
			<parameter key="%::ARG#" label="" type="horizontal">
Mathias Bavay's avatar
Mathias Bavay committed
142
143
				<o><parameter key="@::MIN_RESET" label="Min adjust to:" type="number" format="decimal" precision="6"/></o>
				<o><parameter key="@::MAX_RESET" label="Max adjust to:" type="number" format="decimal" precision="6"/></o>
144
145
				<help>Leave these fields blank to default to &lt;code&gt;MIN&lt;/code&gt; and &lt;code&gt;MAX&lt;/code&gt;, respectively</help>
			</parameter>
146
			<reference name="ID_RESTRICT"/>
147
			<reference name="TIME_RESTRICT"/>
148
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterMinMax.html&quot;&gt;Minimum and maximum filter&lt;/a&gt;. Reject all values greater than the max or smaller than the min.</help>
149
150
		</option>
	</parametergroup>
151
152
153

	<!-- FILTER MIN_MAX_CONDITIONAL -->
	<parametergroup name="FILTER_MIN_MAX_CONDITIONAL">
154
		<option caption="Conditional Minimum and Maximum Filter" value="MIN_MAX_CONDITIONAL" color="#3282b8">
155
			<parameter key="%::ARG#" label="" underline="true" type="horizontal">
156
157
				<o><parameter key="@::PARAMETER" label="Parameter:" type="text" size="small"/></o>
				<option>
158
					<parameter key="@::OPERATOR" label="Operator:" type="alternative" editable="false" size="small" optional="false">
159
						<reference name="EQUALITY_OPERATORS"/>
160
161
					</parameter>
				</option>
Mathias Bavay's avatar
Mathias Bavay committed
162
				<o><parameter key="@::COMPARE" label="Compare:" type="number" format="decimal" precision="6"/></o>
163
164
165
166
167
				<help>The keyword "soft" maybe added, in such a case all data greater than the max would be assigned
					the maximum permissible value and all data smaller than the min would be assigned the minimum
					permissible value or an optional extra set of two user provided values</help>
			</parameter>
			<parameter key="%::ARG#" label="" type="horizontal">
Mathias Bavay's avatar
Mathias Bavay committed
168
169
				<o><parameter key="@::MIN" label="Min:" type="number" format="decimal" precision="6"/></o>
				<o><parameter key="@::MAX" label="Max:" type="number" format="decimal" precision="6"/></o>
170
171
			</parameter>
			<parameter key="%::ARG#" label="" type="horizontal">
Mathias Bavay's avatar
Mathias Bavay committed
172
173
				<o><parameter key="@::MIN_RESET" label="Min. reset:" type="number" format="decimal" precision="6"/></o>
				<o><parameter key="@::MAX_RESET" label="Max. reset:" type="number" format="decimal" precision="6"/></o>
174
175
176
				<help>Leave these fields blank to default to &lt;code&gt;MIN&lt;/code&gt; and &lt;code&gt;MAX&lt;/code&gt;, respectively</help>
			</parameter>
			<parameter key="%::ARG#" label="" type="horizontal">
Mathias Bavay's avatar
Mathias Bavay committed
177
				<o><parameter key="@::RESET" label="Reset value:" type="number" format="decimal" precision="6"/></o>
178
				<o><parameter key="@::SOFT" caption="Soft" type="checkbox"/></o>
179
				<o><parameter key="@::IGNORE_MISSING" caption="Ignore missing" type="checkbox"/></o>
180
181
				<help>SOFT: If true, values are not filtered to nodata but to the filter limits or the reset values. RESET: Values filtered if neither MIN nor MAX are supplied are not filtered to nodata, but to this. IGNORE_MISSING: Skip over access errors if PARAMETER is an extra parameter and not present</help>
			</parameter>
182
			<reference name="ID_RESTRICT"/>
183
			<reference name="TIME_RESTRICT"/>
184
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterMinMaxConditional.html&quot;&gt;Conditional min/max filer&lt;/a&gt; that only takes action if a different parameter holds true to a condition.</help>
185
186
187
		</option>
	</parametergroup>

188
189
	<!-- FILTER RATE -->
	<parametergroup name="FILTER_RATE">
190
		<option caption="Rate Filter" value="RATE" color="#3282b8">
191
			<parameter key="%::ARG#" label="" type="horizontal" underline="true">
Mathias Bavay's avatar
Mathias Bavay committed
192
193
				<o><parameter key="%::ARG#::MAX" label="Max:" type="number" format="decimal" precision="6"/></o>
				<o><parameter key="%::ARG#::MIN" label="Min:" type="number" format="decimal" precision="6"/></o>
194
			</parameter>
195
			<reference name="ID_RESTRICT"/>
196
			<reference name="TIME_RESTRICT"/>
197
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterRate.html&quot;&gt;Rate of change filter&lt;/a&gt;. Calculate the change rate (ie: slope) between two points, if it is above a user given value (or optionally below some value), reject the point.</help>
198
199
		</option>
	</parametergroup>
200

201
202
	<!-- FILTER UNHEATED_RAINGAUGE -->
	<parametergroup name="FILTER_UNHEATED_RAINGAUGE">
203
		<option caption="Unheated Rain Gauge Filter" value="UNHEATED_RAINGAUGE" color="#3282b8">
204
			<parameter key="%::ARG#" label="" underline="true" type="horizontal">
205
				<o><parameter key="@::SOFT" caption="Soft" type="checkbox"/></o>
Mathias Bavay's avatar
Mathias Bavay committed
206
207
				<o><parameter key="@::THRESH_RH" label="RH threshold:" type="number" format="decimal" default="0.5" min="0" max="1" precision="2"/></o>
				<o><parameter key="@::THRESH_DT" label="Delta_T threshold:" type="number" format="decimal" default="3.0" precision="1" unit="K"/></o>
208
				<help>Non-zero measurements are accepted only if they take place when the relative humidity is high enough and TA and TSS are close enough, otherwise they get reset to 0. If none of these conditions could be tested (for lack of data), then the precipitation is reset to nodata (or left unchanged if "soft" has been selected).</help>
209
			</parameter>
210
			<reference name="ID_RESTRICT"/>
211
			<reference name="TIME_RESTRICT"/>
212
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterUnheatedPSUM.html&quot;&gt;Filters out snow melting in an unheated rain gauge&lt;/a&gt;. This filter can ONLY be applied to precipitation.</help>
213
214
		</option>
	</parametergroup>
215
216
217

	<!-- FILTER DETECT_GRASS -->
	<parametergroup name="FILTER_DETECT_GRASS">
218
		<option caption="Detect grass under the sensor" value="DETECT_GRASS" color="#3282b8">
219
			<parameter key="%::ARG#" label="" underline="true" type="horizontal">
Mathias Bavay's avatar
Mathias Bavay committed
220
				<o><parameter key="@::TSS_OFFSET" label="TSS offset:" type="number" format="decimal" precision="2" unit="K"/></o>
221
				<help>This removes the data points that don't match snow on the ground criterias (see Tilg, A.-M., Marty C. and G. Klein, &lt;i&gt;"An automatic algorithm for validating snow depth measurements of IMIS stations"&lt;/i&gt;, Swiss Geoscience Meeting, 2015). It uses HS, TSS, TSG and RSWR to infere if there is snow or grass on the ground. TSS_meas + TSS_offset is compared to given thresholds to determine if snow can exist on the ground, so you can give a negative offset to more easily keep snow on the ground)</help>
222
			</parameter>
223
			<reference name="ID_RESTRICT"/>
224
			<reference name="TIME_RESTRICT"/>
225
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterDeGrass.html&quot;&gt;Grass signal removal in snow height&lt;/a&gt;, because the snow height sensor might not be able to distinguish between snow or vegetation/grass on the ground.</help>
226
227
		</option>
	</parametergroup>
228
229
230

	<!-- FILTER POTENTIALSW -->
	<parametergroup name="FILTER_POTENTIALSW">
231
		<option caption="Potential Short Wave" value="POTENTIALSW" color="#3282b8">
Mathias Bavay's avatar
Mathias Bavay committed
232
233
			<parameter key="%::ARG#::MIN_COEFF" label="MIN_COEFF" type="number" format="decimal" default="0.03" min="0" precision="2"/>
			<parameter key="%::ARG#::MAX_COEFF" label="MAX_COEFF" type="number" format="decimal" default="1.1" min="0" precision="2"/>
234
			<parameter key="%::ARG#::SOFT" caption="Soft" type="checkbox">
235
				<help>If true, filtered values are set to the filter limits (coefficient * calculation) instead of nodata</help>
236
			</parameter>
237
			<parameter key="%::ARG#::MODE" label="Mode:" type="alternative">
238
				<option value="GROUND">
239
					<help>set to GROUND to use ground level global radiation when evaluating the minimum plausible radiation</help>
240
				</option>
241
			</parameter>
242
			<parameter key="%::ARG#::MEAN_PERIOD" label="MEAN_PERIOD" type="number" format="integer+" unit="s">
243
				<help>average the radiation over this given period (in seconds). If your data logger aggregates measurements this can lead to troubles at the steeper parts of the potential radiation curve. For 10 minutes, the difference can be a couple of dozens W/m^2 which would be averaged and compared to the theoretical value at the end of the aggregation period. To remedy this, you can set MEAN_PERIOD.</help>
244
			</parameter>
245
			<reference name="ID_RESTRICT"/>
246
			<reference name="TIME_RESTRICT"/>
247
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterPotentialSW.html&quot;&gt;Short wave potential radiation filter&lt;/a&gt;. This checks that for each point, the measured radiation is greater than the horizontal top of atmosphere potential radiation multiplied by the min_coeff coefficient and less than the global horizontal potential radiation multiplied by the max_coeff coefficient. See Moradi, I., &lt;i&gt;"Quality control of global solar radiation using sunshine duration hours"&lt;/i&gt;, 2009, Energy 34, no. 1, 1-6. </help>
248
249
		</option>
	</parametergroup>
250
251
252

	<!-- FILTER MATHS -->
	<parametergroup name="FILTER_MATHS">
253
		<option caption="Arithmetic Filter" value="MATHS" color="#3282b8">
254
			<parameter key="%::ARG#::FORMULA" label="FORMULA" type="text" lenient="true" size="large" optional="false">
255
256
				<substitution find="meteo\(\w*\)" replace="1"/>
				<substitution find="nodata|year|month|day|hour|minute|julian|altitude|azimuth|slope|latitude|longitude|easting|northing" replace="1"/>
257
				<help>Arithmetic expression the meteo parameter the filter runs on will be evaluated to. Example: &lt;code&gt;meteo(TA) - 273.15&lt;/code&gt;</help>
258
259
			</parameter>
			<parameter key="%::ARG#::FORMULA_ELSE" label="FORMULA_ELSE" type="text" lenient="true" size="large">
260
261
262
263
				<help>Expression the parameter the filter runs on is evaluated to if the conditions below are &lt;i&gt;not&lt;/i&gt; met.</help>
			</parameter>
			<parameter type="helptext" wrap="true">
				<help>Below you can enter conditions that must be met in order for the filter to take effect. If a condition is entered (this is optional), then the expression from above will only be evaluated if it is met. Otherwise, the filter does nothing.</help>
264
265
			</parameter>
			<parameter key="%::ARG#::CONNECTIVE" label="CONNECTIVE" type="alternative" optional="false" default="AND">
266
267
268
				<o value="AND"><h>All of the following expressions must evaluate to true.</h></o>
				<o value="OR"><h>At least one of the following expressions must evaluate to true.</h></o>
				<help>Logical connective for the conditions below. Either all (&lt;code&gt;AND&lt;/code&gt;), or a single one (&lt;code&gt;OR&lt;/code&gt;) of the following expressions must evaluate to true.</help>
269
270
			</parameter>
			<parameter label="Add Condition:" type="horizontal" replicate="true">
271
272
273
				<o><parameter key="%::ARG#::EXPRESSION#" label="Expression:" type="text" optional="false"/></o>
				<o><parameter key="%::ARG#::OPERATOR#" label="must be" type="alternative" optional="false"><reference name="EQUALITY_OPERATORS"/></parameter></o>
				<o><parameter key="%::ARG#::COMPARE#" label="compared to:" type="text" optional="false"/></o>
274
275
276
277
278
				<help>Enter 3 parts of the condition: Expression that will be compared, comparison operator, compare "expression" against &lt;code&gt;COMPARE&lt;/code&gt;.</help>
			</parameter>
			<parameter key="%::ARG#::ASSIGN" label="ASSIGN" type="text" size="small">
				<help>Change parameter to store final result in.</help>
			</parameter>
279
			<parameter key="%::ARG#::SKIP_NODATA" label="SKIP_NODATA" caption="Do not calculate with nodata values" type="checkbox" default="FALSE">
280
281
				<help>Any input nodata stays untouched. Checks for nodata in COMPARE will not be called.</help>
			</parameter>
282
			<reference name="ID_RESTRICT"/>
283
			<reference name="TIME_RESTRICT"/>
284
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/doc/html/classmio_1_1FilterMaths.html&quot;&gt;This filter evaluates an arithmetic expression&lt;/a&gt; and filters the meteo parameters to the result. You can use a number of substitutions from your data and station meta data.</help>
285
286
		</option>
	</parametergroup>
287

288
289
	<!-- FILTER STD_DEV -->
	<parametergroup name="FILTER_STD_DEV">
290
		<option caption="Standard deviation filter" value="STD_DEV" color="#136b84">
291
			<reference name="SOFT_CENTER_MIN"/>
292
			<reference name="ID_RESTRICT"/>
293
			<reference name="TIME_RESTRICT"/>
294
295
296
297
298
299
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterStdDev.html&quot;&gt;Standard deviation filter&lt;/a&gt;. Values outside of mean ± 2 std_dev are rejected.</help>
		</option>
	</parametergroup>

	<!-- FILTER MAD -->
	<parametergroup name="FILTER_MAD">
300
		<option caption="Median Absolute Deviation" value="MAD" color="#136b84">
Mathias Bavay's avatar
Mathias Bavay committed
301
			<parameter key="%::ARG#::MIN_SIGMA" label="MIN_SIGMA" type="number" format="decimal" precision="2">
302
303
304
				<help>Prevents sigma_mad to get too small by forcing a minimum value</help>
			</parameter>
			<reference name="SOFT_CENTER_MIN"/>
305
			<reference name="ID_RESTRICT"/>
306
			<reference name="TIME_RESTRICT"/>
307
308
309
310
311
312
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterMAD.html&quot;&gt;Median Absolute Deviation&lt;/a&gt;. Values outside of median ± 3 σ_MAD are rejected.</help>
		</option>
	</parametergroup>

	<!-- FILTER TUKEY -->
	<parametergroup name="FILTER_TUKEY">
313
		<option caption="Tukey 53H Filter" value="TUKEY" color="#136b84">
314
			<reference name="SOFT_CENTER_MIN"/>
315
			<reference name="ID_RESTRICT"/>
316
			<reference name="TIME_RESTRICT"/>
317
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterTukey.html&quot;&gt;Tukey 53H method&lt;/a&gt;: A smooth time sequence is generated from the median, substracted from the original signal and compared with the standard deviation. See "Despiking Acoustic Doppler Velocimeter Data", Derek G. Goring and Vladimir, L. Nikora, Journal of Hydraulic Engineering, 128, 1, 2002. The deviation factor coeffecient is currently hard-coded as k=1.5.</help>
318
319
320
321
322
		</option>
	</parametergroup>

	<!-- FILTER DESPIKING -->
	<parametergroup name="FILTER_DESPIKING">
323
		<option caption="Phase space despiking" value="DESPIKING" color="#136b84">
324
			<parameter key="%::ARG#::METHOD" type="alternative" default="Goring">
325
326
				<option value="GORING"/>
				<option value="MORI"/>
327
328
				<help>either use the Goring or the Mori version of the algorithm</help>
			</parameter>
Mathias Bavay's avatar
Mathias Bavay committed
329
			<parameter key="%::ARG#::SENSITIVITY" label="Sensitivity:" type="number" format="decimal" min="0" default="1.0" precision="2">
330
331
				<help>Scaling factor applied to the universal threshold, a larger value rejects more spikes</help>
			</parameter>
332
			<parameter key="%::ARG#::INTERPOL_DEG" label="Degree of interpolation:" type="number" format="integer+" default="3" notoggle="true">
333
334
				<help>The parameter interpol_deg sets the degree of the fit for the replacement. 1 is linear, 2 is quadratic, ..., 0 means "off" (removed spikes will be nodata and can be resampled later via [Interpolations1D]). This is useful in rare cases where the cubic fit happens to produce an unwanted peak by itself. Default value is 3 (cubic fit) as proposed in the paper by Goring.</help>
			</parameter>
335
			<parameter key="%::ARG#::INTERPOL_PTS" label="Interpolation points:" type="number" format="integer+" default="24" notoggle="true">
336
337
				<help>The number of points used for the fitting (replacement) of the spikes can be set via interpol_pts. Default is 24 (as proposed in the paper by Goring).</help>
			</parameter>
338
			<reference name="ID_RESTRICT"/>
339
			<reference name="TIME_RESTRICT"/>
340
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterDespikingPS.html&quot;&gt;Despiking Filter&lt;/a&gt;. The first and second derivatives are used to plot each point in phase space. The points are enclosed within an ellipsoid and the points lying outside are removed, the gaps being interpolated with a quadratic fit. See &lt;i&gt;"Despiking Acoustic Doppler Velocimeter Data"&lt;/i&gt;, Derek G. Goring and Vladimir L. Nikora, Journal of Hydraulic Engineering, 128, 1, 2002 as well as &lt;i&gt;"Noise of Acoustic Doppler Velocimeter Data in Bubbly Flows"&lt;/i&gt;, Mori, N., Suzuki, T. and Kakuno, S., J. Eng. Mech., 133(1):122-125, 2007</help>
341
342
343
344
345
		</option>
	</parametergroup>

	<!-- FILTER NO_CHANGE -->
	<parametergroup name="FILTER_NO_CHANGE">
346
		<option caption="Remove periods with low variance" value="NO_CHANGE" color="#136b84">
Mathias Bavay's avatar
Mathias Bavay committed
347
			<parameter key="%::ARG#::MAX_VARIANCE" label="MAX_VARIANCE" type="number" format="decimal" precision="2">
348
349
350
				<help>You can set the maximum variance that is allowed with &lt;code&gt;MAX_VARIANCE&lt;/code&gt;. If not set, this value is 0.</help>
			</parameter>
			<reference name="SOFT_CENTER_MIN"/>
351
			<reference name="ID_RESTRICT"/>
352
			<reference name="TIME_RESTRICT"/>
353
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterNoChange.html&quot;&gt;Low variance filter&lt;/a&gt;. This filter removes time periods showing insufficient changes (based on the variance).</help>
354
355
356
357
358
		</option>
	</parametergroup>

	<!-- FILTER TIME_CONSISTENCY -->
	<parametergroup name="FILTER_TIME_CONSISTENCY">
359
		<option caption="Remove points with high variance" value="TIME_CONSISTENCY" color="#136b84">
360
			<reference name="SOFT_CENTER_MIN"/>
361
			<reference name="ID_RESTRICT"/>
362
			<reference name="TIME_RESTRICT"/>
363
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterTimeconsistency.html&quot;&gt;Time consistency&lt;/a&gt;. This  compares the change between two points with 4 times the standard deviation to keep or remove each points. It is based on Zahumensky, Igor, &lt;i&gt;"Guidelines on Quality Control Procedures for Data from Automatic Weather Stations, World Meteorological Organisation"&lt;/i&gt;, 2004.</help>
364
365
366
		</option>
	</parametergroup>

367
368
	<!-- FILTER KALMAN -->
	<parametergroup name="FILTER_KALMAN">
369
		<option caption="Kalman Filter" value="KALMAN" color="#136b84">
370
371
			<parameter key="%::ARG#::STATE_DYNAMICS" label="State dynamics:" type="text" optional="false" size="large">
				<help>State transition matrix. For a constant state for example you can enter the unit matrix as simply &lt;code&gt;1&lt;/code&gt; to put ones on the diagonal, or specify the full matrix via &lt;code&gt;[1, 0, 0][0, 1, 0][0, 0, 1]&lt;/code&gt;.</help>
372
373
374
			</parameter>
			<parameter type="horizontal">
				<option>
375
					<parameter key="%::ARG#::INITIAL_STATE" label="Initial state:" type="number" format="decimal" default="1st"/>
376
377
378
379
380
381
				</option>
				<option>
					<parameter key="%::ARG#::INITIAL_TRUST" label="Initial trust:" type="number" format="decimal"/>
				</option>
				<help>State of the system at T=0; trust in the initial state.</help>
			</parameter>
382
383
384
385
386
387
388
389
			<parameter key="%::ARG#::ADD_OBSERVABLES" label="Add observables:" type="text">
				<help>Space-separated list of observables (meteo parameters) the filter uses in addition to the one it runs on.</help>
			</parameter>
			<parameter key="%::ARG#::OBSERVATION_RELATION" label="Observation relation matrix:" type="text">
				<help>Linear model relating the observations to the states</help>
			</parameter>
			<parameter key="%::ARG#::OBSERVATION_COVARIANCE" label="Observation covariance matrix:" type="text">
				<help>Observation noise covariance matrix (trust in the measurements)</help>
390
			</parameter>
391
392
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterKalman.html&quot;&gt;Kalman filter&lt;/a&gt; (please have a look at the documentation!)</help>
			<frame caption="Expert settings" background_color="#bbbbbb">
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
				<parameter key="%::ARG#::CONTROL_SIGNAL" label="External control signal" type="text" size="large">
					<help>External control signal acting on the states. Enter a scalar (vector is filled with it), a vector (applied to each time step), or a space-separated list of meteo parameters that hold the signal value at each time step.</help>
				</parameter>
				<parameter key="%::ARG#::OUT_ESTIMATED_ERROR" label="Error parameter names:" type="text" size="large">
					<help>Parameter name(s) to output error evolution to</help>
				</parameter>
				<parameter key="%::ARG#::PROCESS_COVARIANCE_PARAMS" label="Process covariance parameter names:" type="text" size="large">
					<help>List of parameter names to read Q from</help>
				</parameter>
				<parameter key="%::ARG#::OBSERVATION_COVARIANCE_PARAMS" label="Observation covariance parameter names:" type="text" size="large">
					<help>List of parameter names to read R from</help>
				</parameter>
				<parameter key="%::ARG#::FILTER_ALL_PARAMETERS" caption="Filter all parameters" type="checkbox">
					<help>Filter only the parameter the filter runs on, or all states?</help>
				</parameter>
				<parameter key="%::ARG#" label="" type="horizontal">
					<o><parameter key="@::OUT_ERROR_AS_STDDEV" caption="Output error as standard deviation" type="checkbox"/></o>
					<o><parameter key="@::VERBOSE" caption="Verbose output" type="checkbox"/></o>
					<help>If &lt;code&gt;OUT_ERROR_AS_STDDEV&lt;/code&gt; is set, take the square root of error parameters. If &lt;code&gt;VERBOSE&lt;/code&gt;, output warnings to the console.</help>
				</parameter>
			</frame>
414
			<reference name="ID_RESTRICT"/>
415
			<reference name="TIME_RESTRICT"/>
416
417
418
		</option>
	</parametergroup>

419
	<!-- FILTER PARTICLE -->
420
	<parametergroup name="FILTER_PARTICLE">
421
		<option caption="Particle Filter" value="PARTICLE" color="#136b84">
422
			<parameter key="%::ARG#" label="" type="horizontal">
423
				<option>
424
					<frame caption="Model functions">
425
426
						<parameter type="grid">
							<option row="1" column="1" colspan="2">
427
								<parameter key="@::MODEL_FUNCTION" label="Model function:" type="text" lenient="true" optional="false">
Michael Reisecker's avatar
Michael Reisecker committed
428
									<substitution find="kk|tt|x_km1" replace="1"/> <!-- substitutions for correct expression styling -->
429
430
									<substitution find="meteo\(\w*\)" replace="1"/>
								</parameter>
431
432
							</option>
							<option row="2" column="1" colspan="2">
Michael Reisecker's avatar
Michael Reisecker committed
433
								<parameter key="@::MODEL_FIT_PARAM" label="Fit curve against parameter" type="alternative" editable="true">
434
435
436
									<reference name="METEOPARAMETERS"/>
								</parameter>
							</option>
437
							<option row="3" column="1" colspan="2">
438
439
440
441
								<parameter key="@::OBS_MODEL_FUNCTION" label="Observation model Func:" type="text" default="xx" lenient="true" optional="false">
									<substitution find="xx|kk|tt|x_km1" replace="1"/>
									<substitution find="meteo\(\w*\)" replace="1"/>
								</parameter>
442
443
444
445
446
							</option>
						</parameter>
					</frame>
				</option>
				<option>
447
					<frame caption="Model function parameters">
448
						<parameter type="grid">
449
							<option row="1" column="1" colspan="2">
450
								<parameter key="@::INITIAL_STATE" label="Initial state:" type="number" size="small"/>
451
452
							</option>
							<option row="2" column="1">
453
								<parameter key="@::ESTIMATION_MEASURE" label="Estimation measure:" type="alternative" optional="false">
454
455
456
457
458
									<option value="MEAN" default="true"/>
									<option value="MAX_WEIGHT"/>
								</parameter>
							</option>
							<option row="3" column="1">
459
								<parameter key="@::NO_OF_PARTICLES" label="No of particles:" type="number" format="integer+" default="500" notoggle="true"/>
460
461
462
463
464
465
							</option>
						</parameter>
					</frame>
				</option>
				<option>
					<parameter type="helptext">
466
						<help>The Particle filter needs a model function, which you must provide.&lt;br&gt;Alternatively however, you may set a meteo parameter from your data set&lt;br&gt;which will be interpolated onto a curve.</help>
467
468
469
					</parameter>
				</option>
			</parameter>
470
			<frame caption="Random number generators">
471
				<parameter type="alternative">
472
473
					<option value="Model noise RNG settings">
						<parameter key="%::ARG#::MODEL_RNG_ALGORITHM" label="RNG algorithm model:" type="alternative" default="XOR" optional="false">
474
							<reference name="RNG_ALGORITHMS"/>
475
							<help>Choose the random number generator algorithm for system/process noise. For details about these settings view the online help for &lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1RandomNumberGenerator.html&quot;&gt;MeteoIO's random number generator&lt;/a&gt;.</help>
476
						</parameter>
477
						<parameter key="%::ARG#::MODEL_RNG_DISTRIBUTION" label="RNG distribution model:" type="alternative" default="GAUSS" optional="false">
478
							<reference name="RNG_DISTRIBUTIONS"/>
479
480
481
482
483
484
485
							<help>Distribution function for the model RNG. This is your process noise distribution.</help>
						</parameter>
						<parameter key="%::ARG#::MODEL_RNG_PARAMETERS" label="RNG parameters model:" type="text" size="small">
							<help>Enter model RNG distribution parameters as a space-separated list. For e. g. a Gauss distribution you can set the mean and standard deviation. Then, your system model is assumed to be noisy within this standard deviation.</help>
						</parameter>
						<parameter key="%::ARG#::MODEL_RNG_SEED" label="RNG seed model:" type="text" size="small">
							<help>Enter space-separated list of numbers to seed the RNG with. The number count must match the one the selected RNG expects. This is useful to reproduce experiments.</help>
486
487
						</parameter>
					</option>
488
489
					<option value="Prior distribution RNG settings">
						<parameter key="%::ARG#::PRIOR_RNG_ALGORITHM" label="RNG algorithm prior:" type="alternative" default="XOR" optional="false">
490
							<reference name="RNG_ALGORITHMS"/>
491
							<help>Prior distribution RNG algorithm.</help>
492
						</parameter>
493
						<parameter key="%::ARG#::PRIOR_RNG_DISTRIBUTION" label="RNG distribution prior:" type="alternative" default="GAUSS" optional="false">
494
							<reference name="RNG_DISTRIBUTIONS"/>
495
496
497
498
499
500
501
							<help>Distribution function for the prior RNG.</help>
						</parameter>
						<parameter key="%::ARG#::PRIOR_RNG_PARAMETERS" label="RNG parameters prior:" type="text" size="small">
							<help>Prior RNG distribution parameters.</help>
						</parameter>
						<parameter key="%::ARG#::PRIOR_RNG_SEED" label="RNG seed prior:" type="text" size="small">
							<help>Prior RNG seeds.</help>
502
503
						</parameter>
					</option>
504
505
					<option value="Observation noise RNG settings">
						<parameter key="%::ARG#::OBS_RNG_ALGORITHM" label="RNG algorithm obs.:" type="alternative" default="XOR" optional="false">
506
							<reference name="RNG_ALGORITHMS"/>
507
							<help>Observation noise RNG algorithm.</help>
508
						</parameter>
509
						<parameter key="%::ARG#::OBS_RNG_DISTRIBUTION" label="RNG distribution obs.:" type="alternative" default="gauss" optional="false">
510
							<reference name="RNG_DISTRIBUTIONS"/>
511
							<help>Your measurements are assumed to be faulty according to this error distribution. For natural phenomena, a normal distribution is always a good start. If you know how your sensor reacts to external changes you may want to refine this choice.</help>
512
						</parameter>
513
514
515
516
517
518
519
520
521
522
						<option row="3" column="3">
							<parameter key="%::ARG#::OBS_RNG_PARAMETERS" label="RNG parameters obs.:" type="text" size="small">
								<help>Observation RNG distribution parameters.</help>
							</parameter>
						</option>
						<option row="3" column="4">
							<parameter key="%::ARG#::OBS_RNG_SEED" label="RNG seed obs.:" type="text" size="small">
								<help>Observation RNG seeds.</help>
							</parameter>
						</option>
523
					</option>
524
525
526
527
					<option value="Resampling RNG">
						<parameter key="%::ARG#::RESAMPLE_RNG_SEED" label="RNG resampling seed:" type="text" size="small">
							<help>The resampling RNG setting does not have a physical meaning connected to the apparatus but rather it is an internal generator used for particle path resampling.&lt;br&gt;It can be set for reproducability of simulations.</help>
						</parameter>
528
					</option>
529
					<help>Set the various random number generators' properties.</help>
530
531
				</parameter>
			</frame>
532
			<frame caption="Expert settings" background_color="#fbfbfb">
533
				<parameter key="@::PATH_RESAMPLING" caption="Perform path resampling" type="checkbox" default="TRUE">
534
					<help>Perform path resampling? This has its drawbacks but is usually necessary.</help>
535
				</parameter>
Mathias Bavay's avatar
Mathias Bavay committed
536
				<parameter key="@::RESAMPLING_PERCENTILE" label="Resampling percentile:" type="number" format="decimal" default="0.5" precision="2">
537
538
539
540
541
					<help>A simple heuristic on when path resampling is turned on (has nothing to do with meteo data resampling).</help>
				</parameter>
				<parameter key="@::VERBOSE" caption="Verbose output" type="checkbox">
					<help>Output some filter status messages to the console.</help>
				</parameter>
542
				<parameter key="%::ARG#" type="grid">
543
544
					<option row="2" column="1">
						<parameter key="@::DUMP_PARTICLES_FILE" label="Dump particle paths:" type="file" mode="output"/>
545
					</option>
546
547
					<option row="2" column="2">
						<parameter key="@::DUMP_INTERNAL_STATES_FILE" label="Dump internal states:" type="file" mode="output"/>
548
					</option>
549
550
					<option row="2" column="3">
						<parameter key="@::INPUT_INTERNAL_STATES_FILE" label="Input internal states:" type="file" mode="output"/>
551
552
553
					</option>
				</parameter>
			</frame>
554
			<reference name="ID_RESTRICT"/>
555
			<reference name="TIME_RESTRICT"/>
556
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterParticle.html&quot;&gt;Particle filter&lt;/a&gt;, please read the documentation!</help>
557
		</option>
558
559
560
561
	</parametergroup> <!-- end particle filter -->

	<!-- DATA TRANSFORMATION SUPPR -->
	<parametergroup name="FILTER_SUPPR">
562
		<option caption="Suppress data" value="SUPPR" color="#62a388">
563
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
Mathias Bavay's avatar
Mathias Bavay committed
564
				<option value="All"><help>suppress all values for the selected parameter</help></option>
565
				<option value="Frac">
Mathias Bavay's avatar
Mathias Bavay committed
566
					<parameter key="%::ARG#::FRAC" label="Fraction:" type="number" format="decimal" min="0" max="1" precision="2" optional="false"><help>This suppresses a given fraction of the data for the given meteorological parameter</help></parameter>
567
					<parameter key="%::ARG#::WIDTH" label="Gap width:" type="number" format="integer+" units="s" optional="true"><help>If set, width (in seconds) of each of the data gaps to create (otherwise individual data points are deleted)</help></parameter>
568
569
				</option>
				<option value="File">
570
					<parameter key="%::ARG#::FILE" label="supressions file:" type="file" mode="input" optional="false"><help>suppress values for the selected parameter at the timesteps and station IDs as given in the provided file</help></parameter>
571
572
				</option>
			</parameter>
573
			<reference name="ID_RESTRICT"/>
574
			<reference name="TIME_RESTRICT"/>
575
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1FilterSuppr.html&quot;&gt;This suppresses&lt;/a&gt; either a given fraction of the data or values for the selected parameter at the timesteps and station IDs as given in the provided file, or all values for this parameter.</help>
576
577
578
579
580
		</option>
	</parametergroup>

	<!-- DATA TRANSFORMATION ADD -->
	<parametergroup name="PROC_ADD">
581
		<option caption="Add offset" value="ADD" color="#62a388">
582
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
583
				<option value="Cst">
584
					<parameter key="%::ARG#::CST" label="CST" type="number" format="decimal" precision="6" optional="false"><help>Add a given offset to the data.</help></parameter>
585
586
				</option>
				<option value="File">
587
					<parameter key="%::ARG#::PERIOD" label="Period:" type="alternative" optional="false">
588
589
						<option caption="Hourly" value="HOURLY"/>
						<option caption="Daily" value="DAILY"/>
590
						<option caption="Monthly" value="MONTHLY"/>
591
					</parameter>
592
					<parameter key="%::ARG#::CORRECTIONS" label="Corrections file:" type="file" mode="input" optional="false"/>
593
					<parameter key="%::ARG#::COLUMN" label="Column:" type="number" format="integer+" default="2" min="2" notoggle="true">
594
						<help>This adds to the data an hourly/daily/monthly offset as read from a specified file (with absolute or relative path).</help>
595
596
597
					</parameter>
				</option>
				<option value="Noise">
598
					<parameter key="%::ARG#::DISTRIBUTION" label="Distribution:" type="alternative" optional="false">
599
600
601
						<option value="uniform"/>
						<option value="normal"/>
					</parameter>
Mathias Bavay's avatar
Mathias Bavay committed
602
					<parameter key="%::ARG#::RANGE" label="Range:" type="number" format="decimal" precision="6" default="5.0" optional="false">
603
604
605
						<help>Add a noise signal to the input. The range is the scaling factor to apply: how many time the standard deviation for a normaly distributed noise or the amplitude (in %) around the original signal for an uniformly distributed noise.</help>
					</parameter>
				</option>
606
				<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1ProcAdd.html&quot;&gt;Add a given quantity&lt;/a&gt; to the data.</help>
607
			</parameter>
608
			<reference name="ID_RESTRICT"/>
609
			<reference name="TIME_RESTRICT"/>
610
611
612
613
614
		</option>
	</parametergroup>

	<!-- DATA TRANSFORMATION MULT -->
	<parametergroup name="PROC_MULT">
615
		<option caption="Multiply" value="MULT" color="#62a388">
616
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
617
				<option value="Cst">
Mathias Bavay's avatar
Mathias Bavay committed
618
					<parameter key="%::ARG#::CST" label="CST" type="number" format="decimal" precision="6" default="0" optional="false"><help>This multiplies the data by a given factor.</help></parameter>
619
620
				</option>
				<option value="File">
621
					<parameter key="%::ARG#::PERIOD" label="Period:" type="alternative" optional="false">
622
623
624
625
						<option caption="Hourly" value="HOURLY"/>
						<option caption="Daily" value="DAILY"/>
						<option caption="Monthly" value="MONTHL>"/>
						</parameter>
626
						<parameter key="%::ARG#::CORRECTIONS" label="Corrections file:" type="file" mode="input" optional="false"/>
627
						<parameter key="%::ARG#::COLUMN" label="Column:" type="number" format="integer+" default="2" min="2" notoggle="true">
628
629
630
631
							<help>This multiplies the data by an hourly/daily/monthly factor as read from a specified file (with absolute or relative path).</help>
						</parameter>
				</option>
				<option value="Noise" type="string">
632
					<parameter key="%::ARG#::DISTRIBUTION" label="Distribution:" type="alternative" optional="false">
633
634
635
						<option value="uniform"/>
						<option value="normal"/>
					</parameter>
Mathias Bavay's avatar
Mathias Bavay committed
636
					<parameter key="%::ARG#::RANGE" label="Range:" type="number" format="decimal" precision="6" default="5.0" optional="false">
637
638
639
						<help>Multiply the input by a noise signal. The range (interpreted as a fraction) is the scaling factor to apply: how many time the standard deviation for a normaly distributed noise or the amplitude (in %) around the original signal for an uniformly distributed noise.</help>
					</parameter>
				</option>
640
				<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1ProcAdd.html&quot;&gt;Multiply&lt;/a&gt; the data by a given quantity.</help>
641
			</parameter>
642
			<reference name="ID_RESTRICT"/>
643
			<reference name="TIME_RESTRICT"/>
644
645
646
647
648
		</option>
	</parametergroup>

	<!-- DATA TRANSFORMATION QUANTILE MAPPING -->
	<parametergroup name="PROC_QUANTILEMAPPING">
649
		<option caption="Quantile Mapping" value="QM" color="#62a388">
650
			<parameter key="%::ARG#" label="Quantile Mapping" type="horizontal">
651
				<option>
652
					<parameter key="@::TYPE" label="Type:" type="alternative" optional="false">
653
654
655
656
657
						<o value="ADD"/>
						<o value="MULT"/>
					</parameter>
				</option>
				<option>
658
					<parameter key="@::PERIOD" label="Period:" type="alternative">
659
						<o value="YEARLY"/>
660
						<o value="MONTHLY"/>
661
						<o value="WEEKLY"/>
662
						<o value="DAILY"/>
663
664
665
					</parameter>
				</option>
				<option>
666
					<parameter key="@::CORRECTIONS" label="Corrections:" type="file" mode="input"/>
667
				</option>
668
669
670
671
672
673
				<option>
					<parameter key="@::WRITE_QUANTILES" label="Write out quantiles:" type="alternative" default="FALSE">
						<option value="TRUE"/>
						<option value="FALSE"/>
					</parameter>
				</option>
674
			</parameter>
675
			<reference name="ID_RESTRICT"/>
676
			<reference name="TIME_RESTRICT"/>
677
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1ProcQuantileMapping.html&quot;&gt;Quantile Mapping&lt;/a&gt; Correction</help>
678
679
680
681
682
		</option>
	</parametergroup>

	<!-- PROC AGGREGATE -->
	<parametergroup name="PROC_AGGREGATE">
683
		<option caption="Aggregate" value="AGGREGATE" color="#14691d">
684
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
685
686
687
688
				<option value="MIN"/>
				<option value="MAX"/>
				<option value="MEAN"/>
				<option value="MEDIAN"/>
689
				<option value="STEP_SUM"/>
690
				<option value="WIND_AVG"/>
691
				<help>Aggregation type</help>
692
693
			</parameter>
			<reference name="SOFT_CENTER_MIN"/>
694
			<reference name="ID_RESTRICT"/>
695
			<reference name="TIME_RESTRICT"/>
696
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1ProcAggregate.html&quot;&gt;Aggregate&lt;/a&gt; the data from a given time window.</help>
697
698
699
700
701
		</option>
	</parametergroup>

	<!-- PROC DEACCUMULATE -->
	<parametergroup name="PROC_DEACCUMULATE">
702
		<option caption="DeAccumulate" value="DEACCUMULATE" color="#14691d">
703
			<reference name="ID_RESTRICT"/>
704
			<reference name="TIME_RESTRICT"/>
705
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1ProcDeAccumulate.html&quot;&gt;Convert accumulated values back to instantaneous values&lt;/a&gt; (for example, accumulated solar radiation from ECMWF). This filter recomputes the instantaneous values by considering that once a value gets smaller than its preceding values, the end of the accumulation period has been reached, so the value is kept as is and the process starts over again (thus this assumes that they are no negative values).</help>
706
		</option>
707
	</parametergroup>
708
709
710

	<!-- PROC EXP_SMOOTHING -->
	<parametergroup name="PROC_EXP_SMOOTHING">
711
		<option caption="Exponential Smoothing" value="EXP_SMOOTHING" color="#14691d">
712
			<reference name="SOFT_CENTER_MIN"/>
Mathias Bavay's avatar
Mathias Bavay committed
713
			<parameter key="%::ARG#::ALPHA" label="Alpha:" type="number" format="decimal" default="0.8" precision="2" min="0" max="1"/>
714
			<reference name="ID_RESTRICT"/>
715
			<reference name="TIME_RESTRICT"/>
716
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1ProcExpSmoothing.html&quot;&gt;Exponential smoothing&lt;/a&gt; processing, exponential moving average s_0 = x_0 s_n = alpha*x_(t-1) + (1-alpha)*s_t-1</help>
717
718
719
720
721
		</option>
	</parametergroup>

	<!-- PROC WMA_SMOOTHING -->
	<parametergroup name="PROC_WMA_SMOOTHING">
722
		<option caption="Weighted Moving Average Smoothing" value="WMA_SMOOTHING" color="#14691d">
723
			<reference name="SOFT_CENTER_MIN"/>
724
			<reference name="ID_RESTRICT"/>
725
			<reference name="TIME_RESTRICT"/>
726
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1ProcWMASmoothing.html&quot;&gt;Weighted moving average smoothing&lt;/a&gt; such as: WMA = (1*X1 + 2*X2 + ... + n*Xn) / sum_of_weights</help>
727
728
729
730
731
		</option>
	</parametergroup>

	<!-- PROC IIR -->
	<parametergroup name="PROC_IIR">
732
		<option caption="IIR HP or LP filter" value="IIR" color="#14691d">
733
			<parameter key="%::ARG#::FREQ_RESPONSE" label="Frequency response:" type="alternative" optional="false">
734
735
736
737
				<option value="LP"/>
				<option value="HP"/>
				<help>Either choose Low Pass (LP) or High Pass (HP).</help>
			</parameter>
Mathias Bavay's avatar
Mathias Bavay committed
738
			<parameter key="%::ARG#::CUTOFF" label="Cutoff:" type="number" format="decimal" precision="0" min="0" default="${{3*3600}}" unit="s" optional="false">
739
740
741
				<help>The cutoff period is defined as the period (in seconds) at which there is a -3dB gain.</help>
			</parameter>
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" default="CRITICALLY_DAMPED">
742
743
744
745
746
				<option value="CRITICALLY_DAMPED"/>
				<option value="BUTTERWORTH"/>
				<option value="BESSEL"/>
				<help>Choose the type of filter (see documentation for more).</help>
			</parameter>
747
			<parameter key="%::ARG#::SINGLE_PASS" label="SINGLE_PASS" caption="Force single pass" type="checkbox" default="FALSE">
748
749
				<help>Normally, the phase is removed by bidirectional filtering, ie. running the filter twice, first backward and then forward (this also squares the amplitude response).</help>
			</parameter>
750
			<reference name="ID_RESTRICT"/>
751
			<reference name="TIME_RESTRICT"/>
752
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1ProcIIR.html&quot;&gt;This Infinite Impulse Response (IIR)&lt;/a&gt;, two poles filter either acts as a Low Pass or High Pass filter. &lt;a href=&quot;http://www.dspguide.com/ch19/4.htm&quot;&gt;More information&lt;/a&gt;.</help>
753
754
755
756
757
		</option>
	</parametergroup>

	<!-- PROC UNDERCATCH_WMO -->
	<parametergroup name="PROC_UNDERCATCH_WMO">
758
		<option caption="WMO Undercatch Filter" value="UNDERCATCH_WMO" color="#459a4a">
759
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
760
				<option value="Cst">
Mathias Bavay's avatar
Mathias Bavay committed
761
762
					<parameter key="%::ARG#::SNOW" label="SNOW" type="number" format="decimal" precision="2" optional="false"/>
					<parameter key="%::ARG#::MIXED" label="MIXED" type="number" format="decimal" precision="2" optional="false"/>
763
764
					<parameter key="%::ARG#::T_SNOW" label="T_SNOW" type="number" format="decimal" precision="2" unit="°C">
						<help>Snow temperature threshold, default -2 °C</help>
765
					</parameter>
766
767
					<parameter key="%::ARG#::T_RAIN" label="T_RAIN" type="number" format="decimal" precision="2" unit="°C">
						<help>Rain temperature threshold, default +2 °C</help>
768
769
770
771
772
773
774
775
776
777
778
779
780
					</parameter>
					<help>this applies a constant factor to the precipitation (the solid and mixed precipitation factor must be provided). The snow and rain temperature thresholds can optionally be provided</help>
				</option>
				<o value="Nipher"/>
				<o value="Tretyakov"/>
				<o value="US8sh"/>
				<o value="US8unsh"/>
				<o value="RT3_Jp"/>
				<o value="Cspg"/>
				<o value="Geonorsh"/>
				<o value="Hellmann"/>
				<o value="Hellmannsh"/>
			</parameter>
781
			<reference name="ID_RESTRICT"/>
782
			<reference name="TIME_RESTRICT"/>
783
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1ProcUndercatch__WMO.html&quot;&gt;WMO undercatch correction&lt;/a&gt;. This implements the standard methods for precipitation correction as described in &lt;i&gt;"WMO Solid Precipitation Measurement Intercomparison"&lt;/i&gt;, B. Goodison, P. Louie and D. Yang, 872, 1998 as well as the overview given by &lt;i&gt;"Literature Study on the Correction of Precipitation Measurements"&lt;/i&gt;, Annette Wagner, 2009. The correction parameters for the shielded Hellmann gauge (German version) are from &lt;i&gt;"Wind-induced Precipitation Undercatch of the Hellmann Gauges"&lt;/i&gt;, Daqing Yang et al, Nordic Hydrology, 30, 1999, pp 57-80.</help>
784
785
786
787
788
		</option>
	</parametergroup>

	<!-- PROC UNDERCATCH_FORLAND -->
	<parametergroup name="PROC_UNDERCATCH_FORLAND">
789
		<option caption="Forland Undercatch Filter" value="UNDERCATCH_FORLAND" type="string" color="#459a4a">
790
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
791
792
793
794
795
796
797
798
799
				<option value="Hellmann"/>
				<option value="Swedish"/>
				<option value="Norvegian"/>
				<option value="Finnish"/>
				<option value="Treyakov"/>
				<option value="Belfort"/>
				<option value="Geonor"/>
				<option value="wfj"/>
			</parameter>
800
			<reference name="ID_RESTRICT"/>
801
			<reference name="TIME_RESTRICT"/>
802
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1ProcUndercatch__Forland.html&quot;&gt;Forland undercatch correction&lt;/a&gt;. This implements the standard methods for precipitation correction as described in &lt;i&gt;"Manual for operational correction of Nordic precipitation data"&lt;/i&gt;, E. Førland, P. Allerup, B. Dahlström, E. Elomaa, T. Jónsson, H. Madsen, P. Perälä Rissanen, H. Vedin, and F. Vejen, 1996, Tech. Rep. 24/96, Norske Meteorologiske Institutt. Some specific coefficients have been calculated by N. Wever for the Davos Weisflujoch experimental field ("wfj" gauge choice).</help>
803
804
805
806
807
		</option>
	</parametergroup>

	<!-- PROC UNDERCATCH_HAMON -->
	<parametergroup name="PROC_UNDERCATCH_HAMON">
808
		<option caption="Hamon Undercatch Filter" value="UNDERCATCH_HAMON" type="string" color="#459a4a">
809
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
810
811
812
813
				<option value="Sh"/>
				<option value="UnSh"/>
				<option value="Hellmannsh"/>
			</parameter>
814
			<reference name="ID_RESTRICT"/>
815
			<reference name="TIME_RESTRICT"/>
816
			<help>&lt;a href=&quot;https://models.slf.ch/docserver/meteoio/html/classmio_1_1ProcUndercatch__Hamon.html&quot;&gt;Hamon undercatch corection&lt;/a&gt;. This implements the standard methods for precipitation correction as described in &lt;i&gt;"Computing actual precipitation"&lt;/i&gt;, W. R. Hamon, in Distribution of precipitation in mountaineous areas, Geilo symposium 1, pp 159-174, World Meteorological Organization, Geneva, 1972.</help>