Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
kvalobs:kvoss:system:qc2:test:algorithms:singlemissingpoint [2010-06-21 01:11:42] paule |
kvalobs:kvoss:system:qc2:test:algorithms:singlemissingpoint [2022-05-31 09:29:32] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | |||
+ | ====== Useinfo Controls ====== | ||
+ | |||
+ | **Specification** | ||
+ | |||
+ | Proposal: | ||
+ | |||
+ | * 8 > useinfo(0) > 0 (some qc has been done) | ||
+ | * useinfo(1) = 0 (ok obs time) | ||
+ | * useinfo(2) < 2 (original is ok or probably correct) | ||
+ | * useinfo(3) < 3 (original unchanged and manually corrected or interpolated) | ||
+ | |||
+ | Discussion: | ||
+ | |||
+ | The condition on useinfo(0) and useinfo(2) looks ok. Disregarding | ||
+ | observations with useinfo(2)=2 ("Very suspicious" | ||
+ | (although not self-evident). If useinfo(2) < 2, then useinfo(3) will | ||
+ | necessarily be 0, so no need to look at useinfo(3). | ||
+ | |||
+ | Suggest not to take useinfo(1) into account either. For some | ||
+ | observation types arriving 11 minutes after termin time is enough to get | ||
+ | useinfo(1)=1, | ||
+ | however, consider looking instead at useinfo(7), and reject the | ||
+ | observation if " | ||
+ | Someone else than me has to decide whether these flag values should | ||
+ | disqualify the observation from being used in the QC2 interpolation. But | ||
+ | this can wait, since these flag values are very rare - no examples during last 2 days. | ||
+ | |||
+ | **Sample cfg file constructed** | ||
+ | |||
+ | < | ||
+ | kvalobs@pak: | ||
+ | #[Specific Runs] | ||
+ | #Last 24hours ..... | ||
+ | #Daily Run .... | ||
+ | # / | ||
+ | |||
+ | # Performs simple linear interpolation for a single point replacement. | ||
+ | AlgoCode=10 | ||
+ | # | ||
+ | RunAtHour=23 | ||
+ | RunAtMinute=18 | ||
+ | |||
+ | #[Time Range] | ||
+ | Start_YYYY=2036 | ||
+ | Start_MM=2 | ||
+ | Start_DD=28 | ||
+ | Start_hh=0 | ||
+ | Start_mm=0 | ||
+ | Start_ss=0 | ||
+ | |||
+ | End_YYYY=2036 | ||
+ | End_MM=4 | ||
+ | End_DD=1 | ||
+ | End_hh=0 | ||
+ | End_mm=0 | ||
+ | End_ss=0 | ||
+ | |||
+ | #[Time Step] | ||
+ | # | ||
+ | |||
+ | #[Specific Data Type and Paramters ids etc.] | ||
+ | ParamId=211 | ||
+ | MaxParamId=215 | ||
+ | MinParamId=213 | ||
+ | # | ||
+ | # Only write back the result if not prviously controlled | ||
+ | W_fhqc=0 | ||
+ | |||
+ | #Flag to set if value is corrected | ||
+ | S_ftime=1 | ||
+ | change_fmis=3-> | ||
+ | change_fmis=0-> | ||
+ | #Flag to check if the algorithm shall be applied ... | ||
+ | Not_ftime=1 | ||
+ | Not_fnum=6 | ||
+ | #NotU_0=7 | ||
+ | U_0=1 | ||
+ | U_0=2 | ||
+ | U_0=3 | ||
+ | U_0=4 | ||
+ | U_0=5 | ||
+ | U_0=6 | ||
+ | U_0=7 | ||
+ | NotU_2=2 | ||
+ | #NotU_7=1 | ||
+ | #NotU_7=2 | ||
+ | #NotU_7=5 | ||
+ | #NotU_7=6 | ||
+ | kvalobs@pak: | ||
+ | </ | ||
+ | |||
+ | **Results** | ||
+ | |||
+ | |||
+ | {{kvalobs: | ||
+ | |||
+ | NB The above is on canned test data (same as below) now need to run on real setup. | ||
+ | |||
+ | |||
+ | ====== Tests On Other Parameters ====== | ||
+ | |||
+ | All the following used " | ||
+ | |||
+ | {{kvalobs: | ||
+ | {{kvalobs: | ||
+ | {{kvalobs: | ||
+ | {{kvalobs: | ||
+ | {{kvalobs: | ||
+ | {{kvalobs: | ||
+ | {{kvalobs: | ||
+ | |||
+ | The above results were obtained using the following test data | ||
+ | |||
+ | ^ {{kvalobs: | ||
+ | |||
+ | Tests may be conducted thus: | ||
+ | |||
+ | |Clean old data from data-base |DELETE FROM data WHERE obstime>' | ||
+ | |Load data ... |< | ||
+ | |Run algorithms |e.g. example configuration files | | ||
+ | | | | ||
+ | | | | ||
+ | |Extract results | < | ||
+ | | |< | ||
+ | |Plot, analyse results ... | | | ||
+ | |||
====== Single Missing Point ====== | ====== Single Missing Point ====== | ||
Line 7: | Line 134: | ||
Test data has been taken from March 2008. On each day for all stations the " | Test data has been taken from March 2008. On each day for all stations the " | ||
- | {{: | + | {{kvalobs: |
- | {{: | + | {{kvalobs: |
Good results are obtained. Note the points at -99.9 arise due to this value being present in the original data record (and they are not a result of the algorithm). | Good results are obtained. Note the points at -99.9 arise due to this value being present in the original data record (and they are not a result of the algorithm). | ||
Line 21: | Line 148: | ||
Running the new algorithm on the same data as above, the algorithm first tries to do a Max and Min average. If this is not possible a linear interpolation is performed across the gap. First results: | Running the new algorithm on the same data as above, the algorithm first tries to do a Max and Min average. If this is not possible a linear interpolation is performed across the gap. First results: | ||
- | {{: | + | {{kvalobs: |
- | {{: | + | {{kvalobs: |
It is clear that in the above graph there are additional points that also show good agreement with the original values. There are also many original values that are unphysical (e.g. high temperatures in March and filtering on flags has also to be applid so that these cases are not included). Examples of high temperatures in the database: | It is clear that in the above graph there are additional points that also show good agreement with the original values. There are also many original values that are unphysical (e.g. high temperatures in March and filtering on flags has also to be applid so that these cases are not included). Examples of high temperatures in the database: | ||
Line 34: | Line 161: | ||
Ok, lets filter out results where control(4)=6 ... fnum=6. This gives the following improved result, but the algorithm still appears to act on some temperatures that are too high and should not be corrected by interpolating between the times before and after, that are also too high!?! | Ok, lets filter out results where control(4)=6 ... fnum=6. This gives the following improved result, but the algorithm still appears to act on some temperatures that are too high and should not be corrected by interpolating between the times before and after, that are also too high!?! | ||
- | {{: | + | {{kvalobs: |
Configuration File Used: | Configuration File Used: | ||
Line 113: | Line 240: | ||
Applying this algorithm and controls: | Applying this algorithm and controls: | ||
- | {{: | + | {{kvalobs: |
- | + | {{kvalobs: | |
- | {{: | + | |
< | < | ||
Line 123: | Line 249: | ||
Applying the filter: do not include fhqclevel=0, | Applying the filter: do not include fhqclevel=0, | ||
- | {{: | + | {{kvalobs: |
+ | |||
+ | The corresponding configuration file to produce the above result: | ||
+ | |||
+ | < | ||
+ | # Performs simple linear interpolation for a single point replacement. | ||
+ | AlgoCode=10 | ||
+ | # | ||
+ | RunAtHour=0 | ||
+ | RunAtMinute=42 | ||
+ | |||
+ | #[Time Range] | ||
+ | Start_YYYY=2036 | ||
+ | Start_MM=2 | ||
+ | Start_DD=28 | ||
+ | Start_hh=0 | ||
+ | Start_mm=0 | ||
+ | Start_ss=0 | ||
+ | |||
+ | End_YYYY=2036 | ||
+ | End_MM=4 | ||
+ | End_DD=1 | ||
+ | End_hh=0 | ||
+ | End_mm=0 | ||
+ | End_ss=0 | ||
+ | |||
+ | #[Time Step] | ||
+ | #Step_hh=12 | ||
+ | |||
+ | #[Specific Data Type and Paramters ids etc.] | ||
+ | ParamId=211 | ||
+ | MaxParamId=215 | ||
+ | MinParamId=213 | ||
+ | # | ||
+ | # Only write back the result if not prviously controlled | ||
+ | W_fhqc=0 | ||
+ | |||
+ | CfailedString=" | ||
+ | |||
+ | #Flag to set if value is corrected | ||
+ | S_ftime=1 | ||
+ | change_fmis=3-> | ||
+ | change_fmis=0-> | ||
+ | #Flag to check if the algorithm shall be applied ... i.e. the following are restrictions: | ||
+ | A_ftime=1 | ||
+ | A_fnum=6 | ||
+ | A_fpre=6 | ||
+ | A_fpre=7 | ||
+ | A_fhqc=A | ||
+ | #V_fpre=1 | ||
+ | #V_fpre=2 | ||
+ | A_fqclevel=0 | ||
+ | </ | ||
TODO: Use obs_pgm to generate better station list ... (currently all stations used) | TODO: Use obs_pgm to generate better station list ... (currently all stations used) |