Qc2 Flag Specification

DRAFT

fw

For flagging spatial analysis of the available observation data.

Controlflag Setting	Description
fw=0	Ikke kontrollert
fw=1	Kontrollert. Funnet i orden
fw=2	Kontrollert. Observert verdis avvik fra beregnet verdi er større enn høy testverdi
fw=3	Kontrollert. Observert verdis avvik fra beregnet verdi er mindre enn lav testverdi
fw=4	Kontrollert. Observert verdis avvik fra beregnet verdi er større enn høyeste testverdi
fw=5	Kontrollert. Observert verdis avvik fra beregnet verdi er mindre enn laveste testverdi
fw=6	Original verdi mangler eller er forkastet av en annen QC2-kontroll. Interpolert/korrigert med beregnet verdi

(fw=7 Vi vil vurdere om interpolasjonsmetodikken (fw-kontrollen) selv kan forkaste en verdi. Foreløpig er vi litt tvilende til det, men holder muligheten åpen.)

The beregnet verdi/calculated value is the model value provided by th Qc2 algorithm used. The algorithm used is recorded in the “cfailed” string.

... To do: parse all flag group responses and document.

Regression testing to-do

Observation

Under https://kvalobs.wiki.met.no/doku.php?id=kvoss:system:qc2:flag:regression there are a lot of observations where useinfo(7) has been changed from a positive value (3 or 4 - observasjon er meldt for tidlig/sent) into 0.

Analysis

Assumed that some kind of resetting of useinfo flags has occurred before running “setUseFlags(const kvControlInfo& cinfo) with the existing Qc2 logic turned on”? If so, useinfo(7)=3,4 should not be reset, because the only place where these values are set is when decoding the original message (the values are set by the decoder).

The only values for useinfo(7) in the Kvalobs database are 0, 3 and 4.

Confirmation

Yes ... the input to setUseFlags in the tests was the value of the controlinfo in order to see what useinfo was generated without any prior initialisation of the useinfo.

Next Step

Rerun the regression tests with initialised valid useinfo ... and then compare the results with previous data.

setUseFlags code change

Regarding the setUseFlags anticipation of the setting of user flags in response to QC2 controls, most of the logic is commented out in the operational code, as indicated below:

bool kvControlInfo::qc2dDone() const
{
return false;//flag( f_fs ) or flag( f_ftime ) or flag( f_fw ) or
flag( f_fstat );
}
...
bool kvControlInfo::qc2mDone() const
{
return false;//flag( f_fclim ) or flag( f_fd );
}
"

Additional Code Change Required

An additional change is to alter the check for flag f_fs being set into checking for the specific values of f_s which QC2 alone is able to set. fs=1,2,3 should not imply qc2dDone=true, because fs=1,2,3 is set by QC1, not QC2. Similarly for the flag f_fd in qc2mDone.

Working Note

The Flaggdokumentet update with the new values for fw implies changes in setting of useinfo(2) also and will therefore take place after the implementation of 1272 that also involves useinfo(2).