WSL/SLF GitLab Repository

meteoio_filters.xml 60.3 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
29
30
31
32
	<!-- TIME FILTERS -->
	<parametergroup name="TIMEFILTERS">
		<parameter key="TIME::FILTER#" label="Add/remove filter for timestamps:" type="alternative" replicate="true">
			<!-- time filters -->
			<reference name="TIMEFILTER_SUPPR"/>
			<reference name="TIMEFILTER_UNDST"/>
33
			<reference name="TIMEFILTER_SORT"/>
34
35
36
			<reference name="TIMEFILTER_TIMELOOP"/>
		</parameter>
	</parametergroup>
37
38
39

	<!-- FILTERS -->
	<parametergroup name="FILTERS">
40
		<parameter label="Add/Remove Filter" type="selector">
41
			<parameter key="%::FILTER#" type="alternative" replicate="true" template="true" pre-generate="false" bold="true">
42
43
				<!-- filters -->
				<reference name="FILTER_NONE"/>
44
45
				<reference name="FILTER_MIN"/>
				<reference name="FILTER_MAX"/>
46
47
				<reference name="FILTER_MIN_MAX"/>
				<reference name="FILTER_MIN_MAX_CONDITIONAL"/>
48
				<reference name="FILTER_RATE"/>
49
50
51
52
				<reference name="FILTER_UNHEATED_RAINGAUGE"/>
				<reference name="FILTER_DETECT_GRASS"/>
				<reference name="FILTER_POTENTIALSW"/>
				<reference name="FILTER_MATHS"/>
53
54
55
				<reference name="FILTER_STD_DEV"/>
				<reference name="FILTER_MAD"/>
				<reference name="FILTER_TUKEY"/>
56
57
58
59
60
61
62
63
				<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"/>
64
				<reference name="PROC_MULT"/>
65
66
				<reference name="PROC_QUANTILEMAPPING"/>
				<!-- specific data transformations -->
67
68
				<reference name="PROC_AGGREGATE"/>
				<reference name="PROC_DEACCUMULATE"/>
69
70
71
72
73
74
75
76
77
78
				<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"/>
79
				<reference name="PROC_TRANSFORMWINDVECTOR"/>
80
81
82
83
			</parameter>
			<reference name="METEOPARAMETERS"/>
		</parameter>
	</parametergroup>
84
85
86

	<!-- FILTER NONE -->
	<parametergroup name="FILTER_NONE">
87
		<option caption="None" value="NONE" color="#3282b8">
88
			<reference name="ID_RESTRICT"/>
89
			<reference name="TIME_RESTRICT"/>
90
91
92
93
			<help>This does nothing (this is useful in an IMPORT to overwrite previous filters)</help>
		</option>
	</parametergroup>

94
95
	<!-- FILTER MIN -->
	<parametergroup name="FILTER_MIN">
96
		<option caption="Min Range Filter" value="MIN" color="#3282b8">
97
			<parameter key="%::ARG#" label="" underline="true" type="horizontal">
98
				<o><parameter key="@::SOFT" caption="Soft" type="checkbox"/></o>
Mathias Bavay's avatar
Mathias Bavay committed
99
100
				<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>
101
102
				<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>
103
			<reference name="ID_RESTRICT"/>
104
			<reference name="TIME_RESTRICT"/>
105
			<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>
106
107
		</option>
	</parametergroup>
108

109
110
	<!-- FILTER MAX -->
	<parametergroup name="FILTER_MAX">
111
		<option caption="Max Range Filter" value="MAX" color="#3282b8">
112
			<parameter key="%::ARG#" label="" underline="true" type="horizontal">
113
				<o><parameter key="@::SOFT" caption="Soft" type="checkbox"/></o>
Mathias Bavay's avatar
Mathias Bavay committed
114
115
				<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>
116
117
				<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>
118
			<reference name="ID_RESTRICT"/>
119
			<reference name="TIME_RESTRICT"/>
120
			<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>
121
122
		</option>
	</parametergroup>
123

124
125
	<!-- FILTER MIN_MAX -->
	<parametergroup name="FILTER_MIN_MAX">
126
		<option caption="Minimum and Maximum Filter" value="MIN_MAX" color="#3282b8">
127
			<parameter key="%::ARG#" label="" underline="true" type="horizontal">
128
				<o><parameter key="@::SOFT" caption="Soft" type="checkbox"/></o>
Mathias Bavay's avatar
Mathias Bavay committed
129
130
				<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>
131
132
133
134
135
				<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
136
137
				<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>
138
139
				<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>
140
			<reference name="ID_RESTRICT"/>
141
			<reference name="TIME_RESTRICT"/>
142
			<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>
143
144
		</option>
	</parametergroup>
145
146
147

	<!-- FILTER MIN_MAX_CONDITIONAL -->
	<parametergroup name="FILTER_MIN_MAX_CONDITIONAL">
148
		<option caption="Conditional Minimum and Maximum Filter" value="MIN_MAX_CONDITIONAL" color="#3282b8">
149
			<parameter key="%::ARG#" label="" underline="true" type="horizontal">
150
151
				<o><parameter key="@::PARAMETER" label="Parameter:" type="text" size="small"/></o>
				<option>
152
					<parameter key="@::OPERATOR" label="Operator:" type="alternative" editable="false" size="small" optional="false">
153
						<reference name="EQUALITY_OPERATORS"/>
154
155
					</parameter>
				</option>
Mathias Bavay's avatar
Mathias Bavay committed
156
				<o><parameter key="@::COMPARE" label="Compare:" type="number" format="decimal" precision="6"/></o>
157
158
159
160
161
				<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
162
163
				<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>
164
165
			</parameter>
			<parameter key="%::ARG#" label="" type="horizontal">
Mathias Bavay's avatar
Mathias Bavay committed
166
167
				<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>
168
169
170
				<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
171
				<o><parameter key="@::RESET" label="Reset value:" type="number" format="decimal" precision="6"/></o>
172
				<o><parameter key="@::SOFT" caption="Soft" type="checkbox"/></o>
173
				<o><parameter key="@::IGNORE_MISSING" caption="Ignore missing" type="checkbox"/></o>
174
175
				<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>
176
			<reference name="ID_RESTRICT"/>
177
			<reference name="TIME_RESTRICT"/>
178
			<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>
179
180
181
		</option>
	</parametergroup>

182
183
	<!-- FILTER RATE -->
	<parametergroup name="FILTER_RATE">
184
		<option caption="Rate Filter" value="RATE" color="#3282b8">
185
			<parameter key="%::ARG#" label="" type="horizontal" underline="true">
Mathias Bavay's avatar
Mathias Bavay committed
186
187
				<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>
188
			</parameter>
189
			<reference name="ID_RESTRICT"/>
190
			<reference name="TIME_RESTRICT"/>
191
			<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>
192
193
		</option>
	</parametergroup>
194

195
196
	<!-- FILTER UNHEATED_RAINGAUGE -->
	<parametergroup name="FILTER_UNHEATED_RAINGAUGE">
197
		<option caption="Unheated Rain Gauge Filter" value="UNHEATED_RAINGAUGE" color="#3282b8">
198
			<parameter key="%::ARG#" label="" underline="true" type="horizontal">
199
				<o><parameter key="@::SOFT" caption="Soft" type="checkbox"/></o>
Mathias Bavay's avatar
Mathias Bavay committed
200
201
				<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>
202
				<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>
203
			</parameter>
204
			<reference name="ID_RESTRICT"/>
205
			<reference name="TIME_RESTRICT"/>
206
			<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>
207
208
		</option>
	</parametergroup>
209
210
211

	<!-- FILTER DETECT_GRASS -->
	<parametergroup name="FILTER_DETECT_GRASS">
212
		<option caption="Detect grass under the sensor" value="DETECT_GRASS" color="#3282b8">
213
			<parameter key="%::ARG#" label="" underline="true" type="horizontal">
Mathias Bavay's avatar
Mathias Bavay committed
214
				<o><parameter key="@::TSS_OFFSET" label="TSS offset:" type="number" format="decimal" precision="2" unit="K"/></o>
215
				<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>
216
			</parameter>
217
			<reference name="ID_RESTRICT"/>
218
			<reference name="TIME_RESTRICT"/>
219
			<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>
220
221
		</option>
	</parametergroup>
222
223
224

	<!-- FILTER POTENTIALSW -->
	<parametergroup name="FILTER_POTENTIALSW">
225
		<option caption="Potential Short Wave" value="POTENTIALSW" color="#3282b8">
Mathias Bavay's avatar
Mathias Bavay committed
226
227
			<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"/>
228
			<parameter key="%::ARG#::SOFT" caption="Soft" type="checkbox">
229
				<help>If true, filtered values are set to the filter limits (coefficient * calculation) instead of nodata</help>
230
			</parameter>
231
			<parameter key="%::ARG#::MODE" label="Mode:" type="alternative">
232
				<option value="GROUND">
233
					<help>set to GROUND to use ground level global radiation when evaluating the minimum plausible radiation</help>
234
				</option>
235
			</parameter>
236
			<parameter key="%::ARG#::MEAN_PERIOD" label="MEAN_PERIOD" type="number" format="integer+" unit="s">
237
				<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>
238
			</parameter>
239
			<reference name="ID_RESTRICT"/>
240
			<reference name="TIME_RESTRICT"/>
241
			<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>
242
243
		</option>
	</parametergroup>
244
245
246

	<!-- FILTER MATHS -->
	<parametergroup name="FILTER_MATHS">
247
		<option caption="Arithmetic Filter" value="MATHS" color="#3282b8">
248
			<parameter key="%::ARG#::FORMULA" label="FORMULA" type="text" lenient="true" size="large" optional="false">
249
250
				<substitution find="meteo\(\w*\)" replace="1"/>
				<substitution find="nodata|year|month|day|hour|minute|julian|altitude|azimuth|slope|latitude|longitude|easting|northing" replace="1"/>
251
				<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>
252
253
			</parameter>
			<parameter key="%::ARG#::FORMULA_ELSE" label="FORMULA_ELSE" type="text" lenient="true" size="large">
254
255
256
257
				<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>
258
259
			</parameter>
			<parameter key="%::ARG#::CONNECTIVE" label="CONNECTIVE" type="alternative" optional="false" default="AND">
260
261
262
				<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>
263
264
			</parameter>
			<parameter label="Add Condition:" type="horizontal" replicate="true">
265
266
267
				<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>
268
269
270
271
272
				<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>
273
			<parameter key="%::ARG#::SKIP_NODATA" label="SKIP_NODATA" caption="Do not calculate with nodata values" type="checkbox" default="FALSE">
274
275
				<help>Any input nodata stays untouched. Checks for nodata in COMPARE will not be called.</help>
			</parameter>
276
			<reference name="ID_RESTRICT"/>
277
			<reference name="TIME_RESTRICT"/>
278
			<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>
279
280
		</option>
	</parametergroup>
281

282
283
	<!-- FILTER STD_DEV -->
	<parametergroup name="FILTER_STD_DEV">
284
		<option caption="Standard deviation filter" value="STD_DEV" color="#136b84">
285
			<reference name="SOFT_CENTER_MIN"/>
286
			<reference name="ID_RESTRICT"/>
287
			<reference name="TIME_RESTRICT"/>
288
289
290
291
292
293
			<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">
294
		<option caption="Median Absolute Deviation" value="MAD" color="#136b84">
Mathias Bavay's avatar
Mathias Bavay committed
295
			<parameter key="%::ARG#::MIN_SIGMA" label="MIN_SIGMA" type="number" format="decimal" precision="2">
296
297
298
				<help>Prevents sigma_mad to get too small by forcing a minimum value</help>
			</parameter>
			<reference name="SOFT_CENTER_MIN"/>
299
			<reference name="ID_RESTRICT"/>
300
			<reference name="TIME_RESTRICT"/>
301
302
303
304
305
306
			<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">
307
		<option caption="Tukey 53H Filter" value="TUKEY" color="#136b84">
308
			<reference name="SOFT_CENTER_MIN"/>
309
			<reference name="ID_RESTRICT"/>
310
			<reference name="TIME_RESTRICT"/>
311
			<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>
312
313
314
315
316
		</option>
	</parametergroup>

	<!-- FILTER DESPIKING -->
	<parametergroup name="FILTER_DESPIKING">
317
		<option caption="Phase space despiking" value="DESPIKING" color="#136b84">
318
319
320
321
322
			<parameter key="%::ARG#::METHOD" type="alternative" default="Goring">
				<option value="Goring"/>
				<option value="Mori"/>
				<help>either use the Goring or the Mori version of the algorithm</help>
			</parameter>
Mathias Bavay's avatar
Mathias Bavay committed
323
			<parameter key="%::ARG#::SENSITIVITY" label="Sensitivity:" type="number" format="decimal" min="0" default="1.0" precision="2">
324
325
				<help>Scaling factor applied to the universal threshold, a larger value rejects more spikes</help>
			</parameter>
326
			<parameter key="%::ARG#::INTERPOL_DEG" label="Degree of interpolation:" type="number" format="integer+" default="3" notoggle="true">
327
328
				<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>
329
			<parameter key="%:ARG#::INTERPOL_PTS" label="Interpolation points:" type="number" format="integer+" default="24" notoggle="true">
330
331
				<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>
332
			<reference name="ID_RESTRICT"/>
333
			<reference name="TIME_RESTRICT"/>
334
			<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>
335
336
337
338
339
		</option>
	</parametergroup>

	<!-- FILTER NO_CHANGE -->
	<parametergroup name="FILTER_NO_CHANGE">
340
		<option caption="Remove periods with low variance" value="NO_CHANGE" color="#136b84">
Mathias Bavay's avatar
Mathias Bavay committed
341
			<parameter key="%::ARG#::MAX_VARIANCE" label="MAX_VARIANCE" type="number" format="decimal" precision="2">
342
343
344
				<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"/>
345
			<reference name="ID_RESTRICT"/>
346
			<reference name="TIME_RESTRICT"/>
347
			<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>
348
349
350
351
352
		</option>
	</parametergroup>

	<!-- FILTER TIME_CONSISTENCY -->
	<parametergroup name="FILTER_TIME_CONSISTENCY">
353
		<option caption="Remove points with high variance" value="TIME_CONSISTENCY" color="#136b84">
354
			<reference name="SOFT_CENTER_MIN"/>
355
			<reference name="ID_RESTRICT"/>
356
			<reference name="TIME_RESTRICT"/>
357
			<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>
358
359
360
		</option>
	</parametergroup>

361
362
	<!-- FILTER KALMAN -->
	<parametergroup name="FILTER_KALMAN">
363
		<option caption="Kalman Filter" value="KALMAN" color="#136b84">
364
365
			<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>
366
367
368
			</parameter>
			<parameter type="horizontal">
				<option>
369
					<parameter key="%::ARG#::INITIAL_STATE" label="Initial state:" type="number" format="decimal" default="1st"/>
370
371
372
373
374
375
				</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>
376
377
378
379
380
381
382
383
			<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>
384
			</parameter>
385
386
			<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">
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
				<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>
408
			<reference name="ID_RESTRICT"/>
409
			<reference name="TIME_RESTRICT"/>
410
411
412
		</option>
	</parametergroup>

413
	<!-- FILTER PARTICLE -->
414
	<parametergroup name="FILTER_PARTICLE">
415
		<option caption="Particle Filter" value="PARTICLE" color="#136b84">
416
			<parameter key="%::ARG#" label="" type="horizontal">
417
				<option>
418
					<frame caption="Model functions">
419
420
						<parameter type="grid">
							<option row="1" column="1" colspan="2">
421
								<parameter key="@::MODEL_FUNCTION" label="Model function:" type="text" lenient="true" optional="false">
Michael Reisecker's avatar
Michael Reisecker committed
422
									<substitution find="kk|tt|x_km1" replace="1"/> <!-- substitutions for correct expression styling -->
423
424
									<substitution find="meteo\(\w*\)" replace="1"/>
								</parameter>
425
426
							</option>
							<option row="2" column="1" colspan="2">
Michael Reisecker's avatar
Michael Reisecker committed
427
								<parameter key="@::MODEL_FIT_PARAM" label="Fit curve against parameter" type="alternative" editable="true">
428
429
430
									<reference name="METEOPARAMETERS"/>
								</parameter>
							</option>
431
							<option row="3" column="1" colspan="2">
432
433
434
435
								<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>
436
437
438
439
440
							</option>
						</parameter>
					</frame>
				</option>
				<option>
441
					<frame caption="Model function parameters">
442
						<parameter type="grid">
443
							<option row="1" column="1" colspan="2">
444
								<parameter key="@::INITIAL_STATE" label="Initial state:" type="number" size="small"/>
445
446
							</option>
							<option row="2" column="1">
447
								<parameter key="@::ESTIMATION_MEASURE" label="Estimation measure:" type="alternative" optional="false">
448
449
450
451
452
									<option value="MEAN" default="true"/>
									<option value="MAX_WEIGHT"/>
								</parameter>
							</option>
							<option row="3" column="1">
453
								<parameter key="@::NO_OF_PARTICLES" label="No of particles:" type="number" format="integer+" default="500" notoggle="true"/>
454
455
456
457
458
459
							</option>
						</parameter>
					</frame>
				</option>
				<option>
					<parameter type="helptext">
460
						<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>
461
462
463
					</parameter>
				</option>
			</parameter>
464
			<frame caption="Random number generators">
465
				<parameter type="alternative">
466
467
					<option value="Model noise RNG settings">
						<parameter key="%::ARG#::MODEL_RNG_ALGORITHM" label="RNG algorithm model:" type="alternative" default="XOR" optional="false">
468
							<reference name="RNG_ALGORITHMS"/>
469
							<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>
470
						</parameter>
471
						<parameter key="%::ARG#::MODEL_RNG_DISTRIBUTION" label="RNG distribution model:" type="alternative" default="GAUSS" optional="false">
472
							<reference name="RNG_DISTRIBUTIONS"/>
473
474
475
476
477
478
479
							<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>
480
481
						</parameter>
					</option>
482
483
					<option value="Prior distribution RNG settings">
						<parameter key="%::ARG#::PRIOR_RNG_ALGORITHM" label="RNG algorithm prior:" type="alternative" default="XOR" optional="false">
484
							<reference name="RNG_ALGORITHMS"/>
485
							<help>Prior distribution RNG algorithm.</help>
486
						</parameter>
487
						<parameter key="%::ARG#::PRIOR_RNG_DISTRIBUTION" label="RNG distribution prior:" type="alternative" default="GAUSS" optional="false">
488
							<reference name="RNG_DISTRIBUTIONS"/>
489
490
491
492
493
494
495
							<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>
496
497
						</parameter>
					</option>
498
499
					<option value="Observation noise RNG settings">
						<parameter key="%::ARG#::OBS_RNG_ALGORITHM" label="RNG algorithm obs.:" type="alternative" default="XOR" optional="false">
500
							<reference name="RNG_ALGORITHMS"/>
501
							<help>Observation noise RNG algorithm.</help>
502
						</parameter>
503
						<parameter key="%::ARG#::OBS_RNG_DISTRIBUTION" label="RNG distribution obs.:" type="alternative" default="gauss" optional="false">
504
							<reference name="RNG_DISTRIBUTIONS"/>
505
							<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>
506
						</parameter>
507
508
509
510
511
512
513
514
515
516
						<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>
517
					</option>
518
519
520
521
					<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>
522
					</option>
523
					<help>Set the various random number generators' properties.</help>
524
525
				</parameter>
			</frame>
526
			<frame caption="Expert settings" background_color="#fbfbfb">
527
				<parameter key="@::PATH_RESAMPLING" caption="Perform path resampling" type="checkbox" default="TRUE">
528
					<help>Perform path resampling? This has its drawbacks but is usually necessary.</help>
529
				</parameter>
Mathias Bavay's avatar
Mathias Bavay committed
530
				<parameter key="@::RESAMPLING_PERCENTILE" label="Resampling percentile:" type="number" format="decimal" default="0.5" precision="2">
531
532
533
534
535
					<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>
536
				<parameter key="%::ARG#" type="grid">
537
538
					<option row="2" column="1">
						<parameter key="@::DUMP_PARTICLES_FILE" label="Dump particle paths:" type="file" mode="output"/>
539
					</option>
540
541
					<option row="2" column="2">
						<parameter key="@::DUMP_INTERNAL_STATES_FILE" label="Dump internal states:" type="file" mode="output"/>
542
					</option>
543
544
					<option row="2" column="3">
						<parameter key="@::INPUT_INTERNAL_STATES_FILE" label="Input internal states:" type="file" mode="output"/>
545
546
547
					</option>
				</parameter>
			</frame>
548
			<reference name="ID_RESTRICT"/>
549
			<reference name="TIME_RESTRICT"/>
550
			<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>
551
		</option>
552
553
554
555
	</parametergroup> <!-- end particle filter -->

	<!-- DATA TRANSFORMATION SUPPR -->
	<parametergroup name="FILTER_SUPPR">
556
		<option caption="Suppress data" value="SUPPR" color="#62a388">
557
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
Mathias Bavay's avatar
Mathias Bavay committed
558
				<option value="All"><help>suppress all values for the selected parameter</help></option>
559
				<option value="Frac">
Mathias Bavay's avatar
Mathias Bavay committed
560
					<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>
561
					<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>
562
563
				</option>
				<option value="File">
564
					<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>
565
566
				</option>
			</parameter>
567
			<reference name="ID_RESTRICT"/>
568
			<reference name="TIME_RESTRICT"/>
569
			<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>
570
571
572
573
574
		</option>
	</parametergroup>

	<!-- DATA TRANSFORMATION ADD -->
	<parametergroup name="PROC_ADD">
575
		<option caption="Add offset" value="ADD" color="#62a388">
576
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
577
				<option value="Cst">
578
					<parameter key="%::ARG#::CST" label="CST" type="number" format="decimal" precision="6" optional="false"><help>Add a given offset to the data.</help></parameter>
579
580
				</option>
				<option value="File">
581
					<parameter key="%::ARG#::PERIOD" label="Period:" type="alternative" optional="false">
582
583
						<option caption="Hourly" value="HOURLY"/>
						<option caption="Daily" value="DAILY"/>
584
						<option caption="Monthly" value="MONTHLY"/>
585
					</parameter>
586
					<parameter key="%::ARG#::CORRECTIONS" label="Corrections file:" type="file" mode="input" optional="false"/>
587
					<parameter key="%::ARG#::COLUMN" label="Column:" type="number" format="integer+" default="2" min="2" notoggle="true">
588
						<help>This adds to the data an hourly/daily/monthly offset as read from a specified file (with absolute or relative path).</help>
589
590
591
					</parameter>
				</option>
				<option value="Noise">
592
					<parameter key="%::ARG#::DISTRIBUTION" label="Distribution:" type="alternative" optional="false">
593
594
595
						<option value="uniform"/>
						<option value="normal"/>
					</parameter>
Mathias Bavay's avatar
Mathias Bavay committed
596
					<parameter key="%::ARG#::RANGE" label="Range:" type="number" format="decimal" precision="6" default="5.0" optional="false">
597
598
599
						<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>
600
				<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>
601
			</parameter>
602
			<reference name="ID_RESTRICT"/>
603
			<reference name="TIME_RESTRICT"/>
604
605
606
607
608
		</option>
	</parametergroup>

	<!-- DATA TRANSFORMATION MULT -->
	<parametergroup name="PROC_MULT">
609
		<option caption="Multiply" value="MULT" color="#62a388">
610
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
611
				<option value="Cst">
Mathias Bavay's avatar
Mathias Bavay committed
612
					<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>
613
614
				</option>
				<option value="File">
615
					<parameter key="%::ARG#::PERIOD" label="Period:" type="alternative" optional="false">
616
617
618
619
						<option caption="Hourly" value="HOURLY"/>
						<option caption="Daily" value="DAILY"/>
						<option caption="Monthly" value="MONTHL>"/>
						</parameter>
620
						<parameter key="%::ARG#::CORRECTIONS" label="Corrections file:" type="file" mode="input" optional="false"/>
621
						<parameter key="%::ARG#::COLUMN" label="Column:" type="number" format="integer+" default="2" min="2" notoggle="true">
622
623
624
625
							<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">
626
					<parameter key="%::ARG#::DISTRIBUTION" label="Distribution:" type="alternative" optional="false">
627
628
629
						<option value="uniform"/>
						<option value="normal"/>
					</parameter>
Mathias Bavay's avatar
Mathias Bavay committed
630
					<parameter key="%::ARG#::RANGE" label="Range:" type="number" format="decimal" precision="6" default="5.0" optional="false">
631
632
633
						<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>
634
				<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>
635
			</parameter>
636
			<reference name="ID_RESTRICT"/>
637
			<reference name="TIME_RESTRICT"/>
638
639
640
641
642
		</option>
	</parametergroup>

	<!-- DATA TRANSFORMATION QUANTILE MAPPING -->
	<parametergroup name="PROC_QUANTILEMAPPING">
643
		<option caption="Quantile Mapping" value="QM" color="#62a388">
644
			<parameter key="%::ARG#" label="Quantile Mapping" type="horizontal">
645
				<option>
646
					<parameter key="@::TYPE" label="Type:" type="alternative" optional="false">
647
648
649
650
651
						<o value="ADD"/>
						<o value="MULT"/>
					</parameter>
				</option>
				<option>
652
					<parameter key="@::PERIOD" label="Period:" type="alternative">
653
						<o value="YEARLY"/>
654
						<o value="MONTHLY"/>
655
						<o value="WEEKLY"/>
656
						<o value="DAILY"/>
657
658
659
					</parameter>
				</option>
				<option>
660
					<parameter key="@::CORRECTIONS" label="Corrections:" type="file" mode="input"/>
661
				</option>
662
663
664
665
666
667
				<option>
					<parameter key="@::WRITE_QUANTILES" label="Write out quantiles:" type="alternative" default="FALSE">
						<option value="TRUE"/>
						<option value="FALSE"/>
					</parameter>
				</option>
668
			</parameter>
669
			<reference name="ID_RESTRICT"/>
670
			<reference name="TIME_RESTRICT"/>
671
			<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>
672
673
674
675
676
		</option>
	</parametergroup>

	<!-- PROC AGGREGATE -->
	<parametergroup name="PROC_AGGREGATE">
677
		<option caption="Aggregate" value="AGGREGATE" color="#14691d">
678
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
679
680
681
682
				<option value="MIN"/>
				<option value="MAX"/>
				<option value="MEAN"/>
				<option value="MEDIAN"/>
683
				<option value="STEP_SUM"/>
684
				<option value="WIND_AVG"/>
685
				<help>Aggregation type</help>
686
687
			</parameter>
			<reference name="SOFT_CENTER_MIN"/>
688
			<reference name="ID_RESTRICT"/>
689
			<reference name="TIME_RESTRICT"/>
690
			<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>
691
692
693
694
695
		</option>
	</parametergroup>

	<!-- PROC DEACCUMULATE -->
	<parametergroup name="PROC_DEACCUMULATE">
696
		<option caption="DeAccumulate" value="DEACCUMULATE" color="#14691d">
697
			<reference name="ID_RESTRICT"/>
698
			<reference name="TIME_RESTRICT"/>
699
			<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>
700
		</option>
701
	</parametergroup>
702
703
704

	<!-- PROC EXP_SMOOTHING -->
	<parametergroup name="PROC_EXP_SMOOTHING">
705
		<option caption="Exponential Smoothing" value="EXP_SMOOTHING" color="#14691d">
706
			<reference name="SOFT_CENTER_MIN"/>
Mathias Bavay's avatar
Mathias Bavay committed
707
			<parameter key="%::ARG#::ALPHA" label="Alpha:" type="number" format="decimal" default="0.8" precision="2" min="0" max="1"/>
708
			<reference name="ID_RESTRICT"/>
709
			<reference name="TIME_RESTRICT"/>
710
			<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>
711
712
713
714
715
		</option>
	</parametergroup>

	<!-- PROC WMA_SMOOTHING -->
	<parametergroup name="PROC_WMA_SMOOTHING">
716
		<option caption="Weighted Moving Average Smoothing" value="WMA_SMOOTHING" color="#14691d">
717
			<reference name="SOFT_CENTER_MIN"/>
718
			<reference name="ID_RESTRICT"/>
719
			<reference name="TIME_RESTRICT"/>
720
			<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>
721
722
723
724
725
		</option>
	</parametergroup>

	<!-- PROC IIR -->
	<parametergroup name="PROC_IIR">
726
		<option caption="IIR HP or LP filter" value="IIR" color="#14691d">
727
			<parameter key="%::ARG#::FREQ_RESPONSE" label="Frequency response:" type="alternative" optional="false">
728
729
730
731
				<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
732
			<parameter key="%::ARG#::CUTOFF" label="Cutoff:" type="number" format="decimal" precision="0" min="0" default="${{3*3600}}" unit="s" optional="false">
733
734
735
				<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">
736
737
738
739
740
				<option value="CRITICALLY_DAMPED"/>
				<option value="BUTTERWORTH"/>
				<option value="BESSEL"/>
				<help>Choose the type of filter (see documentation for more).</help>
			</parameter>
741
			<parameter key="%::ARG#::SINGLE_PASS" label="SINGLE_PASS" caption="Force single pass" type="checkbox" default="FALSE">
742
743
				<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>
744
			<reference name="ID_RESTRICT"/>
745
			<reference name="TIME_RESTRICT"/>
746
			<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>
747
748
749
750
751
		</option>
	</parametergroup>

	<!-- PROC UNDERCATCH_WMO -->
	<parametergroup name="PROC_UNDERCATCH_WMO">
752
		<option caption="WMO Undercatch Filter" value="UNDERCATCH_WMO" color="#459a4a">
753
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
754
				<option value="Cst">
Mathias Bavay's avatar
Mathias Bavay committed
755
756
757
					<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"/>
					<parameter key="%::ARG#::T_SNOW" label="T_SNOW" type="number" format="decimal" precision="2" unit="K" optional="false">
758
759
						<help>Snow temperature threshold</help>
					</parameter>
Mathias Bavay's avatar
Mathias Bavay committed
760
					<parameter key="%::ARG#::T_RAIN" label="T_RAIN" type="number" format="decimal" precision="2" unit="K" optional="false">
761
762
763
764
765
766
767
768
769
770
771
772
773
774
						<help>Rain temperature threshold</help>
					</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>
775
			<reference name="ID_RESTRICT"/>
776
			<reference name="TIME_RESTRICT"/>
777
			<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>
778
779
780
781
782
		</option>
	</parametergroup>

	<!-- PROC UNDERCATCH_FORLAND -->
	<parametergroup name="PROC_UNDERCATCH_FORLAND">
783
		<option caption="Forland Undercatch Filter" value="UNDERCATCH_FORLAND" type="string" color="#459a4a">
784
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
785
786
787
788
789
790
791
792
793
				<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>
794
			<reference name="ID_RESTRICT"/>
795
			<reference name="TIME_RESTRICT"/>
796
			<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>
797
798
799
800
801
		</option>
	</parametergroup>

	<!-- PROC UNDERCATCH_HAMON -->
	<parametergroup name="PROC_UNDERCATCH_HAMON">
802
		<option caption="Hamon Undercatch Filter" value="UNDERCATCH_HAMON" type="string" color="#459a4a">
803
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
804
805
806
807
				<option value="Sh"/>
				<option value="UnSh"/>
				<option value="Hellmannsh"/>
			</parameter>
808
			<reference name="ID_RESTRICT"/>
809
			<reference name="TIME_RESTRICT"/>
810
			<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>
811
812
813
814
815
		</option>
	</parametergroup>

	<!-- PROC UNVENTILATED_T -->
	<parametergroup name="PROC_UNVENTILATED_T">
816
		<option caption="Unventilated temperature sensor" value="UNVENTILATED_T" color="#459a4a">
817
			<parameter key="%::ARG#::TYPE" label="Type:" type="alternative" optional="false">
818
				<option value="Suppr">
Mathias Bavay's avatar
Mathias Bavay committed
819
					<parameter key="%::ARG#::THRESH_VW" label="THRESH_VW" type="number" format="decimal" precision="1" unit="m/s">
820
821
822
823
824
						<help>Wind velocity threshold in m/s.</help>
					</parameter>
					<help>Delete all data below a given wind velocity threshold.</help>
				</option>
				<option value="Huwald">
Mathias Bavay's avatar