Mercurial > repos > vandelj > giant_aptsummarize
annotate src/utils.R @ 0:708f43bda2b6 draft
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
| author | vandelj | 
|---|---|
| date | Fri, 26 Jun 2020 09:35:11 -0400 | 
| parents | |
| children | 41f95153ce4b | 
| rev | line source | 
|---|---|
| 
0
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
1 # Copyright (c) 2011-2013 Trevor L. Davis <trevor.l.davis@stanford.edu> | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
2 # | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
3 # This file is free software: you may copy, redistribute and/or modify it | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
4 # under the terms of the GNU General Public License as published by the | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
5 # Free Software Foundation, either version 2 of the License, or (at your | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
6 # option) any later version. | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
7 # | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
8 # This file is distributed in the hope that it will be useful, but | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
9 # WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
11 # General Public License for more details. | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
12 # | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
13 # You should have received a copy of the GNU General Public License | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
14 # along with this program. If not, see <http://www.gnu.org/licenses/>. | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
15 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
16 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
17 #extendedDist function to correlation measure | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
18 distExtended <- function(x,method) { | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
19 if(method %in% c("euclidean", "maximum", "manhattan", "canberra", "binary", "minkowski"))return(dist(x,method = method)) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
20 if(method %in% c("pearson", "spearman", "kendall"))return(as.dist(1-cor(t(x),method=method))/2) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
21 if(method %in% c("absPearson", "absSpearman", "absKendall"))return(as.dist(1-abs(cor(t(x),method=method)))) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
22 return(NULL) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
23 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
24 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
25 ##comment function to display message and optionnaly add it to log file | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
26 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
27 addComment <- function(text,addToFile=FALSE,fileName=NULL,append=TRUE,display=TRUE){ | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
28 if(display)cat(paste(c(text,"\n"),collapse = " ")) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
29 if(addToFile)write(paste(text,collapse = " "),fileName,append=append) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
30 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
31 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
32 printSessionInfo <- function(fileName=NULL,append=TRUE){ | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
33 addComment("[INFO]R session info :",T,fileName,display=FALSE) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
34 tempInfo=sessionInfo() | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
35 write(paste(tempInfo$R.version$version.string),fileName,append=append) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
36 write(paste("Platform",tempInfo$platform,sep = " : "),fileName,append=append) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
37 write(paste("Running under",tempInfo$running,sep = " : "),fileName,append=append) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
38 write(paste("Local variables",tempInfo$locale,sep = " : "),fileName,append=append) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
39 write(paste("Attached base packages",paste(tempInfo$basePkgs,collapse = "; "),sep = " : "),fileName,append=append) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
40 if(length(tempInfo$otherPkgs)>0){ | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
41 lineToPrint="" | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
42 for(iPack in tempInfo$otherPkgs){ | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
43 lineToPrint=paste(lineToPrint,iPack$Package," ",iPack$Version,"; ",sep = "") | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
44 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
45 write(paste("Other attached packages",lineToPrint,sep = " : "),fileName,append=append) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
46 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
47 if(length(tempInfo$loadedOnly)>0){ | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
48 lineToPrint="" | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
49 for(iPack in tempInfo$loadedOnly){ | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
50 lineToPrint=paste(lineToPrint,iPack$Package," ",iPack$Version,"; ",sep = "") | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
51 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
52 write(paste("Loaded packages",lineToPrint,sep = " : "),fileName,append=append) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
53 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
54 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
55 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
56 ##negative of a mathematical expression | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
57 negativeExpression <- function(expression){ | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
58 expression=gsub("\\+","_toMinus_",expression) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
59 expression=gsub("\\-","+",expression) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
60 expression=gsub("_toMinus_","-",expression) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
61 if(substr(expression,1,1)!="-" && substr(expression,1,1)!="+"){ | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
62 expression=paste(c("-",expression),collapse="") | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
63 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
64 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
65 return(expression) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
66 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
67 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
68 #' Returns file name of calling Rscript | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
69 #' | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
70 #' \code{get_Rscript_filename} returns the file name of calling Rscript | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
71 #' @return A string with the filename of the calling script. | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
72 #' If not found (i.e. you are in a interactive session) returns NA. | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
73 #' | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
74 #' @export | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
75 get_Rscript_filename <- function() { | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
76 prog <- sub("--file=", "", grep("--file=", commandArgs(), value=TRUE)[1]) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
77 if( .Platform$OS.type == "windows") { | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
78 prog <- gsub("\\\\", "\\\\\\\\", prog) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
79 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
80 prog | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
81 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
82 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
83 #' Recursively sorts a list | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
84 #' | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
85 #' \code{sort_list} returns a sorted list | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
86 #' @param unsorted_list A list. | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
87 #' @return A sorted list. | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
88 #' @export | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
89 sort_list <- function(unsorted_list) { | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
90 for(ii in seq(along=unsorted_list)) { | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
91 if(is.list(unsorted_list[[ii]])) { | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
92 unsorted_list[[ii]] <- sort_list(unsorted_list[[ii]]) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
93 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
94 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
95 unsorted_list[sort(names(unsorted_list))] | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
96 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
97 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
98 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
99 # Multiple plot function | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
100 # | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
101 # ggplot objects can be passed in ..., or to plotlist (as a list of ggplot objects) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
102 # - cols: Number of columns in layout | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
103 # - layout: A matrix specifying the layout. If present, 'cols' is ignored. | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
104 # | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
105 # If the layout is something like matrix(c(1,2,3,3), nrow=2, byrow=TRUE), | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
106 # then plot 1 will go in the upper left, 2 will go in the upper right, and | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
107 # 3 will go all the way across the bottom. | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
108 # | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
109 multiplot <- function(..., plotlist=NULL, file, cols=1, layout=NULL) { | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
110 library(grid) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
111 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
112 # Make a list from the ... arguments and plotlist | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
113 plots <- c(list(...), plotlist) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
114 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
115 numPlots = length(plots) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
116 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
117 # If layout is NULL, then use 'cols' to determine layout | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
118 if (is.null(layout)) { | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
119 # Make the panel | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
120 # ncol: Number of columns of plots | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
121 # nrow: Number of rows needed, calculated from # of cols | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
122 layout <- matrix(seq(1, cols * ceiling(numPlots/cols)), | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
123 ncol = cols, nrow = ceiling(numPlots/cols)) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
124 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
125 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
126 if (numPlots==1) { | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
127 print(plots[[1]]) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
128 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
129 } else { | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
130 # Set up the page | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
131 grid.newpage() | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
132 pushViewport(viewport(layout = grid.layout(nrow(layout), ncol(layout)))) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
133 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
134 # Make each plot, in the correct location | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
135 for (i in 1:numPlots) { | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
136 # Get the i,j matrix positions of the regions that contain this subplot | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
137 matchidx <- as.data.frame(which(layout == i, arr.ind = TRUE)) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
138 | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
139 print(plots[[i]], vp = viewport(layout.pos.row = matchidx$row, | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
140 layout.pos.col = matchidx$col)) | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
141 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
142 } | 
| 
 
708f43bda2b6
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
 
vandelj 
parents:  
diff
changeset
 | 
143 } | 
