1
+ # ==============================================================================#
2
+ # NOTE: This script is written such that it is run from 'top' to 'bottom'
3
+ # or programmatically via the Terminal.
4
+ # ('R CMD BATCH --vanilla <script.R>'.)
5
+ # Please do not jump around when running this script.
6
+ # ==============================================================================#
7
+ # NOTE: You MUST temporarily update tcplQuery() by adding a line at the top of the
8
+ # function: print(query).
9
+ # This is because the queries will be captured from output and saved as
10
+ # part of the mocking data.
11
+ # ==============================================================================#
12
+ # # r packages
13
+ devtools :: load_all()
14
+
15
+ library(here )
16
+ library(dplyr )
17
+ library(stringr )
18
+ # ---------------------------#
19
+ # # code to prepare `mc_test` dataset goes here
20
+ # source the user ID, password, host, and database information for connection
21
+ # - NOTE: To replicate one will need to save their own 'db_cred.R', including
22
+ # the 'userid', 'userpwd', 'host', and DB collection via 'ivtdb'.
23
+ source(file = here :: here(" data-raw/db_cred.R" ),verbose = FALSE )
24
+ # connect to the DB
25
+ tcplConf(user = userid ,
26
+ pass = userpwd ,
27
+ host = host ,
28
+ db = ivtdb ,
29
+ drvr = " MySQL" )
30
+
31
+ # pick endpoints and ids
32
+ # load the number of rows and max hitc per aeid
33
+ mc5_counts <- tcplQuery(" SELECT DISTINCT aeid,
34
+ COUNT( aeid ) as n,
35
+ max(hitc) as max_hitc
36
+ FROM invitrodb.mc5 GROUP BY aeid" )
37
+ # filter to only include where at least one sample is active and n < 10
38
+ mc5_counts <- mc5_counts %> % filter(max_hitc > 0.9 & n == 2 )
39
+ # pick one aeid
40
+ aeid <- selected <- mc5_counts [sample(1 : nrow(mc5_counts ),size = 1 ,replace = FALSE ),aeid ]
41
+ # obtain the acid for the example dataset
42
+ acid <- tcplLoadAcid(fld = ' aeid' ,val = aeid )$ acid
43
+ # pick one sample/row from each level (lvl 3 contains ids back to lvl 0 and lvl 6 does back to lvl 4)
44
+ l3 <- tcplLoadData(lvl = 3 , fld = " acid" , val = acid )
45
+ l3_sample1 <- l3 [sample(1 : nrow(l3 ),size = 1 ,replace = FALSE )]
46
+ l3_sample2 <- l3 [sample(1 : nrow(l3 ),size = 2 ,replace = FALSE )]
47
+ l5 <- tcplLoadData(lvl = 5 , fld = " aeid" , val = aeid , add.fld = FALSE )
48
+ l5_sample1 <- l5 [sample(1 : nrow(l5 ),size = 1 ,replace = FALSE )]
49
+ l5_sample2 <- l5 [sample(1 : nrow(l5 ),size = 2 ,replace = FALSE )]
50
+ l6 <- tcplLoadData(lvl = 6 , fld = " aeid" , val = aeid , add.fld = FALSE )
51
+ l6_sample1 <- l6 [sample(1 : nrow(l6 ),size = 1 ,replace = FALSE )]
52
+ l6_sample2 <- l6 [sample(1 : nrow(l6 ),size = 2 ,replace = FALSE )]
53
+ l7 <- tcplLoadData(lvl = 7 , fld = " aeid" , val = aeid , add.fld = FALSE )
54
+ l7_sample1 <- l7 [sample(1 : nrow(l7 ),size = 1 ,replace = FALSE )]
55
+ l7_sample2 <- l7 [sample(1 : nrow(l7 ),size = 2 ,replace = FALSE )]
56
+ # pick compare.val endpoints and ids
57
+ # be sure to only allow to choose from endpoints with the same number of samples
58
+ mc5_counts <- filter(mc5_counts , n == mc5_counts [aeid == selected ]$ n & aeid != selected )
59
+ compare.aeid <- mc5_counts [sample(1 : nrow(mc5_counts ),size = 1 ,replace = FALSE ),aeid ]
60
+ compare.l5 <- tcplLoadData(lvl = 5 , fld = " aeid" , val = compare.aeid )
61
+ compare.l5_sample1 <- compare.l5 [sample(1 : nrow(compare.l5 ),size = 1 ,replace = FALSE )]
62
+ compare.l5_sample2 <- compare.l5 [sample(1 : nrow(compare.l5 ),size = 2 ,replace = FALSE )]
63
+
64
+
65
+ get_query_data <- function (lvl , fld , val , compare.val = NULL , add.fld = TRUE , func = " tcplLoadData" ) {
66
+ message(compare.val )
67
+ if (func == " tcplLoadData" ) {
68
+ # IMPORTANT || MUST ADD TEMPORARY LINE TO TCPLQUERY --------------------------
69
+ # add temporary line to top of tcplQuery to get the query string: print(query)
70
+ query_strings <- capture.output(result <- tcplLoadData(lvl = lvl , fld = fld , val = val , add.fld = add.fld ))
71
+ } else if (func == " tcplPlot" ) {
72
+ query_strings <- capture.output(result <- tcplPlot(type = " mc" , fld = fld ,
73
+ val = val , compare.val = compare.val ,
74
+ output = " pdf" , multi = TRUE , flags = TRUE ,
75
+ fileprefix = " temp_tcplPlot" ))
76
+ file.remove(stringr :: str_subset(list.files(), " ^temp_tcplPlot" )) # clean up
77
+ }
78
+
79
+ query_strings <- unique(gsub(" \\\\ " , " \\\" " , gsub(" \" " , " " , gsub(" \\\\ n" , " \\\n " , gsub(" \\ [1\\ ] " , " " , query_strings )))))
80
+
81
+ # use queries to save data
82
+ dat <- lapply(query_strings , function (query_string ) {
83
+ return (tcplQuery(query_string ))
84
+ })
85
+ names(dat ) <- query_strings
86
+
87
+ # also store fld and val in list object for use in test case
88
+ dat [fld ] <- val
89
+ if (! is.null(compare.val )) dat [sprintf(" compare.%s" , fld )] <- compare.val
90
+ return (dat )
91
+
92
+ }
93
+
94
+
95
+ # to add more tests with new/different data to test-tcplLoadData.R, add lines below and run script
96
+ mc_test <- list (
97
+ tcplConfQuery = tcplQuery(" SHOW VARIABLES LIKE 'max_allowed_packet'" ),
98
+ mc0_by_m0id = get_query_data(lvl = 0 , fld = " m0id" , val = l3_sample1 $ m0id ),
99
+ mc0_by_acid = get_query_data(lvl = 0 , fld = " acid" , val = acid ),
100
+ mc1_by_m1id = get_query_data(lvl = 1 , fld = " m1id" , val = l3_sample1 $ m1id ),
101
+ mc1_by_acid = get_query_data(lvl = 1 , fld = " acid" , val = acid ),
102
+ mc2_by_m2id = get_query_data(lvl = 2 , fld = " m2id" , val = l3_sample1 $ m2id ),
103
+ mc2_by_acid = get_query_data(lvl = 2 , fld = " acid" , val = acid ),
104
+ mc3_by_m3id = get_query_data(lvl = 3 , fld = " m3id" , val = l3_sample1 $ m3id ),
105
+ mc3_by_aeid = get_query_data(lvl = 3 , fld = " aeid" , val = aeid ),
106
+ mc4_by_m4id = get_query_data(lvl = 4 , fld = " m4id" , val = l5_sample1 $ m4id ),
107
+ mc4_by_aeid = get_query_data(lvl = 4 , fld = " aeid" , val = aeid , add.fld = FALSE ),
108
+ mc5_by_m5id = get_query_data(lvl = 5 , fld = " m5id" , val = l5_sample1 $ m5id ),
109
+ mc5_by_aeid = get_query_data(lvl = 5 , fld = " aeid" , val = aeid , add.fld = FALSE ),
110
+ mc6_by_m6id = get_query_data(lvl = 6 , fld = " m6id" , val = l6_sample1 $ m6id ),
111
+ mc6_by_aeid = get_query_data(lvl = 6 , fld = " aeid" , val = aeid ),
112
+ mc7_by_m7id = get_query_data(lvl = 7 , fld = " m7id" , val = l7_sample1 $ m7id ),
113
+ mc7_by_aeid = get_query_data(lvl = 7 , fld = " aeid" , val = aeid ),
114
+ mcagg_by_aeid = get_query_data(lvl = " agg" , fld = " aeid" , val = aeid ),
115
+ plot_single_m4id = get_query_data(fld = " m4id" ,
116
+ val = l5_sample1 $ m4id ,
117
+ func = " tcplPlot" ),
118
+ plot_multiple_m4id = get_query_data(fld = " m4id" ,
119
+ val = list (l5_sample2 $ m4id ),
120
+ func = " tcplPlot" ),
121
+ plot_single_aeid = get_query_data(fld = " aeid" ,
122
+ val = aeid ,
123
+ func = " tcplPlot" ),
124
+ plot_multiple_aeid = get_query_data(fld = " aeid" ,
125
+ val = list (c(aeid , compare.aeid )),
126
+ func = " tcplPlot" ),
127
+ plot_single_spid = get_query_data(fld = c(" spid" , " aeid" ),
128
+ val = list (l5_sample1 $ spid , aeid ),
129
+ func = " tcplPlot" ),
130
+ plot_multiple_spid = get_query_data(fld = c(" spid" , " aeid" ),
131
+ val = list (l5_sample2 $ spid , aeid ),
132
+ func = " tcplPlot" ),
133
+ plot_single_m4id_compare = get_query_data(fld = " m4id" ,
134
+ val = l5_sample1 $ m4id ,
135
+ compare.val = compare.l5_sample1 $ m4id ,
136
+ func = " tcplPlot" ),
137
+ plot_multiple_m4id_compare = get_query_data(fld = " m4id" ,
138
+ val = list (l5_sample2 $ m4id ),
139
+ compare.val = list (compare.l5_sample2 $ m4id ),
140
+ func = " tcplPlot" ),
141
+ plot_single_aeid_compare = get_query_data(fld = " aeid" ,
142
+ val = aeid ,
143
+ compare.val = compare.aeid ,
144
+ func = " tcplPlot" ),
145
+ plot_multiple_aeid_compare = get_query_data(fld = " aeid" ,
146
+ val = list (c(aeid , compare.aeid )),
147
+ compare.val = list (c(compare.aeid , aeid )),
148
+ func = " tcplPlot" ),
149
+ plot_single_spid_compare = get_query_data(fld = c(" spid" , " aeid" ),
150
+ val = list (l5_sample1 $ spid , aeid ),
151
+ compare.val = list (compare.l5_sample1 $ spid , compare.aeid ),
152
+ func = " tcplPlot" ),
153
+ plot_multiple_spid_compare = get_query_data(fld = c(" spid" , " aeid" ),
154
+ val = list (l5_sample2 $ spid , aeid ),
155
+ compare.val = list (compare.l5_sample2 $ spid , compare.aeid ),
156
+ func = " tcplPlot" )
157
+ )
158
+ # ---------------------------#
159
+ # # save the data
160
+ usethis :: use_data(mc_test , overwrite = TRUE )
161
+ # ---------------------------#
0 commit comments