Mercurial > repos > vmarcon > plot_pca
annotate plot_pca.R @ 0:610e86c430a9 draft default tip
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
| author | vmarcon | 
|---|---|
| date | Mon, 23 Oct 2017 09:34:56 -0400 | 
| parents | |
| children | 
| rev | line source | 
|---|---|
| 
0
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
1 #!/usr/bin/env Rscript | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
2 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
3 # DEFAULT OPTIONS | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
4 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
5 opt = list() | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
6 opt$log10 = FALSE | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
7 opt$pseudocount = 1e-04 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
8 opt$row_as_variables = FALSE | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
9 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
10 suppressPackageStartupMessages(library("optparse")) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
11 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
12 options(stringsAsFactors=F) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
13 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
14 ################## | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
15 # OPTION PARSING | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
16 ################## | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
17 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
18 option_list <- list( | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
19 make_option(c("-i", "--input_matrix"), help="the matrix you want to analyze. Can be stdin"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
20 make_option(c("-l", "--log10"), action="store_true", default=FALSE, help="apply the log [default=FALSE]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
21 make_option(c("-p", "--pseudocount"), type="double", help="specify a pseudocount for the log [default=%default]", default=1e-04), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
22 make_option(c("-m", "--metadata"), help="A list of tsv files with metadata on matrix experiment.\n\t\tThey must be in the format 'file1.tsv,file2.tsv' and contain a key column named 'labExpId'. Can be omitted"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
23 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
24 make_option(c("--merge_mdata_on"), default="labExpId", | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
25 help="[default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
26 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
27 #make_option(c("-o", "--output"), help="additional info you want to put in the output file name", default="out"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
28 make_option(c("-c", "--color_by"), help="choose the fields in the metadata you want to color by", type='character'), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
29 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
30 make_option(c("--sort_color"), type='character', | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
31 help="A field for sorting colors. Can be omitted [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
32 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
33 make_option(c("-s", "--shape_by"), default=NULL, type="character", help="choose the fields in the metadata you want to shape by"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
34 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
35 make_option(c("--no_legend"), action="store_true", default=FALSE, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
36 help="Do not show the legend [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
37 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
38 make_option(c("-r", "--row_as_variables"), action="store_true", help="select this if you want rows as variables [default=%default]", default=FALSE), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
39 make_option(c("-C", "--princomp"), help="choose the principal components you want to plot. With 3 PC it gives a 3d plot [default='PC1,PC2']", default="PC1,PC2"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
40 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
41 make_option(c("--print_scores"), action="store_true", default=FALSE, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
42 help="Output the resuling PCs as a separate file with the extension PCs.tsv [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
43 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
44 make_option(c("--print_loadings"), action="store_true", default=FALSE, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
45 help="Output the resulting loadings as a separate file with the extension loadings.tsv [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
46 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
47 make_option(c("--print_lambdas"), action="store_true", default=FALSE, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
48 help="Output the resulting lambdas (stdev) as a separate file with the extension lambdas.tsv [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
49 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
50 make_option(c("--biplot"), default=FALSE, action="store_true", | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
51 help="If active, the factor of the color is used as grouping factor. | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
52 Centroids are computed and the first <top> loadings are plotted wrt to the two specified components [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
53 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
54 make_option(c("--palette"), default="/users/rg/abreschi/R/palettes/cbbPalette1.15.txt", | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
55 help="File with the color palette [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
56 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
57 make_option(c("--border"), default=FALSE, action="store_true", | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
58 help="Black border to dots [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
59 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
60 make_option(c("--shapes"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
61 help="File with the shapes [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
62 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
63 make_option(c("-L", "--labels"), default=NULL, type="character", | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
64 help="The metadata field with the labels [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
65 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
66 make_option(c("-B", "--base_size"), default=16, type='numeric', | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
67 help="Base font size [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
68 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
69 make_option(c("-H", "--height"), default=7, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
70 help="Height of the plot in inches [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
71 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
72 make_option(c("-W", "--width"), default=7, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
73 help="Width of the plot in inches [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
74 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
75 make_option(c("-o", "--output"), default="pca.out", | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
76 help="output file name [default=%default]"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
77 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
78 make_option(c("-v", "--verbose"), action='store_true', default=FALSE, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
79 help="verbose output [default=%default]") | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
80 ) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
81 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
82 parser <- OptionParser(usage = "%prog [options] file", option_list=option_list) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
83 arguments <- parse_args(parser, positional_arguments = TRUE) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
84 opt <- arguments$options | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
85 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
86 if (opt$verbose) {print(opt)} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
87 ##------------ | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
88 ## LIBRARIES | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
89 ##------------ | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
90 suppressPackageStartupMessages(library("reshape")) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
91 suppressPackageStartupMessages(library("ggplot2")) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
92 suppressPackageStartupMessages(library("grid")) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
93 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
94 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
95 ############### | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
96 # BEGIN | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
97 ############## | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
98 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
99 # read input tables | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
100 inF = opt$input_matrix; if (opt$input_matrix == "stdin") {inF = file("stdin")} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
101 m = read.table(inF, h=T, sep="\t") | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
102 if (opt$verbose) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
103 cat("Sample of input matrix:\n") | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
104 print(head(m[,1:10])) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
105 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
106 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
107 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
108 # Read the color palette | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
109 my_palette = read.table(opt$palette, h=F, comment.char="%", sep="\t")$V1 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
110 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
111 # Read the color ordering | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
112 if (is.null(opt$sort_color)) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
113 sort_color=NULL | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
114 }else{ | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
115 sort_color = strsplit(opt$sort_color, ",")[[1]] | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
116 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
117 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
118 # Read the shapes | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
119 if (!is.null(opt$shapes)) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
120 my_shapes = read.table(opt$shapes, h=F, comment.char="%")$V1 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
121 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
122 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
123 # remove potential gene id columns | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
124 char_cols <- which(sapply(m, class) == 'character') | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
125 if (length(char_cols) == 0) {genes = rownames(m)} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
126 if (length(char_cols) != 0) {genes = m[,char_cols]; m = m[,-(char_cols)]} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
127 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
128 if (opt$verbose) {sprintf("WARNING: column %s is character, so it is removed from the analysis", char_cols)} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
129 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
130 # apply the log if required | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
131 if (opt$log10) {m = log10(replace(m, is.na(m), 0) + opt$pseudocount)} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
132 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
133 # apply pca | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
134 #if (opt$row_as_variable) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
135 #m_pca = prcomp(na.omit(m), center=FALSE, scale.=FALSE)} else{ | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
136 #m_pca = prcomp(t(na.omit(m)), center=FALSE, scale.=FALSE)} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
137 #Modified by Gaelle Lefort | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
138 # apply pca | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
139 if (opt$row_as_variable) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
140 m_pca = prcomp(t(na.omit(m)), center=FALSE, scale.=FALSE) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
141 } else { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
142 m_pca = prcomp(na.omit(m), center=FALSE, scale.=FALSE) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
143 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
144 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
145 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
146 # Scale the scores for biplot | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
147 #scaledScores = sweep(m_pca$x, 2, m_pca$sdev / sqrt(nrow(m_pca$x)), "/") | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
148 scaledScores = m_pca$x | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
149 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
150 if (opt$verbose) {print(dim(na.omit(m)))} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
151 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
152 # HANDLING METADATA | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
153 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
154 # add metadata to pca results, they should be input in the command line in the future | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
155 if (is.null(opt$color_by)) {color_by=NULL | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
156 }else{color_by = color_by = strsplit(opt$color_by, ",")[[1]]} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
157 if (is.null(opt$shape_by)) {shape_by=NULL | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
158 }else{shape_by = strsplit(opt$shape_by, ",")[[1]]} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
159 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
160 # read metadata, one or more table to be merged on labExpId | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
161 if (!is.null(opt$metadata)){ | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
162 mdata = read.table(opt$metadata, h=T, sep="\t", row.names=NULL, comment.char="", quote=""); | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
163 if (opt$merge_mdata_on %in% colnames(mdata)) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
164 mdata[,opt$merge_mdata_on] <- gsub("[,-]", ".", mdata[,opt$merge_mdata_on]) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
165 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
166 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
167 if (opt$verbose) {cat('append metadata...')} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
168 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
169 df = merge(as.data.frame(scaledScores), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
170 unique(mdata[c(color_by, shape_by, opt$merge_mdata_on, opt$labels)]), by.x='row.names', by.y=opt$merge_mdata_on, all.x=T) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
171 if (opt$verbose) {cat("DONE\n")} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
172 }else{ | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
173 df = as.data.frame(scaledScores) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
174 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
175 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
176 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
177 if (opt$verbose) {print(head(df))} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
178 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
179 ######### | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
180 # OUTPUT | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
181 ######### | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
182 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
183 output_name = opt$output | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
184 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
185 # Print text outputs if required | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
186 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
187 # -- principal components -- | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
188 if (opt$print_scores) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
189 write.table(m_pca$x, sprintf("%s.PCs.tsv", output_name), quote=F, sep="\t") | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
190 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
191 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
192 # -- loadings -- | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
193 if (opt$print_loadings) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
194 write.table(m_pca$rotation, sprintf("%s.loadings.tsv", output_name), quote=F, sep="\t") | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
195 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
196 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
197 # -- lambdas -- | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
198 if (opt$print_lambdas) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
199 perc = round(100*m_pca$sdev/sum(m_pca$sdev), 2) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
200 variances = round(m_pca$sdev^2/sum(m_pca$sdev^2)*100, 2) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
201 out_df = data.frame(lambda=m_pca$sdev, perc=perc, var_perc=variances) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
202 write.table(out_df, sprintf("%s.lambdas.tsv", output_name), quote=F, sep="\t") | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
203 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
204 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
205 # Read the required components | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
206 prinComp = strsplit(opt$princomp, ",")[[1]] | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
207 prinComp_i = as.numeric(gsub("PC", "", prinComp)) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
208 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
209 # Get a vector with all the variance percentages | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
210 variances = round(m_pca$sdev^2/sum(m_pca$sdev^2)*100, 2) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
211 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
212 if (opt$biplot) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
213 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
214 aggrVar = opt$color_by | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
215 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
216 # === Centroids === | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
217 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
218 centroids = aggregate ( | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
219 formula(sprintf(".~%s", aggrVar)), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
220 df[,c(colnames(df)[grep("^PC", colnames(df))], aggrVar)], | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
221 mean | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
222 ) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
223 centroidsM = centroids[,-1] | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
224 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
225 # === Loadings === | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
226 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
227 vecNorm = function(x) {sqrt(sum(x**2))} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
228 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
229 scaledLoadings = sweep(m_pca$rotation, 2, m_pca$sdev * nrow(m_pca$x), "*") | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
230 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
231 centroidsNorm = apply(centroidsM[,prinComp], 1, vecNorm) # DIM: number of levels x 1 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
232 loadingsNorm = apply(scaledLoadings[,prinComp], 1, vecNorm) # DIM: number of variables x 1 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
233 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
234 cosine = ( scaledLoadings[,prinComp] %*% t(centroidsM[,prinComp]) ) / (loadingsNorm %*% t(centroidsNorm)) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
235 cosine = setNames(data.frame(cosine), centroids[,1]) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
236 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
237 closest = setNames(melt(apply(1-cosine, 2, rank)), c("variable", aggrVar, "rank")) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
238 write.table( closest, file=sprintf("%s.cosine.tsv", opt$output), quote=F, row.names=F, sep="\t"); | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
239 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
240 closest_df = data.frame(merge(closest, scaledLoadings, by.x="variable", by.y="row.names")) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
241 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
242 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
243 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
244 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
245 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
246 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
247 ############# | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
248 # PLOT | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
249 ############# | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
250 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
251 # plot parameters | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
252 pts = 5 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
253 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
254 l_col = opt$labels | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
255 base_size = opt$base_size | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
256 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
257 theme_set(theme_bw(base_size = base_size)) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
258 theme_update(legend.text=element_text(size=0.9*base_size), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
259 legend.key.size=unit(0.9*base_size, "points"), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
260 legend.key = element_blank() | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
261 ) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
262 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
263 top = 30 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
264 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
265 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
266 # Open device for plotting | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
267 pdf(sprintf("%s.pdf", output_name), w=opt$width, h=opt$height) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
268 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
269 if (length(prinComp) == 2){ | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
270 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
271 geom_params = list() | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
272 geom_params$size = pts | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
273 # geom_params$alpha = opt$alpha | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
274 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
275 mapping = list() | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
276 mapping <- modifyList(mapping, aes_string(x=prinComp[1], y=prinComp[2])) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
277 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
278 if (!is.null(opt$color_by)) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
279 gp_color_by=interaction(df[color_by]) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
280 if (!is.null(opt$sort_color)) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
281 gp_color_by = factor(gp_color_by, levels=sort_color) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
282 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
283 mapping = modifyList(mapping, aes_string(color=gp_color_by, order=gp_color_by)) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
284 } else { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
285 gp_color_by=NULL | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
286 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
287 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
288 if (!is.null(opt$shape_by)) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
289 gp_shape_by=interaction(df[shape_by]) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
290 if (!is.null(opt$sort_shape)) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
291 gp_shape_by = factor(gp_shape_by, levels=sort_shape) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
292 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
293 mapping = modifyList(mapping, aes_string(shape=gp_shape_by, order=gp_shape_by)) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
294 } else { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
295 gp_shape_by=NULL | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
296 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
297 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
298 # if (!is.na(opt$shape_by)) {gp_shape_by=interaction(df[shape_by]); | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
299 # gp_shape_by <- factor(gp_shape_by, levels=sort(levels(gp_shape_by))) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
300 # mapping = modifyList(mapping, aes_string(shape=S_col)) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
301 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
302 class(mapping) <- "uneval" | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
303 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
304 pointLayer <- layer( | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
305 geom = "point", | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
306 # geom_params = geom_params, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
307 params = geom_params, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
308 mapping = mapping, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
309 stat = "identity", | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
310 position = "identity" | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
311 ) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
312 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
313 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
314 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
315 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
316 # plotting... | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
317 gp = ggplot(df, aes_string(x=prinComp[1],y=prinComp[2])); | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
318 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
319 if (opt$biplot) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
320 gp = gp + geom_point(data=centroids, aes_string(x=prinComp[1], y=prinComp[2], color=opt$color_by), shape=8, size=7) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
321 gp = gp + geom_segment( | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
322 data=subset(closest_df, rank <= top), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
323 aes_string(x=0, y=0, xend=prinComp[1], yend=prinComp[2], color=opt$color_by) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
324 ) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
325 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
326 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
327 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
328 if (opt$border) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
329 if (!is.null(opt$shape_by)) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
330 gp = gp + geom_point(aes(shape=gp_shape_by), col='black', size=pts+1.0); | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
331 } else { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
332 gp = gp + geom_point(col="black", size=pts+1.0) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
333 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
334 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
335 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
336 gp = gp + pointLayer | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
337 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
338 # gp = gp + geom_point(aes(color=gp_color_by)) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
339 # gp = gp + geom_point(aes(col=gp_color_by, shape=gp_shape_by), size=pts); | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
340 # | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
341 gp = gp + labs(title=""); | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
342 gp = gp + labs(x=sprintf('%s (%s%%)', prinComp[1], variances[prinComp_i[1]])); | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
343 gp = gp + labs(y=sprintf('%s (%s%%)', prinComp[2], variances[prinComp_i[2]])); | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
344 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
345 gp = gp + scale_color_manual(name=opt$color_by, values=my_palette) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
346 if (!is.null(opt$shapes)) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
347 gp = gp + scale_shape_manual(name=opt$shape_by, values=my_shapes); | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
348 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
349 if (opt$no_legend) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
350 gp = gp + guides(shape=FALSE, color=FALSE) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
351 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
352 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
353 if (!is.null(opt$labels)) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
354 gp = gp + geom_text(aes_string(label=l_col), size=pts) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
355 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
356 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
357 gp | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
358 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
359 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
360 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
361 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
362 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
363 # -------------------- | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
364 # | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
365 # 3d scatterplot | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
366 # | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
367 # -------------------- | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
368 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
369 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
370 if (length(prinComp) == 3) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
371 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
372 suppressPackageStartupMessages(library(scatterplot3d)) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
373 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
374 par(xpd=NA, omi=c(0.5, 0.5, 0.5, 1.0)) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
375 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
376 if (!is.na(opt$color_by)) {gp_color=my_palette[interaction(df[color_by])]} else {gp_color="black"} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
377 if (!is.null(opt$shape_by)) {gp_shape_by=interaction(df[shape_by]); | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
378 gp_shape_by <- factor(gp_shape_by, levels=sort(intersect(levels(gp_shape_by), gp_shape_by))); gp_shape=my_shapes[gp_shape_by]} else {gp_shape_by=NULL} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
379 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
380 plot3d = scatterplot3d(df[prinComp], | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
381 color = gp_color, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
382 pch = gp_shape, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
383 xlab = sprintf('%s (%s%%)', prinComp[1], variances[prinComp_i[1]]), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
384 ylab = sprintf('%s (%s%%)', prinComp[2], variances[prinComp_i[2]]), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
385 zlab = sprintf('%s (%s%%)', prinComp[3], variances[prinComp_i[3]]), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
386 cex.symbols = 1.5, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
387 lab = c(5,4) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
388 ) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
389 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
390 # !!! To be removed after the mouse paper !!! | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
391 #i=0; for(sample in interaction(df[color_by])) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
392 #i=i+1; plot3d$points3d(subset(df, General_category == sample, select=prinComp), type='l', col=gp_color[i])} | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
393 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
394 if (!is.na(opt$color_by)) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
395 legend( | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
396 x = log(max(df[prinComp[1]])) + 3, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
397 # x = 5, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
398 y = 5.5, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
399 legend = levels(interaction(df[color_by])), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
400 fill = my_palette[seq_along(levels(interaction(df[color_by])))] | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
401 ) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
402 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
403 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
404 if (!is.na(opt$shape_by)) { | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
405 legend( | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
406 # x = -log(abs(min(df[prinComp[1]]))) - 1.5, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
407 x = -3, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
408 y = 6, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
409 # y = 7.2, | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
410 legend = levels(gp_shape_by), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
411 pch = my_shapes[seq_along(levels(gp_shape_by))] | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
412 ) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
413 # legend(-log(abs(min(df[prinComp[1]])))+1.5,7.2,levels(gp_shape_by), | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
414 # pch=shapes[seq_along(levels(gp_shape_by))]) | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
415 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
416 } | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
417 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
418 | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
419 dev.off() | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
420 q(save='no') | 
| 
 
610e86c430a9
planemo upload commit 0b661bcf940c03e11becd42b3321df9573b591b2
 
vmarcon 
parents:  
diff
changeset
 | 
421 | 
