annotate Intchecks/RcheckLibrary.R @ 0:c2c2e1be904a draft

Uploaded
author melpetera
date Thu, 11 Oct 2018 05:33:19 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
1 ######################################################
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
2 # R check library
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
3 # Coded by: M.Petera,
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
4 # - -
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
5 # R functions to use in R scripts
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
6 # (management of various generic subroutines)
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
7 # - -
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
8 # V0: script structure + first functions
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
9 # V1: More detailed error messages in match functions
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
10 ######################################################
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
11
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
12
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
13 # Generic function to return an error if problems have been encountered - - - -
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
14
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
15 check.err <- function(err.stock){
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
16
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
17 # err.stock = vector of results returned by check functions
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
18
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
19 if(length(err.stock)!=0){ stop("\n- - - - - - - - -\n",err.stock,"\n- - - - - - - - -\n") }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
20
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
21 }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
22
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
23
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
24
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
25
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
26 # Table match check functions - - - - - - - - - - - - - - - - - - - - - - - - -
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
27
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
28 # To check if dataMatrix and (variable or sample)Metadata match regarding identifiers
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
29 match2 <- function(dataMatrix, Metadata, Mtype){
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
30
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
31 # dataMatrix = data.frame containing dataMatrix
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
32 # Metadata = data.frame containing sampleMetadata or variableMetadata
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
33 # Mtype = "sample" or "variable" depending on Metadata content
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
34
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
35 err.stock <- NULL # error vector
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
36
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
37 id2 <- Metadata[,1]
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
38 if(Mtype=="sample"){ id1 <- colnames(dataMatrix)[-1] }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
39 if(Mtype=="variable"){ id1 <- dataMatrix[,1] }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
40
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
41 if( length(which(id1%in%id2))!=length(id1) || length(which(id2%in%id1))!=length(id2) ){
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
42 err.stock <- c("\nData matrix and ",Mtype," metadata do not match regarding ",Mtype," identifiers.")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
43 if(length(which(id1%in%id2))!=length(id1)){
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
44 if(length(which(!(id1%in%id2)))<4){ err.stock <- c(err.stock,"\n The ")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
45 }else{ err.stock <- c(err.stock,"\n For example, the ") }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
46 err.stock <- c(err.stock,"following identifiers found in the data matrix\n",
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
47 " do not appear in the ",Mtype," metadata file:\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
48 identif <- id1[which(!(id1%in%id2))][1:min(3,length(which(!(id1%in%id2))))]
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
49 err.stock <- c(err.stock," ",paste(identif,collapse="\n "),"\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
50 }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
51 if(length(which(id2%in%id1))!=length(id2)){
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
52 if(length(which(!(id2%in%id1)))<4){ err.stock <- c(err.stock,"\n The ")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
53 }else{ err.stock <- c(err.stock,"\n For example, the ") }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
54 err.stock <- c(err.stock,"following identifiers found in the ",Mtype," metadata file\n",
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
55 " do not appear in the data matrix:\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
56 identif <- id2[which(!(id2%in%id1))][1:min(3,length(which(!(id2%in%id1))))]
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
57 err.stock <- c(err.stock," ",paste(identif,collapse="\n "),"\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
58 }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
59 err.stock <- c(err.stock,"\nPlease check your data.\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
60 }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
61
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
62 return(err.stock)
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
63
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
64 }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
65
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
66 # To check if the 3 standard tables match regarding identifiers
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
67 match3 <- function(dataMatrix, sampleMetadata, variableMetadata){
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
68
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
69 # dataMatrix = data.frame containing dataMatrix
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
70 # sampleMetadata = data.frame containing sampleMetadata
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
71 # variableMetadata = data.frame containing variableMetadata
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
72
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
73 err.stock <- NULL # error vector
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
74
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
75 id1 <- colnames(dataMatrix)[-1]
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
76 id2 <- sampleMetadata[,1]
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
77 id3 <- dataMatrix[,1]
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
78 id4 <- variableMetadata[,1]
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
79
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
80 if( length(which(id1%in%id2))!=length(id1) || length(which(id2%in%id1))!=length(id2) ){
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
81 err.stock <- c(err.stock,"\nData matrix and sample metadata do not match regarding sample identifiers.")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
82 if(length(which(id1%in%id2))!=length(id1)){
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
83 if(length(which(!(id1%in%id2)))<4){ err.stock <- c(err.stock,"\n The ")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
84 }else{ err.stock <- c(err.stock,"\n For example, the ") }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
85 err.stock <- c(err.stock,"following identifiers found in the data matrix\n",
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
86 " do not appear in the sample metadata file:\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
87 identif <- id1[which(!(id1%in%id2))][1:min(3,length(which(!(id1%in%id2))))]
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
88 err.stock <- c(err.stock," ",paste(identif,collapse="\n "),"\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
89 }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
90 if(length(which(id2%in%id1))!=length(id2)){
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
91 if(length(which(!(id2%in%id1)))<4){ err.stock <- c(err.stock,"\n The ")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
92 }else{ err.stock <- c(err.stock,"\n For example, the ") }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
93 err.stock <- c(err.stock,"following identifiers found in the sample metadata file\n",
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
94 " do not appear in the data matrix:\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
95 identif <- id2[which(!(id2%in%id1))][1:min(3,length(which(!(id2%in%id1))))]
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
96 err.stock <- c(err.stock," ",paste(identif,collapse="\n "),"\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
97 }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
98 }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
99
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
100 if( length(which(id3%in%id4))!=length(id3) || length(which(id4%in%id3))!=length(id4) ){
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
101 err.stock <- c(err.stock,"\nData matrix and variable metadata do not match regarding variable identifiers.")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
102 if(length(which(id3%in%id4))!=length(id3)){
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
103 if(length(which(!(id3%in%id4)))<4){ err.stock <- c(err.stock,"\n The ")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
104 }else{ err.stock <- c(err.stock,"\n For example, the ") }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
105 err.stock <- c(err.stock,"following identifiers found in the data matrix\n",
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
106 " do not appear in the variable metadata file:\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
107 identif <- id3[which(!(id3%in%id4))][1:min(3,length(which(!(id3%in%id4))))]
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
108 err.stock <- c(err.stock," ",paste(identif,collapse="\n "),"\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
109 }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
110 if(length(which(id4%in%id3))!=length(id4)){
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
111 if(length(which(!(id4%in%id3)))<4){ err.stock <- c(err.stock,"\n The ")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
112 }else{ err.stock <- c(err.stock,"\n For example, the ") }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
113 err.stock <- c(err.stock,"following identifiers found in the variable metadata file\n",
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
114 " do not appear in the data matrix:\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
115 identif <- id4[which(!(id4%in%id3))][1:min(3,length(which(!(id4%in%id3))))]
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
116 err.stock <- c(err.stock," ",paste(identif,collapse="\n "),"\n")
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
117 }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
118 }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
119
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
120 if(length(err.stock)!=0){ err.stock <- c(err.stock,"\nPlease check your data.\n") }
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
121
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
122 return(err.stock)
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
123
c2c2e1be904a Uploaded
melpetera
parents:
diff changeset
124 }