comparison w4mcorcov_calc.R @ 2:a06344808ffc draft

planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit ce5178ce51b80f242d24db555044e6afc530ac99
author eschen42
date Sat, 11 Nov 2017 00:08:20 -0500
parents e25fd8a13665
children 61935618f92c
comparison
equal deleted inserted replaced
1:e25fd8a13665 2:a06344808ffc
5 } 5 }
6 6
7 #### OPLS-DA 7 #### OPLS-DA
8 algoC <- "nipals" 8 algoC <- "nipals"
9 9
10 do_detail_plot <- function(x_dataMatrix, x_predictor, x_is_match, x_algorithm, x_prefix, x_show_labels, x_progress = print, x_env) { 10 do_detail_plot <- function(x_dataMatrix, x_predictor, x_is_match, x_algorithm, x_prefix, x_show_labels, x_show_loado_labels, x_progress = print, x_env) {
11 off <- function(x) if (x_show_labels) x else 0 11 off <- function(x) if (x_show_labels == "0") 0 else x
12 salience_lookup <- x_env$salience_lookup
13 salient_rcv_lookup <- x_env$salient_rcv_lookup
14 # x_progress("head(salience_df): ", head(salience_df))
15 # x_progress("head(salience): ", head(salience))
16 if (x_is_match && ncol(x_dataMatrix) > 0 && length(unique(x_predictor))> 1) { 12 if (x_is_match && ncol(x_dataMatrix) > 0 && length(unique(x_predictor))> 1) {
17 my_oplsda <- opls( 13 my_oplsda <- opls(
18 x = x_dataMatrix 14 x = x_dataMatrix
19 , y = x_predictor 15 , y = x_predictor
20 , algoC = x_algorithm 16 , algoC = x_algorithm
37 max_x <- max(covariance) 33 max_x <- max(covariance)
38 lim_x <- max(sapply(X=c(min_x, max_x), FUN=abs)) 34 lim_x <- max(sapply(X=c(min_x, max_x), FUN=abs))
39 covariance <- covariance / lim_x 35 covariance <- covariance / lim_x
40 lim_x <- 1.2 36 lim_x <- 1.2
41 main_label <- sprintf("%s for levels %s versus %s", x_prefix, fctr_lvl_1, fctr_lvl_2) 37 main_label <- sprintf("%s for levels %s versus %s", x_prefix, fctr_lvl_1, fctr_lvl_2)
42 # print("main_label")
43 # print(main_label)
44 main_cex <- min(1.0, 46.0/nchar(main_label)) 38 main_cex <- min(1.0, 46.0/nchar(main_label))
45 # "It is generally accepted that a variable should be selected if vj>1, [27–29], 39 # "It is generally accepted that a variable should be selected if vj>1, [27–29],
46 # but a proper threshold between 0.83 and 1.21 can yield more relevant variables according to [28]." 40 # but a proper threshold between 0.83 and 1.21 can yield more relevant variables according to [28]."
47 # (Mehmood 2012 doi:10.1186/1748-7188-6-27) 41 # (Mehmood 2012 doi:10.1186/1748-7188-6-27)
48 vipco <- pmax(0, pmin(1,(vip4p-0.83)/(1.21-0.83))) 42 vipco <- pmax(0, pmin(1,(vip4p-0.83)/(1.21-0.83)))
49 alpha <- 0.1 + 0.4 * vipco 43 alpha <- 0.1 + 0.4 * vipco
50 red <- as.numeric(correlation < 0) * vipco 44 red <- as.numeric(correlation > 0) * vipco
51 blue <- as.numeric(correlation > 0) * vipco 45 blue <- as.numeric(correlation < 0) * vipco
52 minus_cor <- -correlation 46 plus_cor <- correlation
53 minus_cov <- -covariance 47 plus_cov <- covariance
54 # cex <- salience_lookup(feature = names(minus_cor))
55 # cex <- 0.25 + (1.25 * cex / max(cex))
56 cex <- 0.75 48 cex <- 0.75
57 plot( 49 plot(
58 y = minus_cor 50 y = plus_cor
59 , x = minus_cov 51 , x = plus_cov
60 , type="p" 52 , type="p"
61 , xlim=c(-lim_x, lim_x + off(0.1)) 53 , xlim=c(-lim_x, lim_x + off(0.2))
62 , ylim=c(-1.0 - off(0.1), 1.0) 54 , ylim=c(-1.0 - off(0.2), 1.0)
63 , xlab = sprintf("relative covariance(feature,t1)") 55 , xlab = sprintf("relative covariance(feature,t1)")
64 , ylab = sprintf("correlation(feature,t1)") 56 , ylab = sprintf("correlation(feature,t1)")
65 , main = main_label 57 , main = main_label
66 , cex.main = main_cex 58 , cex.main = main_cex
67 , cex = cex 59 , cex = cex
68 , pch = 16 60 , pch = 16
69 , col = rgb(blue = blue, red = red, green = 0, alpha = alpha) 61 , col = rgb(blue = blue, red = red, green = 0, alpha = alpha)
70 ) 62 )
71 low_x <- -0.7 * lim_x 63 low_x <- -0.7 * lim_x
72 high_x <- 0.7 * lim_x 64 high_x <- 0.7 * lim_x
73 text(x = low_x, y = -0.15, labels = fctr_lvl_1) 65 text(x = low_x, y = -0.05, labels = fctr_lvl_1, col = "blue")
74 text(x = high_x, y = 0.15, labels = fctr_lvl_2) 66 text(x = high_x, y = 0.05, labels = fctr_lvl_2, col = "red")
75 if (x_show_labels) { 67 if ( x_show_labels != "0" ) {
68 my_loadp <- loadp
69 my_loado <- loado
70 names(my_loadp) <- tsv1$featureID
71 names(my_loado) <- tsv1$featureID
72 if ( x_show_labels == "ALL" ) {
73 n_labels <- length(loadp)
74 } else {
75 n_labels <- as.numeric(x_show_labels)
76 }
77 n_labels <- min( n_labels, (1 + length(loadp)) / 2 )
78 labels_to_show <- c(
79 names(head(sort(my_loadp),n = n_labels))
80 , names(tail(sort(my_loadp),n = n_labels))
81 )
82 if ( x_show_loado_labels ) {
83 labels_to_show <- c(
84 labels_to_show
85 , names(head(sort(my_loado),n = n_labels))
86 , names(tail(sort(my_loado),n = n_labels))
87 )
88 }
89 labels <- unname(sapply( X = tsv1$featureID, FUN = function(x) if( x %in% labels_to_show ) x else "" ))
76 text( 90 text(
77 y = minus_cor - 0.013 91 y = plus_cor - 0.013
78 , x = minus_cov + 0.020 92 , x = plus_cov + 0.020
79 , cex = 0.3 93 , cex = 0.3
80 , labels = tsv1$featureID 94 , labels = labels
81 , col = rgb(blue = blue, red = red, green = 0, alpha = 0.2 + 0.8 * alpha) 95 , col = rgb(blue = blue, red = red, green = 0, alpha = 0.2 + 0.8 * alpha)
82 , srt = -30 # slant 30 degrees downward 96 , srt = -30 # slant 30 degrees downward
83 , adj = 0 # left-justified 97 , adj = 0 # left-justified
84 ) 98 )
85 } 99 }
153 # extract the levels from the environment 167 # extract the levels from the environment
154 originalLevCSV <- levCSV <- calc_env$levCSV 168 originalLevCSV <- levCSV <- calc_env$levCSV
155 # matchingC is one of { "none", "wildcard", "regex" } 169 # matchingC is one of { "none", "wildcard", "regex" }
156 matchingC <- calc_env$matchingC 170 matchingC <- calc_env$matchingC
157 labelFeatures <- calc_env$labelFeatures 171 labelFeatures <- calc_env$labelFeatures
172 labelOrthoFeatures <- calc_env$labelOrthoFeatures
158 173
159 # arg/env checking 174 # arg/env checking
160 if (!(facC %in% names(smpl_metadata))) { 175 if (!(facC %in% names(smpl_metadata))) {
161 failure_action(sprintf("bad parameter! Factor name '%s' not found in sampleMetadata", facC)) 176 failure_action(sprintf("bad parameter! Factor name '%s' not found in sampleMetadata", facC))
162 return ( FALSE ) 177 return ( FALSE )
163 } 178 }
164 179
180 mz <- vrbl_metadata$mz
181 names(mz) <- vrbl_metadata$variableMetadata
182 mz_lookup <- function(feature) unname(mz[feature])
183
184 rt <- vrbl_metadata$rt
185 names(rt) <- vrbl_metadata$variableMetadata
186 rt_lookup <- function(feature) unname(rt[feature])
187
165 # calculate salience_df as data.frame(feature, max_level, max_median, max_rcv, mean_median, salience, salient_rcv) 188 # calculate salience_df as data.frame(feature, max_level, max_median, max_rcv, mean_median, salience, salient_rcv)
166 salience_df <- calc_env$salience_df <- w4msalience( 189 salience_df <- calc_env$salience_df <- w4msalience(
167 data_matrix = data_matrix 190 data_matrix = data_matrix
168 , sample_class = smpl_metadata[,facC] 191 , sample_class = smpl_metadata[,facC]
169 , failure_action = failure_action 192 , failure_action = failure_action
172 my_df <- data.frame( 195 my_df <- data.frame(
173 featureID = salience_df$feature 196 featureID = salience_df$feature
174 , salientLevel = salience_df$max_level 197 , salientLevel = salience_df$max_level
175 , salientRCV = salience_df$salient_rcv 198 , salientRCV = salience_df$salient_rcv
176 , salience = salience_df$salience 199 , salience = salience_df$salience
200 , mz = mz_lookup(salience_df$feature)
201 , rt = rt_lookup(salience_df$feature)
177 ) 202 )
178 my_df[order(-my_df$salience),] 203 my_df[order(-my_df$salience),]
179 }) 204 })
180 salience <- salience_df$salience 205
181 names(salience) <- salience_df$feature
182 salience_lookup <- calc_env$salience_lookup <- function(feature) unname(salience[feature])
183 salient_rcv <- salience_df$salient_rcv
184 names(salient_rcv) <- salience_df$feature
185 salient_rcv_lookup <- calc_env$salient_rcv_lookup <- function(feature) unname(salient_rcv[feature])
186 salient_level <- salience_df$max_level
187 names(salient_level) <- salience_df$feature
188 salient_level_lookup <- calc_env$salient_level_lookup <- function(feature) unname(salient_level[feature])
189
190 # transform wildcards to regexen 206 # transform wildcards to regexen
191 if (matchingC == "wildcard") { 207 if (matchingC == "wildcard") {
192 # strsplit(x = "hello,wild,world", split = ",") 208 # strsplit(x = "hello,wild,world", split = ",")
193 levCSV <- gsub("[.]", "[.]", levCSV) 209 levCSV <- gsub("[.]", "[.]", levCSV)
194 levCSV <- strsplit(x = levCSV, split = ",") 210 levCSV <- strsplit(x = levCSV, split = ",")
269 level_union <- c(level_union, col_match[2], col_match[3]) 285 level_union <- c(level_union, col_match[2], col_match[3])
270 } 286 }
271 } 287 }
272 } 288 }
273 level_union <- unique(sort(level_union)) 289 level_union <- unique(sort(level_union))
274 overall_significant <- 1 == vrbl_metadata[,intersample_sig_col] 290 overall_significant <- 1 == ( if (intersample_sig_col %in% colnames(vrbl_metadata)) vrbl_metadata[,intersample_sig_col] else TRUE )
275 if ( length(level_union) > 1 ) { 291 if ( length(level_union) > 2 ) {
276 chosen_samples <- smpl_metadata_facC %in% level_union 292 chosen_samples <- smpl_metadata_facC %in% level_union
277 chosen_facC <- as.character(smpl_metadata_facC[chosen_samples]) 293 chosen_facC <- as.character(smpl_metadata_facC[chosen_samples])
278 col_selector <- vrbl_metadata_names[ overall_significant ] 294 col_selector <- vrbl_metadata_names[ overall_significant ]
279 my_matrix <- scdm[ chosen_samples, col_selector, drop = FALSE ] 295 my_matrix <- scdm[ chosen_samples, col_selector, drop = FALSE ]
280 fctr_lvl_2 <- "other" 296 plot_action <- function(fctr_lvl_1, fctr_lvl_2) {
281 for ( fctr_lvl_1 in level_union[1:length(level_union)] ) {
282 progress_action(sprintf("calculating/plotting contrast of %s vs. %s", fctr_lvl_1, fctr_lvl_2)) 297 progress_action(sprintf("calculating/plotting contrast of %s vs. %s", fctr_lvl_1, fctr_lvl_2))
283 predictor <- sapply( X = chosen_facC, FUN = function(fac) if ( fac == fctr_lvl_1 ) fctr_lvl_1 else fctr_lvl_2 ) 298 predictor <- sapply( X = chosen_facC, FUN = function(fac) if ( fac == fctr_lvl_1 ) fctr_lvl_1 else fctr_lvl_2 )
284 my_cor_cov <- do_detail_plot( 299 my_cor_cov <- do_detail_plot(
285 x_dataMatrix = my_matrix 300 x_dataMatrix = my_matrix
286 , x_predictor = predictor 301 , x_predictor = predictor
287 , x_is_match = is_match 302 , x_is_match = is_match
288 , x_algorithm = algoC 303 , x_algorithm = algoC
289 , x_prefix = if (pairSigFeatOnly) "Significantly contrasting features" else "Significant features" 304 , x_prefix = if (pairSigFeatOnly) "Significantly contrasting features" else "Significant features"
290 , x_show_labels = labelFeatures 305 , x_show_labels = labelFeatures
306 , x_show_loado_labels = labelOrthoFeatures
291 , x_progress = progress_action 307 , x_progress = progress_action
292 , x_env = calc_env 308 , x_env = calc_env
293 ) 309 )
294 if ( is.null(my_cor_cov) ) { 310 if ( is.null(my_cor_cov) ) {
295 progress_action("NOTHING TO PLOT.") 311 progress_action("NOTHING TO PLOT.")
296 } else { 312 } else {
297 tsv <- my_cor_cov$tsv1 313 my_tsv <- my_cor_cov$tsv1
298 # tsv$salientLevel <- salient_level_lookup(tsv$featureID) 314 my_tsv$mz <- mz_lookup(my_tsv$featureID)
299 # tsv$salientRCV <- salient_rcv_lookup(tsv$featureID) 315 my_tsv$rt <- rt_lookup(my_tsv$featureID)
300 # tsv$salience <- salience_lookup(tsv$featureID) 316 my_tsv["level1Level2Sig"] <- vrbl_metadata[ match(my_tsv$featureID, vrbl_metadata_names), vrbl_metadata_col ]
301 tsv["level1Level2Sig"] <- vrbl_metadata[ match(tsv$featureID, vrbl_metadata_names), vrbl_metadata_col ] 317 tsv <<- my_tsv
302 corcov_tsv_action(tsv) 318 corcov_tsv_action(tsv)
303 did_plot <- TRUE 319 did_plot <<- TRUE
304 } 320 }
305 } 321 }
306 } 322 if ( length(level_union) != 2 ) {
307 323 fctr_lvl_2 <- "other"
308 ## next, contrast each selected level with each of the other levels individually ## 324 for ( fctr_lvl_1 in level_union[1:length(level_union)] ) {
309 # process columns matching the pattern 325 plot_action(fctr_lvl_1, fctr_lvl_2)
310 for (i in 1:length(col_matches)) { 326 }
311 # for each potential match of the pattern 327 } else {
312 col_match <- col_matches[[i]] 328 plot_action(fctr_lvl_1 = level_union[1], fctr_lvl_2 = level_union[2])
313 if (length(col_match) > 0) { 329 }
314 # it's an actual match; extract the pieces, e.g., k10_kruskal_k4.k3_sig 330 }
315 vrbl_metadata_col <- col_match[1] # ^^^^^^^^^^^^^^^^^^^^^ # Column name 331
316 fctr_lvl_1 <- col_match[2] # ^^ # Factor-level 1 332 if ( length(level_union) > 1 ) {
317 fctr_lvl_2 <- col_match[3] # ^^ # Factor-level 2 333 ## next, contrast each selected level with each of the other levels individually ##
318 # only process this column if both factors are members of lvlCSV 334 # process columns matching the pattern
319 is_match <- isLevelSelected(fctr_lvl_1) && isLevelSelected(fctr_lvl_2) 335 for (i in 1:length(col_matches)) {
320 progress_action(sprintf("calculating/plotting contrast of %s vs. %s", fctr_lvl_1, fctr_lvl_2)) 336 # for each potential match of the pattern
321 # TODO delete next line displaying currently-processed column 337 col_match <- col_matches[[i]]
322 # cat(sprintf("%s %s %s %s\n", vrbl_metadata_col, fctr_lvl_1, fctr_lvl_2, is_match)) 338 if (length(col_match) > 0) {
323 # choose only samples with one of the two factors for this column 339 # it's an actual match; extract the pieces, e.g., k10_kruskal_k4.k3_sig
324 chosen_samples <- smpl_metadata_facC %in% c(fctr_lvl_1, fctr_lvl_2) 340 vrbl_metadata_col <- col_match[1] # ^^^^^^^^^^^^^^^^^^^^^ # Column name
325 predictor <- smpl_metadata_facC[chosen_samples] 341 fctr_lvl_1 <- col_match[2] # ^^ # Factor-level 1
326 # extract only the significantly-varying features and the chosen samples 342 fctr_lvl_2 <- col_match[3] # ^^ # Factor-level 2
327 fully_significant <- 1 == vrbl_metadata[,vrbl_metadata_col] * vrbl_metadata[,intersample_sig_col] 343 # only process this column if both factors are members of lvlCSV
328 col_selector <- vrbl_metadata_names[ if ( pairSigFeatOnly ) fully_significant else overall_significant ] 344 is_match <- isLevelSelected(fctr_lvl_1) && isLevelSelected(fctr_lvl_2)
329 my_matrix <- scdm[ chosen_samples, col_selector, drop = FALSE ] 345 progress_action(sprintf("calculating/plotting contrast of %s vs. %s", fctr_lvl_1, fctr_lvl_2))
330 my_cor_cov <- do_detail_plot( 346 # TODO delete next line displaying currently-processed column
331 x_dataMatrix = my_matrix 347 # cat(sprintf("%s %s %s %s\n", vrbl_metadata_col, fctr_lvl_1, fctr_lvl_2, is_match))
332 , x_predictor = predictor 348 # choose only samples with one of the two factors for this column
333 , x_is_match = is_match 349 chosen_samples <- smpl_metadata_facC %in% c(fctr_lvl_1, fctr_lvl_2)
334 , x_algorithm = algoC 350 predictor <- smpl_metadata_facC[chosen_samples]
335 , x_prefix = if (pairSigFeatOnly) "Significantly contrasting features" else "Significant features" 351 # extract only the significantly-varying features and the chosen samples
336 , x_show_labels = labelFeatures 352 fully_significant <- 1 == vrbl_metadata[,vrbl_metadata_col] * ( if (intersample_sig_col %in% colnames(vrbl_metadata)) vrbl_metadata[,intersample_sig_col] else TRUE )
337 , x_progress = progress_action 353 col_selector <- vrbl_metadata_names[ if ( pairSigFeatOnly ) fully_significant else overall_significant ]
338 , x_env = calc_env 354 my_matrix <- scdm[ chosen_samples, col_selector, drop = FALSE ]
339 ) 355 my_cor_cov <- do_detail_plot(
340 if ( is.null(my_cor_cov) ) { 356 x_dataMatrix = my_matrix
341 progress_action("NOTHING TO PLOT.") 357 , x_predictor = predictor
342 } else { 358 , x_is_match = is_match
343 tsv <- my_cor_cov$tsv1 359 , x_algorithm = algoC
344 # tsv$salientLevel <- salient_level_lookup(tsv$featureID) 360 , x_prefix = if (pairSigFeatOnly) "Significantly contrasting features" else "Significant features"
345 # tsv$salientRCV <- salient_rcv_lookup(tsv$featureID) 361 , x_show_labels = labelFeatures
346 # tsv$salience <- salience_lookup(tsv$featureID) 362 , x_show_loado_labels = labelOrthoFeatures
347 tsv["level1Level2Sig"] <- vrbl_metadata[ match(tsv$featureID, vrbl_metadata_names), vrbl_metadata_col ] 363 , x_progress = progress_action
348 corcov_tsv_action(tsv) 364 , x_env = calc_env
349 did_plot <- TRUE 365 )
366 if ( is.null(my_cor_cov) ) {
367 progress_action("NOTHING TO PLOT.")
368 } else {
369 tsv <- my_cor_cov$tsv1
370 tsv$mz <- mz_lookup(tsv$featureID)
371 tsv$rt <- rt_lookup(tsv$featureID)
372 tsv["level1Level2Sig"] <- vrbl_metadata[ match(tsv$featureID, vrbl_metadata_names), vrbl_metadata_col ]
373 corcov_tsv_action(tsv)
374 did_plot <- TRUE
375 }
350 } 376 }
351 } 377 }
352 } 378 }
353 } else { # tesC == "none" 379 } else { # tesC == "none"
354 level_union <- unique(sort(smpl_metadata_facC)) 380 level_union <- unique(sort(smpl_metadata_facC))
355 if ( length(level_union) > 1 ) { 381 if ( length(level_union) > 1 ) {
356 ## pass 1 - contrast each selected level with all other levels combined into one "super-level" ## 382 if ( length(level_union) > 2 ) {
357 completed <- c() 383 ## pass 1 - contrast each selected level with all other levels combined into one "super-level" ##
358 lapply( 384 completed <- c()
359 X = level_union 385 lapply(
360 , FUN = function(x) { 386 X = level_union
361 fctr_lvl_1 <- x[1] 387 , FUN = function(x) {
362 fctr_lvl_2 <- { 388 fctr_lvl_1 <- x[1]
363 if ( fctr_lvl_1 %in% completed ) 389 fctr_lvl_2 <- {
364 return("DUMMY") 390 if ( fctr_lvl_1 %in% completed )
365 # strF(completed) 391 return("DUMMY")
366 completed <<- c(completed, fctr_lvl_1) 392 # strF(completed)
367 setdiff(level_union, fctr_lvl_1) 393 completed <<- c(completed, fctr_lvl_1)
394 setdiff(level_union, fctr_lvl_1)
395 }
396 chosen_samples <- smpl_metadata_facC %in% c(fctr_lvl_1, fctr_lvl_2)
397 fctr_lvl_2 <- "other"
398 # print( sprintf("sum(chosen_samples) %d, factor_level_2 %s", sum(chosen_samples), fctr_lvl_2) )
399 progress_action(sprintf("calculating/plotting contrast of %s vs. %s", fctr_lvl_1, fctr_lvl_2))
400 if (length(unique(chosen_samples)) < 1) {
401 progress_action("NOTHING TO PLOT...")
402 } else {
403 chosen_facC <- as.character(smpl_metadata_facC[chosen_samples])
404 predictor <- sapply( X = chosen_facC, FUN = function(fac) if ( fac == fctr_lvl_1 ) fctr_lvl_1 else fctr_lvl_2 )
405 my_matrix <- scdm[ chosen_samples, , drop = FALSE ]
406 # only process this column if both factors are members of lvlCSV
407 is_match <- isLevelSelected(fctr_lvl_1)
408 my_cor_cov <- do_detail_plot(
409 x_dataMatrix = my_matrix
410 , x_predictor = predictor
411 , x_is_match = is_match
412 , x_algorithm = algoC
413 , x_prefix = "Features"
414 , x_show_labels = labelFeatures
415 , x_show_loado_labels = labelOrthoFeatures
416 , x_progress = progress_action
417 , x_env = calc_env
418 )
419 if ( is.null(my_cor_cov) ) {
420 progress_action("NOTHING TO PLOT")
421 } else {
422 tsv <- my_cor_cov$tsv1
423 tsv$mz <- mz_lookup(tsv$featureID)
424 tsv$rt <- rt_lookup(tsv$featureID)
425 corcov_tsv_action(tsv)
426 did_plot <<- TRUE
427 }
428 }
429 #print("baz")
430 "dummy" # need to return a value; otherwise combn fails with an error
368 } 431 }
369 chosen_samples <- smpl_metadata_facC %in% c(fctr_lvl_1, fctr_lvl_2) 432 )
370 fctr_lvl_2 <- "other" 433 }
371 # print( sprintf("sum(chosen_samples) %d, factor_level_2 %s", sum(chosen_samples), fctr_lvl_2) )
372 progress_action(sprintf("calculating/plotting contrast of %s vs. %s", fctr_lvl_1, fctr_lvl_2))
373 if (length(unique(chosen_samples)) < 1) {
374 progress_action("NOTHING TO PLOT...")
375 } else {
376 chosen_facC <- as.character(smpl_metadata_facC[chosen_samples])
377 predictor <- sapply( X = chosen_facC, FUN = function(fac) if ( fac == fctr_lvl_1 ) fctr_lvl_1 else fctr_lvl_2 )
378 my_matrix <- scdm[ chosen_samples, , drop = FALSE ]
379 # only process this column if both factors are members of lvlCSV
380 is_match <- isLevelSelected(fctr_lvl_1)
381 my_cor_cov <- do_detail_plot(
382 x_dataMatrix = my_matrix
383 , x_predictor = predictor
384 , x_is_match = is_match
385 , x_algorithm = algoC
386 , x_prefix = "Features"
387 , x_show_labels = labelFeatures
388 , x_progress = progress_action
389 , x_env = calc_env
390 )
391 if ( is.null(my_cor_cov) ) {
392 progress_action("NOTHING TO PLOT")
393 } else {
394 tsv <- my_cor_cov$tsv1
395 # tsv$salientLevel <- salient_level_lookup(tsv$featureID)
396 # tsv$salientRCV <- salient_rcv_lookup(tsv$featureID)
397 # tsv$salience <- salience_lookup(tsv$featureID)
398 corcov_tsv_action(tsv)
399 did_plot <<- TRUE
400 }
401 }
402 #print("baz")
403 "dummy" # need to return a value; otherwise combn fails with an error
404 }
405 )
406 ## pass 2 - contrast each selected level with each of the other levels individually ## 434 ## pass 2 - contrast each selected level with each of the other levels individually ##
407 completed <- c() 435 completed <- c()
408 utils::combn( 436 utils::combn(
409 x = level_union 437 x = level_union
410 , m = 2 438 , m = 2
427 , x_predictor = predictor 455 , x_predictor = predictor
428 , x_is_match = is_match 456 , x_is_match = is_match
429 , x_algorithm = algoC 457 , x_algorithm = algoC
430 , x_prefix = "Features" 458 , x_prefix = "Features"
431 , x_show_labels = labelFeatures 459 , x_show_labels = labelFeatures
460 , x_show_loado_labels = labelOrthoFeatures
432 , x_progress = progress_action 461 , x_progress = progress_action
433 , x_env = calc_env 462 , x_env = calc_env
434 ) 463 )
435 if ( is.null(my_cor_cov) ) { 464 if ( is.null(my_cor_cov) ) {
436 progress_action("NOTHING TO PLOT") 465 progress_action("NOTHING TO PLOT")
437 } else { 466 } else {
438 tsv <- my_cor_cov$tsv1 467 tsv <- my_cor_cov$tsv1
439 # tsv$salientLevel <- salient_level_lookup(tsv$featureID) 468 tsv$mz <- mz_lookup(tsv$featureID)
440 # tsv$salientRCV <- salient_rcv_lookup(tsv$featureID) 469 tsv$rt <- rt_lookup(tsv$featureID)
441 # tsv$salience <- salience_lookup(tsv$featureID)
442 corcov_tsv_action(tsv) 470 corcov_tsv_action(tsv)
443 did_plot <<- TRUE 471 did_plot <<- TRUE
444 } 472 }
445 } 473 }
446 #print("baz") 474 #print("baz")
508 536
509 # Variant 4 of Variable Influence on Projection for OPLS from Galindo_Prieto_2014 537 # Variant 4 of Variable Influence on Projection for OPLS from Galindo_Prieto_2014
510 # Length = number of features; labels = feature identifiers. (The same is true for $correlation and $covariance.) 538 # Length = number of features; labels = feature identifiers. (The same is true for $correlation and $covariance.)
511 result$vip4p <- as.numeric(ropls_x@vipVn) 539 result$vip4p <- as.numeric(ropls_x@vipVn)
512 result$vip4o <- as.numeric(ropls_x@orthoVipVn) 540 result$vip4o <- as.numeric(ropls_x@orthoVipVn)
541 result$loadp <- as.numeric(ropls_x@loadingMN)
542 result$loado <- as.numeric(ropls_x@orthoLoadingMN)
513 # get the level names 543 # get the level names
514 level_names <- sort(levels(as.factor(ropls_x@suppLs$y))) 544 level_names <- sort(levels(as.factor(ropls_x@suppLs$y)))
545 fctr_lvl_1 <- level_names[1]
546 fctr_lvl_2 <- level_names[2]
515 feature_count <- length(ropls_x@vipVn) 547 feature_count <- length(ropls_x@vipVn)
516 result$level1 <- rep.int(x = level_names[1], times = feature_count) 548 result$level1 <- rep.int(x = fctr_lvl_1, times = feature_count)
517 result$level2 <- rep.int(x = level_names[2], times = feature_count) 549 result$level2 <- rep.int(x = fctr_lvl_2, times = feature_count)
518 # print(sprintf("sd(covariance) = %f; sd(correlation) = %f", sd(result$covariance), sd(result$correlation))) 550 # print(sprintf("sd(covariance) = %f; sd(correlation) = %f", sd(result$covariance), sd(result$correlation)))
519 superresult <- list() 551 superresult <- list()
520 if (length(result$vip4o) == 0) result$vip4o <- NA 552 if (length(result$vip4o) == 0) result$vip4o <- NA
553 greaterLevel <- sapply( X = result$correlation, FUN = function(my_corr) if ( my_corr < 0 ) fctr_lvl_1 else fctr_lvl_2 )
521 superresult$tsv1 <- data.frame( 554 superresult$tsv1 <- data.frame(
522 featureID = names(ropls_x@vipVn) 555 featureID = names(ropls_x@vipVn)
523 , factorLevel1 = result$level1 556 , factorLevel1 = result$level1
524 , factorLevel2 = result$level2 557 , factorLevel2 = result$level2
558 , greaterLevel = greaterLevel
525 , correlation = result$correlation 559 , correlation = result$correlation
526 , covariance = result$covariance 560 , covariance = result$covariance
527 , vip4p = result$vip4p 561 , vip4p = result$vip4p
528 , vip4o = result$vip4o 562 , vip4o = result$vip4o
563 , loadp = result$loadp
564 , loado = result$loado
529 , row.names = NULL 565 , row.names = NULL
530 ) 566 )
531 rownames(superresult$tsv1) <- superresult$tsv1$featureID 567 rownames(superresult$tsv1) <- superresult$tsv1$featureID
532 superresult$covariance <- result$covariance 568 superresult$covariance <- result$covariance
533 superresult$correlation <- result$correlation 569 superresult$correlation <- result$correlation
534 superresult$vip4p <- result$vip4p 570 superresult$vip4p <- result$vip4p
535 superresult$vip4o <- result$vip4o 571 superresult$vip4o <- result$vip4o
572 superresult$loadp <- result$loadp
573 superresult$loado <- result$loado
536 superresult$details <- result 574 superresult$details <- result
537 # #print(superresult$tsv1) 575 # #print(superresult$tsv1)
538 result$superresult <- superresult 576 result$superresult <- superresult
539 # Include thise in case future consumers of this routine want to use it in currently unanticipated ways 577 # Include thise in case future consumers of this routine want to use it in currently unanticipated ways
540 result$oplsda <- ropls_x 578 result$oplsda <- ropls_x