Skip to content

SCT dual with FG

Cristian Lussana edited this page Mar 29, 2021 · 2 revisions

Work in progress

Returned values are: the p-vector of the quality flags

flag description
-999 missing flag (observation not checked)
0 good observation
1 bad observation
11 isolated observation, it is the only observation inside the inner circle
12 isolated observation, less than num_min_outer observations inside outer circle

The constants to keep in mind are:

  • M, the number of observation providers
  • B, the number of background fields (see --fg.files)
  • N, the total number of tests. Each test is applied to just one background field. The N-vector sct_fglab.fg matches the tests with the background fields. Example: sct_fglab.fg equals to (1,1,2), then: three tests are defined; the first two tests will make use of the first background file; the third test will make use of the second background field. The order of the background fields is given by the input order in fg.file

The list of parameters is (type vector = it is possible to specify a sequence of buddy checks):

parameter description type
sct_fg_dual do it, true or false logical
code.sct_fg_dual code identifying bad observation flagged by the test scalar
i.sct_fg_dual number of repetitions of the entire sequence of checks scalar
break.sct_fg_dual break the loop over the tests if less than this number of observations has been flagged scalar
doit.sct_fg_dual specify on a provider basis if the observations have to be tested (0=no; 1=yes) M-vector
prio.sct_fg_dual specify on a provider basis the priorities the observations have (the smaller the number, the higher the piority) M-vector
fg_event_thresholds.sct_dual event threshold used to divide the first-guess dataset into "yes, the event happend" or "no, the event did not happen". Either a single value or one value for each test AND provider (e.g. N tests, M providers; then N*M values; order is: val-1 (test-1,provider-1), val-2 (test-1,provider-2), val-3 (test-1,provider-3), ... ). N-vector
event_thresholds.sct_dual event threshold used to divide the dataset into "yes, the event happend" or "no, the event did not happen". Either a single value or one value for each test AND provider (e.g. N tests, M providers; then N*M values; order is: val-1 (test-1,provider-1), val-2 (test-1,provider-2), val-3 (test-1,provider-3), ... ). (N*M)-vector
conditions.sct_dual condition used to divide the dataset into "yes, the event happend" or "no, the event did not happen". One of: "Eq", "Gt", "Geq", "Lt", "Leq". Either one value valid for all N or N values. N-vector
thr_relinfo.sct_dual SCT dual threshold for the relative information content (typically a number from 0 to 1). Useful to avoid flagging observations in areas where there is a transition between "yes" and "no". Either a single value or one value for each test AND provider (e.g. N tests, M providers; then N*M values; order is: val-1 (test-1,provider-1), val-2 (test-1,provider-2), val-3 (test-1,provider-3), ... ). (N*M)-vector
inner_radius.sct_fg_dual radius (m) of the inner circle N-vector
outer_radius.sct_fg_dual radius (m) of the outer circle N-vector
fg_lab.sct_fg_dual labels identifying which of the background fields have to be used in the test N-vector
tpos.sct_fg_dual threshold when the observed value is greater than the background (N*M)-vector
tneg.sct_fg_dual threshold when the observed value is smaller than the background (N*M)-vector
eps2.sct relative precision (N*M)-vector
num_min_outer.sct_fg_dual minimum number of observations required inside the outer circle N-vector
num_max_outer.sct_fg_dual maximum number of observations used N-vector
min_horizontal_scale.sct_fg_dual lower limit for the horizontal decorrelation length scale in OI correlation function N-vector
max_horizontal_scale.sct_fg_dual upper limit for the horizontal decorrelation length scale in OI correlation function N-vector
kth_closest_obs_horizontal_scale.sct_fg_dual horizontal decorrelation length scale in OI correlation function is the average distance between an observation location and the k-th closest location N-vector
vertical_scale.sct_fg_dual vertical decorrelation length scale in OI correlation function N-vector

R-examples

#!/usr/bin/env Rscript

# Test TITAN for hourly precipitation

system("export TITANR_PATH=$HOME/projects/titanlab/R/functions;../titan.r --input.files data/observation_test_rr1_prid01_p02000_zero003percent.txt data/observation_test_rr1_prid02_p00100_zero001percent.txt --output.file data/out.txt --config.files ini/rr1_test_titan.ini ini/rr1_sct_fg_dual.ini --fg.files ini/background_test_rr1_det.ini ini/background_test_rr1_ens.ini")
conf <- list(
# M = 2 observation providers
#------------------------------------------------------------------------------

             sct_fg_dual = T,
             code.sct_fg_dual = 4,
             i.sct_fg_dual = 10,
             break.sct_fg_dual = 0,

# N=2 tests
             fglab.sct_fg_dual = c( 1, 2), 

# M vectors ((either 1 value or M) 
             doit.sct_fg_dual = 1,
             prio.sct_fg_dual = c( 100, 1),

# N = 2 sct_dual checks (either 1 value or N)
             inner_radius.sct_fg_dual = 10000,
             outer_radius.sct_fg_dual = 40000,
             num_min_outer.sct_fg_dual = 3,
             num_max_outer.sct_fg_dual = 50,
             min_horizontal_scale.sct_fg_dual = 1000,
             max_horizontal_scale.sct_fg_dual = 25000,
             kth_closest_obs_horizontal_scale.sct_fg_dual = 3,
             vertical_scale.sct_fg_dual = 200000,
             conditions.sct_fg_dual = "Gt",

# M * N (either 1 value or M*N)
             thr_relinfo.sct_fg_dual = 0.6,
#                                              prid1 prid2                
             event_thresholds.sct_fg_dual = c(  0.1, 0.1,
                                                0.1, 0.1),
#                                                
             fg_event_thresholds.sct_fg_dual = c( 0.1,
                                                  0.1)

            )