comparison additional_functions_block_splsda.R @ 0:d0b77b926863 draft

"planemo upload for repository https://gitlab.com/bilille/galaxy-viscorvar commit 85dac6b13a9adce48b47b2b8cb28d2319ae9c1ca-dirty"
author ppericard
date Tue, 23 Jun 2020 19:57:35 -0400
parents
children e93350dc99f1
comparison
equal deleted inserted replaced
-1:000000000000 0:d0b77b926863
1 #' @title Check if a block contains missing values
2 #' @description Check if a block contains missing values
3 #' @param list_X type : list of matrix. This list is used to perform the data integration.
4 #' @details This function checks if a block contains missing values.
5 #' @return type : boolean. If at least one block contains missing values,
6 #' this function returns TRUE, otherwise this function returns FALSE.
7 #' @examples
8 #' X1 = matrix(1:9, nrow = 3, ncol = 3)
9 #' X2 = matrix(10:18, nrow = 3, ncol = 3)
10 #' list_X = list()
11 #' list_X[[1]] = X1
12 #' list_X[[2]] = X2
13 #' names(list_X) = c("X1", "X2")
14 #' boolean_block_missing_values = blockMissingValues(list_X)
15 #' @export
16 blockMissingValues <-function(list_X)
17 {
18 name_blocks = names(list_X)
19 name_blocks_missing_values = c()
20 boolean_block_missing_values = FALSE
21
22 for(i in 1:length(list_X))
23 {
24 X_i = list_X[[i]]
25 name_block_i = name_blocks[i]
26
27 vec = sapply(1:dim(X_i)[2], FUN = function(j){
28 res = any(is.na(X_i[, j]))
29
30 return(res)
31 })
32
33 if(any(vec))
34 {
35 name_blocks_missing_values = c(name_blocks_missing_values, name_block_i)
36
37 }
38
39 } # End for(i in 1:length(list_X)).
40
41 if(length(name_blocks_missing_values) != 0)
42 {
43 stop(paste("The data integration can not be performed if a block contains missing values : ", paste(name_blocks_missing_values, collapse = ", "), " contains missing values. "))
44 boolean_block_missing_values = TRUE
45
46 }
47
48 return(boolean_block_missing_values)
49
50 }
51
52
53 #' @title Determination of selected variables for all components
54 #' @description The function unionSelectBlockVariables determines, for each block, the selected block variables
55 #' for all components.
56 #' @param res_block_splsda type : sgccda. This parameter is the output of block.splsda function
57 #' mixOmics.
58 #' @details For each block, the function unionSelectBlockVariables returns 1 if the block variable is selected for
59 #' at least one component. Otherwise, this function returns 0.
60 #' @return type : list of matrix. For each block, if the block variable is selected, the value 1 is associated with
61 #' this block variable. Otherwise the value 0 is associated with this block variable.
62 #' @examples
63 #' data(res_data_integration)
64 #' list_union_selected_block_variables = unionSelectBlockVariables(res_data_integration)
65 #' @export
66 unionSelectBlockVariables <-function(res_block_splsda)
67 {
68 ncomp = res_block_splsda$ncomp[1]
69
70 names_blocks = names(res_block_splsda$loadings)
71 index_Y = which(names_blocks == "Y")
72 names_blocks = names_blocks[ - index_Y]
73 list_select_block_variables = list()
74
75 for(i in 1:length(names_blocks))
76 {
77 mat_loadings_i = res_block_splsda$loadings[[i]]
78 index_i = c()
79
80 for(j in 1:ncomp)
81 {
82 loadings_i_j = mat_loadings_i[, j]
83 index_i_j = which(loadings_i_j != 0)
84
85 index_i = c(index_i, index_i_j)
86
87 } # End for(j 1:ncomp).
88
89 index_i = unique(index_i)
90
91 mat_select_block_variables = matrix(0,
92 nrow = dim(mat_loadings_i)[1],
93 ncol = 1)
94 mat_select_block_variables[index_i, 1] = rep(1, length(index_i))
95 rownames(mat_select_block_variables) = rownames(mat_loadings_i)
96
97 list_select_block_variables[[i]] = mat_select_block_variables
98
99 } # End for(i in 1:length(names_blocks)).
100
101 names(list_select_block_variables) = names_blocks
102
103 return(list_select_block_variables)
104 }