annotate mtls_analyze/heatmap.R @ 4:b465306d00ba draft default tip

Uploaded
author kmace
date Mon, 23 Jul 2012 13:00:15 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
b465306d00ba Uploaded
kmace
parents:
diff changeset
1 GeneratePeakMatrix <- function(experiments, scores) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
2 # Generates a score matrix for all mtls.
b465306d00ba Uploaded
kmace
parents:
diff changeset
3 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
4 # Args:
b465306d00ba Uploaded
kmace
parents:
diff changeset
5 # experiments: A list of underscore deliminated experiments for each mtl.
b465306d00ba Uploaded
kmace
parents:
diff changeset
6 # There should never be a completely empty item in this list.
b465306d00ba Uploaded
kmace
parents:
diff changeset
7 # for eg. experiments[1] = expA_expD_expB.
b465306d00ba Uploaded
kmace
parents:
diff changeset
8 # scores: A list of underscore deliminated scores for each mtl, the length
b465306d00ba Uploaded
kmace
parents:
diff changeset
9 # of these scores should be identicle to the length of the
b465306d00ba Uploaded
kmace
parents:
diff changeset
10 # experiments. eg. scores[1] = 55_33_245.
b465306d00ba Uploaded
kmace
parents:
diff changeset
11 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
12 # Returns:
b465306d00ba Uploaded
kmace
parents:
diff changeset
13 # The peak score matrix for all mtls.
b465306d00ba Uploaded
kmace
parents:
diff changeset
14 experiments <- sapply(experiments, function(x) strsplit(x, split = "_"))
b465306d00ba Uploaded
kmace
parents:
diff changeset
15 scores <- sapply(scores, function(x) strsplit(x, split = "_"))
b465306d00ba Uploaded
kmace
parents:
diff changeset
16 unique.experiments <- unique(unlist(experiments))
b465306d00ba Uploaded
kmace
parents:
diff changeset
17
b465306d00ba Uploaded
kmace
parents:
diff changeset
18 peaks=matrix(0,nr=length(experiments),nc=length(unique.experiments))
b465306d00ba Uploaded
kmace
parents:
diff changeset
19 colnames(peaks) <- unique.experiments
b465306d00ba Uploaded
kmace
parents:
diff changeset
20
b465306d00ba Uploaded
kmace
parents:
diff changeset
21 for(i in 1:length(experiments)){
b465306d00ba Uploaded
kmace
parents:
diff changeset
22 for(j in 1:length(experiments[[i]])){
b465306d00ba Uploaded
kmace
parents:
diff changeset
23 peaks[i,experiments[[i]][j]]=as.numeric(scores[[i]][j])
b465306d00ba Uploaded
kmace
parents:
diff changeset
24 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
25 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
26 return(peaks)
b465306d00ba Uploaded
kmace
parents:
diff changeset
27 ##################################################################
b465306d00ba Uploaded
kmace
parents:
diff changeset
28 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
29 GetChipData <- function(file.name,
b465306d00ba Uploaded
kmace
parents:
diff changeset
30 proximity = "distal",
b465306d00ba Uploaded
kmace
parents:
diff changeset
31 include.targetless = TRUE,
b465306d00ba Uploaded
kmace
parents:
diff changeset
32 column.order = NA) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
33 # Reads in, filters, and organizes mtls data
b465306d00ba Uploaded
kmace
parents:
diff changeset
34 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
35 # Args:
b465306d00ba Uploaded
kmace
parents:
diff changeset
36 # file.name: The path to the mtls file (including the file name).
b465306d00ba Uploaded
kmace
parents:
diff changeset
37 # proximity: Either "distal" or "proximal", defines the gene target distance
b465306d00ba Uploaded
kmace
parents:
diff changeset
38 # from the mtl. Default is "distal".
b465306d00ba Uploaded
kmace
parents:
diff changeset
39 # include.targetless: If TRUE, includes mtls with no targets (applied after
b465306d00ba Uploaded
kmace
parents:
diff changeset
40 # the proximity filter); if not, mtls with no target
b465306d00ba Uploaded
kmace
parents:
diff changeset
41 # will be exclided. Default is TRUE.
b465306d00ba Uploaded
kmace
parents:
diff changeset
42 # column.order: An optional vector of column names in the order in which
b465306d00ba Uploaded
kmace
parents:
diff changeset
43 # they will be presented. If this is left to default (NA) the
b465306d00ba Uploaded
kmace
parents:
diff changeset
44 # presented order of the chip columns will be the order in
b465306d00ba Uploaded
kmace
parents:
diff changeset
45 # which they are seen.
b465306d00ba Uploaded
kmace
parents:
diff changeset
46 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
47 # Returns:
b465306d00ba Uploaded
kmace
parents:
diff changeset
48 # An organized list of mtls data with the following elements:
b465306d00ba Uploaded
kmace
parents:
diff changeset
49 # $peaks - a matrix of peak p-values
b465306d00ba Uploaded
kmace
parents:
diff changeset
50 # $targets - a list of underscore deliminated gene targets for each mtl
b465306d00ba Uploaded
kmace
parents:
diff changeset
51 if(param$debug) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
52 print("In GetChipData")
b465306d00ba Uploaded
kmace
parents:
diff changeset
53 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
54 # Set Constants for the mtls file type:
b465306d00ba Uploaded
kmace
parents:
diff changeset
55 MTLNUM <- "mtl.id"
b465306d00ba Uploaded
kmace
parents:
diff changeset
56 CHROMOSOME <- "chr"
b465306d00ba Uploaded
kmace
parents:
diff changeset
57 EXPERIMENTS <- "expt"
b465306d00ba Uploaded
kmace
parents:
diff changeset
58 EXPERIMENTS.SORTED <- "expt.alphanum.sorted"
b465306d00ba Uploaded
kmace
parents:
diff changeset
59 START <- "start"
b465306d00ba Uploaded
kmace
parents:
diff changeset
60 END <- "end"
b465306d00ba Uploaded
kmace
parents:
diff changeset
61 SUMMIT <- "summit"
b465306d00ba Uploaded
kmace
parents:
diff changeset
62 SCORES <- "score"
b465306d00ba Uploaded
kmace
parents:
diff changeset
63 SCORE.MEAN <- "score.mean"
b465306d00ba Uploaded
kmace
parents:
diff changeset
64 SPANS <- "span.tfs"
b465306d00ba Uploaded
kmace
parents:
diff changeset
65 SPAN.TOTAL <- "span.l"
b465306d00ba Uploaded
kmace
parents:
diff changeset
66 PEAK.IDS <- "peak.ids"
b465306d00ba Uploaded
kmace
parents:
diff changeset
67 TARGETS <- "trgt"
b465306d00ba Uploaded
kmace
parents:
diff changeset
68 # PROXIMAL.TARGETS <- "trgt.prox"
b465306d00ba Uploaded
kmace
parents:
diff changeset
69 # DISTAL.TARGETS <- "trgt.dist"
b465306d00ba Uploaded
kmace
parents:
diff changeset
70 # PROXIMAL.TARGETS.TSS.DISTANCE <- "dtss.prox"
b465306d00ba Uploaded
kmace
parents:
diff changeset
71 # DISTAL.TARGETS.TSS.DISTANCE <- "dtss.dist"
b465306d00ba Uploaded
kmace
parents:
diff changeset
72
b465306d00ba Uploaded
kmace
parents:
diff changeset
73
b465306d00ba Uploaded
kmace
parents:
diff changeset
74 #Get chip data in from files:
b465306d00ba Uploaded
kmace
parents:
diff changeset
75 #TARGETS <- switch(proximity,
b465306d00ba Uploaded
kmace
parents:
diff changeset
76 # distal = DISTAL.TARGETS,
b465306d00ba Uploaded
kmace
parents:
diff changeset
77 # proximal = PROXIMAL.TARGETS,
b465306d00ba Uploaded
kmace
parents:
diff changeset
78 # stop(" Bad proximity argument supplied.")) # Default
b465306d00ba Uploaded
kmace
parents:
diff changeset
79 cat("param$rna.files = ", param$rna.files, "\n")
b465306d00ba Uploaded
kmace
parents:
diff changeset
80 if(!is.na(param$rna.files) && param$rna.files != "none") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
81 keep.columns <- c(EXPERIMENTS, SCORES, TARGETS)
b465306d00ba Uploaded
kmace
parents:
diff changeset
82 } else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
83 keep.columns <- c(EXPERIMENTS, SCORES)
b465306d00ba Uploaded
kmace
parents:
diff changeset
84 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
85 file <- read.delim(file.name, header=T, as.is=T)[, keep.columns]
b465306d00ba Uploaded
kmace
parents:
diff changeset
86 if(!is.na(param$rna.files) && param$rna.files != "none") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
87 if (!include.targetless) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
88 ix.has.trgt <- which(as.character(file[, TARGETS])!="")
b465306d00ba Uploaded
kmace
parents:
diff changeset
89 file <- file[ix.has.trgt, ]
b465306d00ba Uploaded
kmace
parents:
diff changeset
90 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
91 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
92 chip = list()
b465306d00ba Uploaded
kmace
parents:
diff changeset
93
b465306d00ba Uploaded
kmace
parents:
diff changeset
94 chip$peaks <- GeneratePeakMatrix(file[, EXPERIMENTS], file[, SCORES])
b465306d00ba Uploaded
kmace
parents:
diff changeset
95 if(!is.na(column.order)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
96 #If you specify an order, or a subset of experiments to include, this is where
b465306d00ba Uploaded
kmace
parents:
diff changeset
97 #that gets done.
b465306d00ba Uploaded
kmace
parents:
diff changeset
98 order <- unlist(strsplit(column.order, split="::"))
b465306d00ba Uploaded
kmace
parents:
diff changeset
99 chip$peaks <- chip$peaks[,order]
b465306d00ba Uploaded
kmace
parents:
diff changeset
100 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
101 if(!is.na(param$rna.files) && param$rna.files != "none") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
102 chip$targets <- file[ , TARGETS]
b465306d00ba Uploaded
kmace
parents:
diff changeset
103 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
104
b465306d00ba Uploaded
kmace
parents:
diff changeset
105 return (chip)
b465306d00ba Uploaded
kmace
parents:
diff changeset
106 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
107 GetRNADataFromOneFile <- function(file.name, fpkm = "avg") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
108 # Reads in rna expression data from cufflinks
b465306d00ba Uploaded
kmace
parents:
diff changeset
109 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
110 # Args:
b465306d00ba Uploaded
kmace
parents:
diff changeset
111 # file.name: The path to the cufflinks file (including the file name).
b465306d00ba Uploaded
kmace
parents:
diff changeset
112 # fpkm: What fpkm is chosen, options are hi, low and avg
b465306d00ba Uploaded
kmace
parents:
diff changeset
113 # Returns:
b465306d00ba Uploaded
kmace
parents:
diff changeset
114 # An organized vector of rnaseq data with the following elements:
b465306d00ba Uploaded
kmace
parents:
diff changeset
115 # names(data) - the genes from the file. eg names(data[1]) = JUND
b465306d00ba Uploaded
kmace
parents:
diff changeset
116 # data - the fpkm score for that gene data[1] = 31
b465306d00ba Uploaded
kmace
parents:
diff changeset
117 if(param$debug) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
118 cat("In GetRNADataFromOneFile for ",file.name)
b465306d00ba Uploaded
kmace
parents:
diff changeset
119 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
120
b465306d00ba Uploaded
kmace
parents:
diff changeset
121 # Set Constants for the cufflinks file type:
b465306d00ba Uploaded
kmace
parents:
diff changeset
122 GENE <- "gene_id"
b465306d00ba Uploaded
kmace
parents:
diff changeset
123 BUNDLE <- "bundle_id"
b465306d00ba Uploaded
kmace
parents:
diff changeset
124 CHROMOSOME <- "chr"
b465306d00ba Uploaded
kmace
parents:
diff changeset
125 LEFT <- "left"
b465306d00ba Uploaded
kmace
parents:
diff changeset
126 RIGHT <- "right"
b465306d00ba Uploaded
kmace
parents:
diff changeset
127 FPKM_AVG <- "FPKM"
b465306d00ba Uploaded
kmace
parents:
diff changeset
128 FPKM_LOW <- "FPKM_conf_lo"
b465306d00ba Uploaded
kmace
parents:
diff changeset
129 FPKM_HIGH <- "FPKM_conf_hi"
b465306d00ba Uploaded
kmace
parents:
diff changeset
130 STATUS <- "status"
b465306d00ba Uploaded
kmace
parents:
diff changeset
131
b465306d00ba Uploaded
kmace
parents:
diff changeset
132
b465306d00ba Uploaded
kmace
parents:
diff changeset
133 #Get chip data in from files:
b465306d00ba Uploaded
kmace
parents:
diff changeset
134 FPKM <- switch(fpkm,
b465306d00ba Uploaded
kmace
parents:
diff changeset
135 hi = FPKM_HIGH,
b465306d00ba Uploaded
kmace
parents:
diff changeset
136 avg = FPKM_AVG,
b465306d00ba Uploaded
kmace
parents:
diff changeset
137 low = FPKM_LOW,
b465306d00ba Uploaded
kmace
parents:
diff changeset
138 stop(" Bad fpkm quality argument supplied.")) # Default
b465306d00ba Uploaded
kmace
parents:
diff changeset
139
b465306d00ba Uploaded
kmace
parents:
diff changeset
140 keep.columns <- c(GENE, FPKM)
b465306d00ba Uploaded
kmace
parents:
diff changeset
141
b465306d00ba Uploaded
kmace
parents:
diff changeset
142 file <- read.delim(file.name, header=T, as.is=T)[, keep.columns]
b465306d00ba Uploaded
kmace
parents:
diff changeset
143
b465306d00ba Uploaded
kmace
parents:
diff changeset
144 rna = vector(mode = "numeric", length = nrow(file))
b465306d00ba Uploaded
kmace
parents:
diff changeset
145
b465306d00ba Uploaded
kmace
parents:
diff changeset
146 rna <- file[, FPKM]
b465306d00ba Uploaded
kmace
parents:
diff changeset
147 names(rna) <- file[ , GENE]
b465306d00ba Uploaded
kmace
parents:
diff changeset
148 return (rna)
b465306d00ba Uploaded
kmace
parents:
diff changeset
149 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
150
b465306d00ba Uploaded
kmace
parents:
diff changeset
151 GetRNAData <- function(file.names, file.lables = file.names, fpkm = "avg") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
152 # Reads in rna expression data from cufflinks
b465306d00ba Uploaded
kmace
parents:
diff changeset
153 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
154 # Args:
b465306d00ba Uploaded
kmace
parents:
diff changeset
155 # file.names: The list of paths to the cufflinks files (including the file name).
b465306d00ba Uploaded
kmace
parents:
diff changeset
156 # fpkm: What fpkm is chosen, options are hi, low and avg
b465306d00ba Uploaded
kmace
parents:
diff changeset
157 # Returns:
b465306d00ba Uploaded
kmace
parents:
diff changeset
158 # A matrix of rnaseq data with the following description:
b465306d00ba Uploaded
kmace
parents:
diff changeset
159 # each col corresponds to an rnaseq run
b465306d00ba Uploaded
kmace
parents:
diff changeset
160 # eacg row corresponds to a gene
b465306d00ba Uploaded
kmace
parents:
diff changeset
161 if(param$debug) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
162 print("In GetRNAData")
b465306d00ba Uploaded
kmace
parents:
diff changeset
163 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
164 files <- list()
b465306d00ba Uploaded
kmace
parents:
diff changeset
165 for(i in 1:length(file.names)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
166 files[[i]] <-GetRNADataFromOneFile(file.names[i])
b465306d00ba Uploaded
kmace
parents:
diff changeset
167 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
168 genes <- unique(names(unlist(files)))
b465306d00ba Uploaded
kmace
parents:
diff changeset
169 scores <- matrix(0,nrow=length(genes),ncol=length(file.names))
b465306d00ba Uploaded
kmace
parents:
diff changeset
170 rownames(scores) <- genes
b465306d00ba Uploaded
kmace
parents:
diff changeset
171 colnames(scores) <- file.names
b465306d00ba Uploaded
kmace
parents:
diff changeset
172
b465306d00ba Uploaded
kmace
parents:
diff changeset
173 for(j in 1:length(file.names)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
174 scores[names(files[[j]]),j] <- files[[j]]
b465306d00ba Uploaded
kmace
parents:
diff changeset
175 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
176 print("# of cols for scores is ")
b465306d00ba Uploaded
kmace
parents:
diff changeset
177 print(ncol(scores))
b465306d00ba Uploaded
kmace
parents:
diff changeset
178 print ("file lables are ")
b465306d00ba Uploaded
kmace
parents:
diff changeset
179 print (file.lables)
b465306d00ba Uploaded
kmace
parents:
diff changeset
180 colnames(scores) <- file.lables
b465306d00ba Uploaded
kmace
parents:
diff changeset
181 return(scores)
b465306d00ba Uploaded
kmace
parents:
diff changeset
182 #scores[genes,file.names] <- files[[]]
b465306d00ba Uploaded
kmace
parents:
diff changeset
183 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
184
b465306d00ba Uploaded
kmace
parents:
diff changeset
185 NormalizeRNA <- function(scores) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
186
b465306d00ba Uploaded
kmace
parents:
diff changeset
187 #add psudocount
b465306d00ba Uploaded
kmace
parents:
diff changeset
188 scores <- scores+1
b465306d00ba Uploaded
kmace
parents:
diff changeset
189
b465306d00ba Uploaded
kmace
parents:
diff changeset
190 numerator <- scores[,1:(ncol(scores)/2)]
b465306d00ba Uploaded
kmace
parents:
diff changeset
191 denominator <- scores[,(ncol(scores)/2 + 1):ncol(scores)]
b465306d00ba Uploaded
kmace
parents:
diff changeset
192
b465306d00ba Uploaded
kmace
parents:
diff changeset
193 #new.scores <- scores[,-which(colnames(scores) == norm.exp)]
b465306d00ba Uploaded
kmace
parents:
diff changeset
194 #norm.score <- scores[,which(colnames(scores) == norm.exp)]
b465306d00ba Uploaded
kmace
parents:
diff changeset
195 #return(log2(new.scores/norm.score))
b465306d00ba Uploaded
kmace
parents:
diff changeset
196
b465306d00ba Uploaded
kmace
parents:
diff changeset
197 return(log2(numerator/denominator))
b465306d00ba Uploaded
kmace
parents:
diff changeset
198
b465306d00ba Uploaded
kmace
parents:
diff changeset
199 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
200
b465306d00ba Uploaded
kmace
parents:
diff changeset
201 PrepareRNAforHeatmap <- function(new.scores.foldchange){
b465306d00ba Uploaded
kmace
parents:
diff changeset
202 new.scores.split <- matrix(0, nr=nrow(new.scores.foldchange), nc=2*ncol(new.scores.foldchange))
b465306d00ba Uploaded
kmace
parents:
diff changeset
203 is.even <- function(x){ x %% 2 == 0 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
204 corresponding.col <- function(x){ceiling(x/2)}
b465306d00ba Uploaded
kmace
parents:
diff changeset
205 new.col.names <- vector(length = ncol(new.scores.split))
b465306d00ba Uploaded
kmace
parents:
diff changeset
206 rownames(new.scores.split) <- rownames(new.scores.foldchange)
b465306d00ba Uploaded
kmace
parents:
diff changeset
207 for(i in 1:ncol(new.scores.split)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
208 if(is.even(i)) {sign <- "down"} else {sign <- "up"}
b465306d00ba Uploaded
kmace
parents:
diff changeset
209 new.col.names[i] <- paste(colnames(new.scores.foldchange)[corresponding.col(i)],
b465306d00ba Uploaded
kmace
parents:
diff changeset
210 sign, sep =".")
b465306d00ba Uploaded
kmace
parents:
diff changeset
211 new.scores.split[,i] <- new.scores.foldchange[,corresponding.col(i)]
b465306d00ba Uploaded
kmace
parents:
diff changeset
212 if(is.even(i)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
213 new.scores.split[which(new.scores.split[,i]>0),i] <- 0
b465306d00ba Uploaded
kmace
parents:
diff changeset
214 new.scores.split[,i] <- -1*new.scores.split[,i]
b465306d00ba Uploaded
kmace
parents:
diff changeset
215 } else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
216 new.scores.split[which(new.scores.split[,i]<0),i] <- 0
b465306d00ba Uploaded
kmace
parents:
diff changeset
217 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
218 colnames(new.scores.split) <- new.col.names
b465306d00ba Uploaded
kmace
parents:
diff changeset
219 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
220 return(new.scores.split)}
b465306d00ba Uploaded
kmace
parents:
diff changeset
221
b465306d00ba Uploaded
kmace
parents:
diff changeset
222 #ConvertExpressionToPval = function(expression, threshold = 1)
b465306d00ba Uploaded
kmace
parents:
diff changeset
223 #{
b465306d00ba Uploaded
kmace
parents:
diff changeset
224 # print("In ConvertExpressionToPval")
b465306d00ba Uploaded
kmace
parents:
diff changeset
225 # #Generate Normal Stats
b465306d00ba Uploaded
kmace
parents:
diff changeset
226 # # expression.mean = apply(expression, 2, mean)
b465306d00ba Uploaded
kmace
parents:
diff changeset
227 # # expression.sd = apply(expression, 2, sd)
b465306d00ba Uploaded
kmace
parents:
diff changeset
228 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
229 # ix.above.threshold = which(expression > threshold)
b465306d00ba Uploaded
kmace
parents:
diff changeset
230 # expression.mean = apply(expression, 2, function(i) mean(i[which(i > threshold)]))
b465306d00ba Uploaded
kmace
parents:
diff changeset
231 # expression.sd = apply(expression, 2, function(i) sd(i[which(i > threshold)]))
b465306d00ba Uploaded
kmace
parents:
diff changeset
232 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
233
b465306d00ba Uploaded
kmace
parents:
diff changeset
234 # # CDF from zero to point
b465306d00ba Uploaded
kmace
parents:
diff changeset
235 # # expression.pval = matrix(,nr=nrow(expression),nc=ncol(expression),dimnames=dimnames(expression))
b465306d00ba Uploaded
kmace
parents:
diff changeset
236 # # ix.low = which(expression < expression.mean)
b465306d00ba Uploaded
kmace
parents:
diff changeset
237 # # ix.upper = which(expression >= expression.mean)
b465306d00ba Uploaded
kmace
parents:
diff changeset
238 # # expression.pval[ix.low] = (-10 * pnorm(expression[ix.low], mean = expression.mean, sd = expression.sd, log=T) *log10(exp(1)))
b465306d00ba Uploaded
kmace
parents:
diff changeset
239 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
240 # expression.pval = (-10 * log10(exp(1)) * pnorm(expression,
b465306d00ba Uploaded
kmace
parents:
diff changeset
241 # mean = expression.mean,
b465306d00ba Uploaded
kmace
parents:
diff changeset
242 # sd = expression.sd,
b465306d00ba Uploaded
kmace
parents:
diff changeset
243 # log=T,
b465306d00ba Uploaded
kmace
parents:
diff changeset
244 # lower.tail=F
b465306d00ba Uploaded
kmace
parents:
diff changeset
245 # )
b465306d00ba Uploaded
kmace
parents:
diff changeset
246 # )
b465306d00ba Uploaded
kmace
parents:
diff changeset
247 # #squash those under threshold to zero
b465306d00ba Uploaded
kmace
parents:
diff changeset
248 # expression.pval[-ix.above.threshold] = 0
b465306d00ba Uploaded
kmace
parents:
diff changeset
249
b465306d00ba Uploaded
kmace
parents:
diff changeset
250 # # correct for upper tail (ie from point to inf)
b465306d00ba Uploaded
kmace
parents:
diff changeset
251 # #Still need to do
b465306d00ba Uploaded
kmace
parents:
diff changeset
252 # return (expression.pval)
b465306d00ba Uploaded
kmace
parents:
diff changeset
253 #}
b465306d00ba Uploaded
kmace
parents:
diff changeset
254 MapExpressiontoChip2 = function(chip.targets, expression)
b465306d00ba Uploaded
kmace
parents:
diff changeset
255 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
256 mymatrix = matrix(0, nr=length(chip.targets), nc=ncol(expression))
b465306d00ba Uploaded
kmace
parents:
diff changeset
257 rownames(mymatrix) <- chip.targets
b465306d00ba Uploaded
kmace
parents:
diff changeset
258 colnames(mymatrix) <- colnames(expression)
b465306d00ba Uploaded
kmace
parents:
diff changeset
259
b465306d00ba Uploaded
kmace
parents:
diff changeset
260
b465306d00ba Uploaded
kmace
parents:
diff changeset
261 j <- 1 #expression counter
b465306d00ba Uploaded
kmace
parents:
diff changeset
262 i <- 1 #mymatrix counter
b465306d00ba Uploaded
kmace
parents:
diff changeset
263 expression.genes <- rownames(expression)
b465306d00ba Uploaded
kmace
parents:
diff changeset
264 previous.expression.gene <- expression.genes[j]
b465306d00ba Uploaded
kmace
parents:
diff changeset
265
b465306d00ba Uploaded
kmace
parents:
diff changeset
266 # Progress bar:
b465306d00ba Uploaded
kmace
parents:
diff changeset
267 total <- length(chip.targets)
b465306d00ba Uploaded
kmace
parents:
diff changeset
268 # create progress bar
b465306d00ba Uploaded
kmace
parents:
diff changeset
269 pb <- txtProgressBar(min = 0, max = total, style = 3)
b465306d00ba Uploaded
kmace
parents:
diff changeset
270
b465306d00ba Uploaded
kmace
parents:
diff changeset
271 for ( i in 1:length(chip.targets)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
272 current.target <- chip.targets[i]
b465306d00ba Uploaded
kmace
parents:
diff changeset
273 setTxtProgressBar(pb, i)
b465306d00ba Uploaded
kmace
parents:
diff changeset
274 while (current.target > previous.expression.gene && j<=length(expression.genes)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
275 j <- j + 1
b465306d00ba Uploaded
kmace
parents:
diff changeset
276 previous.expression.gene <- expression.genes[j]
b465306d00ba Uploaded
kmace
parents:
diff changeset
277 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
278 if (current.target == previous.expression.gene){
b465306d00ba Uploaded
kmace
parents:
diff changeset
279 mymatrix[i,] <- expression[j,]
b465306d00ba Uploaded
kmace
parents:
diff changeset
280 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
281 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
282
b465306d00ba Uploaded
kmace
parents:
diff changeset
283 close(pb)
b465306d00ba Uploaded
kmace
parents:
diff changeset
284
b465306d00ba Uploaded
kmace
parents:
diff changeset
285 print("Leaving MapRNAtoChip")
b465306d00ba Uploaded
kmace
parents:
diff changeset
286 return(mymatrix)
b465306d00ba Uploaded
kmace
parents:
diff changeset
287 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
288
b465306d00ba Uploaded
kmace
parents:
diff changeset
289
b465306d00ba Uploaded
kmace
parents:
diff changeset
290 MapExpressiontoChip = function(chip.targets, expression)
b465306d00ba Uploaded
kmace
parents:
diff changeset
291 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
292 print("In MapRNAtoChip")
b465306d00ba Uploaded
kmace
parents:
diff changeset
293 # targets = unlist(strsplit(chip$targets[i], "_"))
b465306d00ba Uploaded
kmace
parents:
diff changeset
294 # exp = matrix(rna$all.pval[targets, ])
b465306d00ba Uploaded
kmace
parents:
diff changeset
295 # return (apply(exp, 2, mean))
b465306d00ba Uploaded
kmace
parents:
diff changeset
296
b465306d00ba Uploaded
kmace
parents:
diff changeset
297 #rna col 1 = th0 overexpressed
b465306d00ba Uploaded
kmace
parents:
diff changeset
298 #rna col 2 = th17 overexpressed
b465306d00ba Uploaded
kmace
parents:
diff changeset
299 #rna col 3 = true zscores
b465306d00ba Uploaded
kmace
parents:
diff changeset
300
b465306d00ba Uploaded
kmace
parents:
diff changeset
301
b465306d00ba Uploaded
kmace
parents:
diff changeset
302
b465306d00ba Uploaded
kmace
parents:
diff changeset
303
b465306d00ba Uploaded
kmace
parents:
diff changeset
304
b465306d00ba Uploaded
kmace
parents:
diff changeset
305
b465306d00ba Uploaded
kmace
parents:
diff changeset
306 ####################################################################
b465306d00ba Uploaded
kmace
parents:
diff changeset
307 chip.targets.notnull.unique <- unique(chip.targets[which(chip.targets!="")])
b465306d00ba Uploaded
kmace
parents:
diff changeset
308 gene.intersect <- intersect(rownames(expression), chip.targets.notnull.unique)
b465306d00ba Uploaded
kmace
parents:
diff changeset
309 chip.targets.notnull.unique.with.data <- chip.targets.notnull.unique[which(chip.targets.notnull.unique %in% gene.intersect)]
b465306d00ba Uploaded
kmace
parents:
diff changeset
310 expression.useful.data <- expression[which(rownames(expression) %in% gene.intersect),]
b465306d00ba Uploaded
kmace
parents:
diff changeset
311 chip.targets.notnull.unique.with.data.sorted <- chip.targets.notnull.unique.with.data[order(chip.targets.notnull.unique.with.data)]
b465306d00ba Uploaded
kmace
parents:
diff changeset
312 expression.useful.data.sorted <- expression.useful.data[order(rownames(expression.useful.data)),]
b465306d00ba Uploaded
kmace
parents:
diff changeset
313 ####################################################################
b465306d00ba Uploaded
kmace
parents:
diff changeset
314
b465306d00ba Uploaded
kmace
parents:
diff changeset
315 mymatrix = matrix(0, nr=length(chip.targets), nc=ncol(expression))
b465306d00ba Uploaded
kmace
parents:
diff changeset
316 rownames(mymatrix) <- chip.targets
b465306d00ba Uploaded
kmace
parents:
diff changeset
317 colnames(mymatrix) <- colnames(expression)
b465306d00ba Uploaded
kmace
parents:
diff changeset
318 head(chip.targets.notnull.unique.with.data.sorted)
b465306d00ba Uploaded
kmace
parents:
diff changeset
319 head(rownames(expression.useful.data.sorted))
b465306d00ba Uploaded
kmace
parents:
diff changeset
320 if(!identical(chip.targets.notnull.unique.with.data.sorted, rownames(expression.useful.data.sorted))){
b465306d00ba Uploaded
kmace
parents:
diff changeset
321 stop("We have a serious problem, chip is not alligned to expression")
b465306d00ba Uploaded
kmace
parents:
diff changeset
322 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
323 for(i in 1:length(chip.targets.notnull.unique.with.data.sorted))
b465306d00ba Uploaded
kmace
parents:
diff changeset
324 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
325 mtls.ix <- which(chip.targets == chip.targets.notnull.unique.with.data.sorted[i])
b465306d00ba Uploaded
kmace
parents:
diff changeset
326 for(j in 1:length(mtls.ix)){
b465306d00ba Uploaded
kmace
parents:
diff changeset
327 mymatrix[mtls.ix[j],] <- expression.useful.data.sorted[i,]
b465306d00ba Uploaded
kmace
parents:
diff changeset
328 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
329 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
330 print("Leaving MapRNAtoChip")
b465306d00ba Uploaded
kmace
parents:
diff changeset
331 return(mymatrix)
b465306d00ba Uploaded
kmace
parents:
diff changeset
332
b465306d00ba Uploaded
kmace
parents:
diff changeset
333 #return( sapply(chip$targets, function(x) apply(rna$all.pval[unlist(strsplit(chip$targets[3], "_")), ], 2, mean)) )
b465306d00ba Uploaded
kmace
parents:
diff changeset
334 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
335
b465306d00ba Uploaded
kmace
parents:
diff changeset
336
b465306d00ba Uploaded
kmace
parents:
diff changeset
337
b465306d00ba Uploaded
kmace
parents:
diff changeset
338
b465306d00ba Uploaded
kmace
parents:
diff changeset
339
b465306d00ba Uploaded
kmace
parents:
diff changeset
340 GenerateKMOrder <- function(data, km) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
341 # generates the order of clusters from high to low mean values
b465306d00ba Uploaded
kmace
parents:
diff changeset
342 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
343 # Args:
b465306d00ba Uploaded
kmace
parents:
diff changeset
344 # data: A matrix of scores that have already been clustered.
b465306d00ba Uploaded
kmace
parents:
diff changeset
345 # km: The K-means object generated from running kmeans on data. Another
b465306d00ba Uploaded
kmace
parents:
diff changeset
346 # method could be used so long as it supplies a (km)$cluser list. Must
b465306d00ba Uploaded
kmace
parents:
diff changeset
347 # have the same length as the number of rows in data
b465306d00ba Uploaded
kmace
parents:
diff changeset
348 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
349 # Returns:
b465306d00ba Uploaded
kmace
parents:
diff changeset
350 # cluster.order: The order in which the clusters should be displayed.
b465306d00ba Uploaded
kmace
parents:
diff changeset
351
b465306d00ba Uploaded
kmace
parents:
diff changeset
352 km.cluster = km$cluster
b465306d00ba Uploaded
kmace
parents:
diff changeset
353 clusters = unique(km.cluster)
b465306d00ba Uploaded
kmace
parents:
diff changeset
354 clusters.avg = numeric()
b465306d00ba Uploaded
kmace
parents:
diff changeset
355 for(i in clusters) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
356 clusters.avg = c(clusters.avg, mean(data[which(km.cluster == i), ]))
b465306d00ba Uploaded
kmace
parents:
diff changeset
357 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
358 if(param$debug) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
359 print ("straight clusters")
b465306d00ba Uploaded
kmace
parents:
diff changeset
360 print (clusters)
b465306d00ba Uploaded
kmace
parents:
diff changeset
361 print ("straigth average")
b465306d00ba Uploaded
kmace
parents:
diff changeset
362 print (clusters.avg)
b465306d00ba Uploaded
kmace
parents:
diff changeset
363 print ("ordered clusters")
b465306d00ba Uploaded
kmace
parents:
diff changeset
364 print (clusters[order(clusters.avg)])
b465306d00ba Uploaded
kmace
parents:
diff changeset
365 print("ordered average")
b465306d00ba Uploaded
kmace
parents:
diff changeset
366 print (clusters.avg[order(clusters.avg)])
b465306d00ba Uploaded
kmace
parents:
diff changeset
367 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
368 return(clusters[rev(order(clusters.avg))])
b465306d00ba Uploaded
kmace
parents:
diff changeset
369 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
370
b465306d00ba Uploaded
kmace
parents:
diff changeset
371 OrderMTL <- function(data, km, cluster.order) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
372 # Orders a matrix of data according to a clustering algorithm
b465306d00ba Uploaded
kmace
parents:
diff changeset
373 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
374 # Args:
b465306d00ba Uploaded
kmace
parents:
diff changeset
375 # data: A matrix of scores that have already been clustered.
b465306d00ba Uploaded
kmace
parents:
diff changeset
376 # km: The K-means object generated from running kmeans on data. Another
b465306d00ba Uploaded
kmace
parents:
diff changeset
377 # method could be used so long as it supplies a (km)$cluser list. Must
b465306d00ba Uploaded
kmace
parents:
diff changeset
378 # have the same length as the number of rows in data
b465306d00ba Uploaded
kmace
parents:
diff changeset
379 # cluster.order: The order in which the clusters should be displayed.
b465306d00ba Uploaded
kmace
parents:
diff changeset
380 # for eg. km.order = c(2, 3, 1) would result in cluster 2
b465306d00ba Uploaded
kmace
parents:
diff changeset
381 # being on top, then cluster 3 and lastly cluster 1.
b465306d00ba Uploaded
kmace
parents:
diff changeset
382 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
383 # Returns:
b465306d00ba Uploaded
kmace
parents:
diff changeset
384 # a list that contains 3 objects:
b465306d00ba Uploaded
kmace
parents:
diff changeset
385 # list$data: the ordered version of the data.
b465306d00ba Uploaded
kmace
parents:
diff changeset
386 # list$color.vector: a list of colors that should be assigned to each row.
b465306d00ba Uploaded
kmace
parents:
diff changeset
387 # list$start.row: the starting row of each cluster in data.
b465306d00ba Uploaded
kmace
parents:
diff changeset
388 number.clusters <- length(cluster.order)
b465306d00ba Uploaded
kmace
parents:
diff changeset
389 cluster.colors <- sample(rainbow(number.clusters))
b465306d00ba Uploaded
kmace
parents:
diff changeset
390
b465306d00ba Uploaded
kmace
parents:
diff changeset
391 # Set up return objects
b465306d00ba Uploaded
kmace
parents:
diff changeset
392 sorted.data <- matrix(,nr=nrow(data), nc=ncol(data))
b465306d00ba Uploaded
kmace
parents:
diff changeset
393 colnames(sorted.data) <- colnames(data)
b465306d00ba Uploaded
kmace
parents:
diff changeset
394 cluster.color.vector = vector(length=length(km$cluster))
b465306d00ba Uploaded
kmace
parents:
diff changeset
395 cluster.start.row = numeric(number.clusters)
b465306d00ba Uploaded
kmace
parents:
diff changeset
396 cluster.start.row[1]=1
b465306d00ba Uploaded
kmace
parents:
diff changeset
397
b465306d00ba Uploaded
kmace
parents:
diff changeset
398 for (i in 1:number.clusters)
b465306d00ba Uploaded
kmace
parents:
diff changeset
399 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
400 current.cluster = cluster.order[i]
b465306d00ba Uploaded
kmace
parents:
diff changeset
401 ix = which(km$cluster == current.cluster)
b465306d00ba Uploaded
kmace
parents:
diff changeset
402 current.cluster.range <- cluster.start.row[i]:(cluster.start.row[i]+length(ix)-1)
b465306d00ba Uploaded
kmace
parents:
diff changeset
403 sorted.data[current.cluster.range, ] = data[ix, ]
b465306d00ba Uploaded
kmace
parents:
diff changeset
404 cluster.color.vector[current.cluster.range] = cluster.colors[i]
b465306d00ba Uploaded
kmace
parents:
diff changeset
405 cluster.start.row[i+1] = (cluster.start.row[i]+length(ix))
b465306d00ba Uploaded
kmace
parents:
diff changeset
406 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
407 ret.list = list()
b465306d00ba Uploaded
kmace
parents:
diff changeset
408 ret.list$data = sorted.data
b465306d00ba Uploaded
kmace
parents:
diff changeset
409 ret.list$color.vector = cluster.color.vector
b465306d00ba Uploaded
kmace
parents:
diff changeset
410 ret.list$cluster.index = cluster.start.row
b465306d00ba Uploaded
kmace
parents:
diff changeset
411 return(ret.list)
b465306d00ba Uploaded
kmace
parents:
diff changeset
412 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
413
b465306d00ba Uploaded
kmace
parents:
diff changeset
414
b465306d00ba Uploaded
kmace
parents:
diff changeset
415 CreateHeatMap <- function(data,
b465306d00ba Uploaded
kmace
parents:
diff changeset
416 km,
b465306d00ba Uploaded
kmace
parents:
diff changeset
417 cluster.order,
b465306d00ba Uploaded
kmace
parents:
diff changeset
418 document.name,
b465306d00ba Uploaded
kmace
parents:
diff changeset
419 document.type = "png",
b465306d00ba Uploaded
kmace
parents:
diff changeset
420 number.colors = 30) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
421 # Generates a heatmap image based for a matrix based on a clustering
b465306d00ba Uploaded
kmace
parents:
diff changeset
422 # algorithm.
b465306d00ba Uploaded
kmace
parents:
diff changeset
423 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
424 # Args:
b465306d00ba Uploaded
kmace
parents:
diff changeset
425 # data: A matrix of scores that have already been clustered, the column
b465306d00ba Uploaded
kmace
parents:
diff changeset
426 # names of this matrix will become the column titels of the heatmap.
b465306d00ba Uploaded
kmace
parents:
diff changeset
427 # km: The K-means object generated from running kmeans on data. Another
b465306d00ba Uploaded
kmace
parents:
diff changeset
428 # method could be used so long as it supplies a (km)$cluser list.
b465306d00ba Uploaded
kmace
parents:
diff changeset
429 # cluster.order: The order in which the clusters should be displayed.
b465306d00ba Uploaded
kmace
parents:
diff changeset
430 # for eg. km.order = c(2, 3, 1) would result in cluster 2
b465306d00ba Uploaded
kmace
parents:
diff changeset
431 # being on top, then cluster 3 and lastly cluster 1.
b465306d00ba Uploaded
kmace
parents:
diff changeset
432 # document.name: A name for the produced file. there is no need to
b465306d00ba Uploaded
kmace
parents:
diff changeset
433 # supply the .png/.pdf in your argument.
b465306d00ba Uploaded
kmace
parents:
diff changeset
434 # document.type: The type of file you want to produce. current options are
b465306d00ba Uploaded
kmace
parents:
diff changeset
435 # png and pdf. Default is pdf.
b465306d00ba Uploaded
kmace
parents:
diff changeset
436 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
437 # Returns:
b465306d00ba Uploaded
kmace
parents:
diff changeset
438 # Nothing to the script that calls it, however it creates an image at the
b465306d00ba Uploaded
kmace
parents:
diff changeset
439 # path specified.
b465306d00ba Uploaded
kmace
parents:
diff changeset
440 if(param$debug) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
441 print("In CreateHeatMap")
b465306d00ba Uploaded
kmace
parents:
diff changeset
442 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
443
b465306d00ba Uploaded
kmace
parents:
diff changeset
444 data.ordered <- OrderMTL(data, km, cluster.order)
b465306d00ba Uploaded
kmace
parents:
diff changeset
445
b465306d00ba Uploaded
kmace
parents:
diff changeset
446
b465306d00ba Uploaded
kmace
parents:
diff changeset
447 #Load Lib
b465306d00ba Uploaded
kmace
parents:
diff changeset
448 library(gplots)
b465306d00ba Uploaded
kmace
parents:
diff changeset
449
b465306d00ba Uploaded
kmace
parents:
diff changeset
450 #Set Color gradient
b465306d00ba Uploaded
kmace
parents:
diff changeset
451 color.ramp = colorRampPalette(c("black",
b465306d00ba Uploaded
kmace
parents:
diff changeset
452 "darkblue",
b465306d00ba Uploaded
kmace
parents:
diff changeset
453 "blue",
b465306d00ba Uploaded
kmace
parents:
diff changeset
454 "yellow",
b465306d00ba Uploaded
kmace
parents:
diff changeset
455 "orange",
b465306d00ba Uploaded
kmace
parents:
diff changeset
456 "red"))(number.colors) #7
b465306d00ba Uploaded
kmace
parents:
diff changeset
457
b465306d00ba Uploaded
kmace
parents:
diff changeset
458 if(document.type == "png") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
459 png(paste(document.name,".png", sep = ""),
b465306d00ba Uploaded
kmace
parents:
diff changeset
460 #width=15360,#1920,
b465306d00ba Uploaded
kmace
parents:
diff changeset
461 #height=204080,#2560,
b465306d00ba Uploaded
kmace
parents:
diff changeset
462 #res=500,
b465306d00ba Uploaded
kmace
parents:
diff changeset
463 antialias="gray")
b465306d00ba Uploaded
kmace
parents:
diff changeset
464 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
465 else if(document.type == "pdf") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
466 pdf(paste(document.name,".pdf", sep = ""))
b465306d00ba Uploaded
kmace
parents:
diff changeset
467 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
468 else if(document.type == "tiff") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
469 tiff(paste(document.name,".tiff", sep = ""),
b465306d00ba Uploaded
kmace
parents:
diff changeset
470 res=800,
b465306d00ba Uploaded
kmace
parents:
diff changeset
471 pointsize=2,
b465306d00ba Uploaded
kmace
parents:
diff changeset
472 width=1920,
b465306d00ba Uploaded
kmace
parents:
diff changeset
473 height=1920)
b465306d00ba Uploaded
kmace
parents:
diff changeset
474 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
475 else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
476 bitmap(paste(document.name,".bmp", sep = ""),
b465306d00ba Uploaded
kmace
parents:
diff changeset
477 height = 5,
b465306d00ba Uploaded
kmace
parents:
diff changeset
478 width = 5,
b465306d00ba Uploaded
kmace
parents:
diff changeset
479 res = 500)
b465306d00ba Uploaded
kmace
parents:
diff changeset
480 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
481 #op <- par(mar = rep(0, 4))
b465306d00ba Uploaded
kmace
parents:
diff changeset
482
b465306d00ba Uploaded
kmace
parents:
diff changeset
483 heatmap.2(
b465306d00ba Uploaded
kmace
parents:
diff changeset
484 data.ordered$data, #data.ordered$data[,sort(colnames(data.ordered$data))],
b465306d00ba Uploaded
kmace
parents:
diff changeset
485 rowsep = data.ordered$cluster.index[-1],
b465306d00ba Uploaded
kmace
parents:
diff changeset
486 sepwidth = c(0.5, ncol(data)/100),
b465306d00ba Uploaded
kmace
parents:
diff changeset
487 dendrogram = "none",
b465306d00ba Uploaded
kmace
parents:
diff changeset
488 Rowv = F,
b465306d00ba Uploaded
kmace
parents:
diff changeset
489 Colv = F,
b465306d00ba Uploaded
kmace
parents:
diff changeset
490 trace = "none",
b465306d00ba Uploaded
kmace
parents:
diff changeset
491 labRow = F, #sapply(seq(1:length(data.ordered$cluster.index)), toString),
b465306d00ba Uploaded
kmace
parents:
diff changeset
492 labCol = colnames(data.ordered$data), #sort(colnames(data.ordered$data)),
b465306d00ba Uploaded
kmace
parents:
diff changeset
493 RowSideColors = data.ordered$color.vector,
b465306d00ba Uploaded
kmace
parents:
diff changeset
494 keysize=0.6,
b465306d00ba Uploaded
kmace
parents:
diff changeset
495 key=F,
b465306d00ba Uploaded
kmace
parents:
diff changeset
496 col = color.ramp,
b465306d00ba Uploaded
kmace
parents:
diff changeset
497 cexCol = 0.8,
b465306d00ba Uploaded
kmace
parents:
diff changeset
498 cexRow = 0.8)
b465306d00ba Uploaded
kmace
parents:
diff changeset
499
b465306d00ba Uploaded
kmace
parents:
diff changeset
500 dev.off()
b465306d00ba Uploaded
kmace
parents:
diff changeset
501
b465306d00ba Uploaded
kmace
parents:
diff changeset
502 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
503
b465306d00ba Uploaded
kmace
parents:
diff changeset
504 CreateIndividualHeatMap <- function(data,
b465306d00ba Uploaded
kmace
parents:
diff changeset
505 km,
b465306d00ba Uploaded
kmace
parents:
diff changeset
506 cluster.order,
b465306d00ba Uploaded
kmace
parents:
diff changeset
507 color.ramp = colorRampPalette(c("black",
b465306d00ba Uploaded
kmace
parents:
diff changeset
508 "darkblue",
b465306d00ba Uploaded
kmace
parents:
diff changeset
509 "blue",
b465306d00ba Uploaded
kmace
parents:
diff changeset
510 "yellow",
b465306d00ba Uploaded
kmace
parents:
diff changeset
511 "orange",
b465306d00ba Uploaded
kmace
parents:
diff changeset
512 "red"))(30)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
513 # Generates a heatmap image based for a matrix based on a clustering
b465306d00ba Uploaded
kmace
parents:
diff changeset
514 # algorithm.
b465306d00ba Uploaded
kmace
parents:
diff changeset
515 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
516 # Args:
b465306d00ba Uploaded
kmace
parents:
diff changeset
517 # data: A matrix of scores that have already been clustered, the column
b465306d00ba Uploaded
kmace
parents:
diff changeset
518 # names of this matrix will become the column titels of the heatmap.
b465306d00ba Uploaded
kmace
parents:
diff changeset
519 # km: The K-means object generated from running kmeans on data. Another
b465306d00ba Uploaded
kmace
parents:
diff changeset
520 # method could be used so long as it supplies a (km)$cluser list.
b465306d00ba Uploaded
kmace
parents:
diff changeset
521 # cluster.order: The order in which the clusters should be displayed.
b465306d00ba Uploaded
kmace
parents:
diff changeset
522 # for eg. km.order = c(2, 3, 1) would result in cluster 2
b465306d00ba Uploaded
kmace
parents:
diff changeset
523 # being on top, then cluster 3 and lastly cluster 1.
b465306d00ba Uploaded
kmace
parents:
diff changeset
524 # document.name: A name for the produced file. there is no need to
b465306d00ba Uploaded
kmace
parents:
diff changeset
525 # supply the .png/.pdf in your argument.
b465306d00ba Uploaded
kmace
parents:
diff changeset
526 # document.type: The type of file you want to produce. current options are
b465306d00ba Uploaded
kmace
parents:
diff changeset
527 # png and pdf. Default is pdf.
b465306d00ba Uploaded
kmace
parents:
diff changeset
528 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
529 # Returns:
b465306d00ba Uploaded
kmace
parents:
diff changeset
530 # Nothing to the script that calls it, however it creates an image at the
b465306d00ba Uploaded
kmace
parents:
diff changeset
531 # path specified.
b465306d00ba Uploaded
kmace
parents:
diff changeset
532 if(param$debug) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
533 print("In CreateHeatMap")
b465306d00ba Uploaded
kmace
parents:
diff changeset
534 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
535
b465306d00ba Uploaded
kmace
parents:
diff changeset
536 data.ordered <- OrderMTL(data, km, cluster.order)
b465306d00ba Uploaded
kmace
parents:
diff changeset
537
b465306d00ba Uploaded
kmace
parents:
diff changeset
538
b465306d00ba Uploaded
kmace
parents:
diff changeset
539 #Load Lib
b465306d00ba Uploaded
kmace
parents:
diff changeset
540 library(gplots)
b465306d00ba Uploaded
kmace
parents:
diff changeset
541
b465306d00ba Uploaded
kmace
parents:
diff changeset
542
b465306d00ba Uploaded
kmace
parents:
diff changeset
543
b465306d00ba Uploaded
kmace
parents:
diff changeset
544
b465306d00ba Uploaded
kmace
parents:
diff changeset
545 heatmap.3(
b465306d00ba Uploaded
kmace
parents:
diff changeset
546 data.ordered$data, #data.ordered$data[,sort(colnames(data.ordered$data))],
b465306d00ba Uploaded
kmace
parents:
diff changeset
547 rowsep = data.ordered$cluster.index[-1],
b465306d00ba Uploaded
kmace
parents:
diff changeset
548 sepwidth = c(0.5, nrow(data.ordered$data)/100),
b465306d00ba Uploaded
kmace
parents:
diff changeset
549 dendrogram = "none",
b465306d00ba Uploaded
kmace
parents:
diff changeset
550 Rowv = F,
b465306d00ba Uploaded
kmace
parents:
diff changeset
551 Colv = F,
b465306d00ba Uploaded
kmace
parents:
diff changeset
552 trace = "none",
b465306d00ba Uploaded
kmace
parents:
diff changeset
553 labRow = F, #sapply(seq(1:length(data.ordered$cluster.index)), toString),
b465306d00ba Uploaded
kmace
parents:
diff changeset
554 labCol = colnames(data.ordered$data), #sort(colnames(data.ordered$data)),
b465306d00ba Uploaded
kmace
parents:
diff changeset
555 #sourcRowSideColors = data.ordered$color.vector,
b465306d00ba Uploaded
kmace
parents:
diff changeset
556 keysize=0.6,
b465306d00ba Uploaded
kmace
parents:
diff changeset
557 key=F,
b465306d00ba Uploaded
kmace
parents:
diff changeset
558 col = color.ramp,
b465306d00ba Uploaded
kmace
parents:
diff changeset
559 cexCol = 0.8,
b465306d00ba Uploaded
kmace
parents:
diff changeset
560 cexRow = 0.8)
b465306d00ba Uploaded
kmace
parents:
diff changeset
561
b465306d00ba Uploaded
kmace
parents:
diff changeset
562
b465306d00ba Uploaded
kmace
parents:
diff changeset
563 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
564
b465306d00ba Uploaded
kmace
parents:
diff changeset
565 ReadCommadLineParameters <- function(argument.names, command.line.arguments, optional = F) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
566 # Reads the parameters from the command line arguments.
b465306d00ba Uploaded
kmace
parents:
diff changeset
567 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
568 # Args:
b465306d00ba Uploaded
kmace
parents:
diff changeset
569 # argument.names: A list of expected argument names.
b465306d00ba Uploaded
kmace
parents:
diff changeset
570 # command.line.arguments: The list of recieved command line arguments
b465306d00ba Uploaded
kmace
parents:
diff changeset
571 # optional: Are the areguments optional, or are they required, default is required
b465306d00ba Uploaded
kmace
parents:
diff changeset
572 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
573 # Returns:
b465306d00ba Uploaded
kmace
parents:
diff changeset
574 # The arguments for argument.names. As strings In that order.
b465306d00ba Uploaded
kmace
parents:
diff changeset
575
b465306d00ba Uploaded
kmace
parents:
diff changeset
576 if(length(grep("--version",command.line.arguments))) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
577 cat("version",script.version,"\n")
b465306d00ba Uploaded
kmace
parents:
diff changeset
578 q()
b465306d00ba Uploaded
kmace
parents:
diff changeset
579 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
580 # Split command line arguments
b465306d00ba Uploaded
kmace
parents:
diff changeset
581 args <- sapply(strsplit(command.line.arguments, " "),function(i) i)
b465306d00ba Uploaded
kmace
parents:
diff changeset
582 vals <- character(length(argument.names))
b465306d00ba Uploaded
kmace
parents:
diff changeset
583 # split cmd.line to key and value pairs
b465306d00ba Uploaded
kmace
parents:
diff changeset
584 for(i in 1:length(argument.names)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
585 ix <- grep(argument.names[i], args)
b465306d00ba Uploaded
kmace
parents:
diff changeset
586 if(length(ix)>1) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
587 stop("arg ",
b465306d00ba Uploaded
kmace
parents:
diff changeset
588 argument.names[i],
b465306d00ba Uploaded
kmace
parents:
diff changeset
589 " used more than once. Bailing out...\n",
b465306d00ba Uploaded
kmace
parents:
diff changeset
590 PrintParamError())
b465306d00ba Uploaded
kmace
parents:
diff changeset
591 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
592 else if (length(ix)==0 && !optional) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
593 stop("could not find ",
b465306d00ba Uploaded
kmace
parents:
diff changeset
594 argument.names[i],
b465306d00ba Uploaded
kmace
parents:
diff changeset
595 ". Bailing out...\n",
b465306d00ba Uploaded
kmace
parents:
diff changeset
596 PrintParamError())
b465306d00ba Uploaded
kmace
parents:
diff changeset
597 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
598 else if (length(ix)==0 && optional) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
599 vals[i] <- NA
b465306d00ba Uploaded
kmace
parents:
diff changeset
600 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
601 else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
602 vals[i] <- args[ix+1]
b465306d00ba Uploaded
kmace
parents:
diff changeset
603 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
604 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
605 return(vals)
b465306d00ba Uploaded
kmace
parents:
diff changeset
606 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
607
b465306d00ba Uploaded
kmace
parents:
diff changeset
608 PrintParamError <- function(){
b465306d00ba Uploaded
kmace
parents:
diff changeset
609 # Prints the usage of the function, shows users what arguments they can use
b465306d00ba Uploaded
kmace
parents:
diff changeset
610 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
611 # Args:
b465306d00ba Uploaded
kmace
parents:
diff changeset
612 # param: A list that contains all the paramaters.
b465306d00ba Uploaded
kmace
parents:
diff changeset
613 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
614 # Returns:
b465306d00ba Uploaded
kmace
parents:
diff changeset
615 # A modified version of the param list, with the default values loaded.
b465306d00ba Uploaded
kmace
parents:
diff changeset
616 cat("
b465306d00ba Uploaded
kmace
parents:
diff changeset
617 DESCRIPTIION:
b465306d00ba Uploaded
kmace
parents:
diff changeset
618 heatmap.R takes a ...
b465306d00ba Uploaded
kmace
parents:
diff changeset
619
b465306d00ba Uploaded
kmace
parents:
diff changeset
620 INPUT:
b465306d00ba Uploaded
kmace
parents:
diff changeset
621 1.--mtls_file: path to mtls file.\n
b465306d00ba Uploaded
kmace
parents:
diff changeset
622 2.--cluster_file: the destination path for the output cluster file.\n
b465306d00ba Uploaded
kmace
parents:
diff changeset
623 3.--chip_experiment_order: The order of desired chip experiments (optional).\n
b465306d00ba Uploaded
kmace
parents:
diff changeset
624 4.--heatmap_file: path for output heatmap image (no extension).\n
b465306d00ba Uploaded
kmace
parents:
diff changeset
625 5.--heatmap_type: choice of image format, currently support png, pdf, tiff and bmp (optional)\n
b465306d00ba Uploaded
kmace
parents:
diff changeset
626 6.--expression_file: list of expression files to be included in analysis (optional).\n
b465306d00ba Uploaded
kmace
parents:
diff changeset
627 7.--expression_name: lables for the expression files (optional).\n
b465306d00ba Uploaded
kmace
parents:
diff changeset
628 8.--normalization_file: a list of files to be used for normalization,
b465306d00ba Uploaded
kmace
parents:
diff changeset
629 they can be the same file, however the number of expression nominated
b465306d00ba Uploaded
kmace
parents:
diff changeset
630 normalization files must match the number of expression files (optional)\n
b465306d00ba Uploaded
kmace
parents:
diff changeset
631 9.--n_clusters: number of clusters\n
b465306d00ba Uploaded
kmace
parents:
diff changeset
632 10.--filter_percentage: percentage of mtls that will be analysed. Eg: if
b465306d00ba Uploaded
kmace
parents:
diff changeset
633 we make filter_percentage 30, we will take the union of the top mtls in
b465306d00ba Uploaded
kmace
parents:
diff changeset
634 mean, non-zero mean and variance (optional).\n
b465306d00ba Uploaded
kmace
parents:
diff changeset
635
b465306d00ba Uploaded
kmace
parents:
diff changeset
636 EXAMPLE RUN:
b465306d00ba Uploaded
kmace
parents:
diff changeset
637 Rscript heatmap.R
b465306d00ba Uploaded
kmace
parents:
diff changeset
638 --mtls_file path/to/mtls.xls
b465306d00ba Uploaded
kmace
parents:
diff changeset
639 --cluster_file path/to/output/cluster
b465306d00ba Uploaded
kmace
parents:
diff changeset
640 --chip_experiment_order tf1::tf2::tf5::tf3
b465306d00ba Uploaded
kmace
parents:
diff changeset
641 --heatmap_file path/to/output/heatmap
b465306d00ba Uploaded
kmace
parents:
diff changeset
642 --heatmap_type png
b465306d00ba Uploaded
kmace
parents:
diff changeset
643 --expression_file path/to/exp1::path/to/exp2
b465306d00ba Uploaded
kmace
parents:
diff changeset
644 --expression_name myexp1::myexp2
b465306d00ba Uploaded
kmace
parents:
diff changeset
645 --normalization_file path/to/exp3::path/to/exp3
b465306d00ba Uploaded
kmace
parents:
diff changeset
646 --n_clusters 13
b465306d00ba Uploaded
kmace
parents:
diff changeset
647 --filter_percentage 100
b465306d00ba Uploaded
kmace
parents:
diff changeset
648 --include_targetless yes
b465306d00ba Uploaded
kmace
parents:
diff changeset
649 --number_bins 30
b465306d00ba Uploaded
kmace
parents:
diff changeset
650
b465306d00ba Uploaded
kmace
parents:
diff changeset
651 ")
b465306d00ba Uploaded
kmace
parents:
diff changeset
652 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
653
b465306d00ba Uploaded
kmace
parents:
diff changeset
654 #LoadDefaultParams <- function(param) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
655 # # Loads default paramaters for the heatmap application
b465306d00ba Uploaded
kmace
parents:
diff changeset
656 # #
b465306d00ba Uploaded
kmace
parents:
diff changeset
657 # # Args:
b465306d00ba Uploaded
kmace
parents:
diff changeset
658 # # param: A list that contains all the previous paramaters.
b465306d00ba Uploaded
kmace
parents:
diff changeset
659 # #
b465306d00ba Uploaded
kmace
parents:
diff changeset
660 # # Returns:
b465306d00ba Uploaded
kmace
parents:
diff changeset
661 # # A modified version of the param list, with the default values loaded.
b465306d00ba Uploaded
kmace
parents:
diff changeset
662
b465306d00ba Uploaded
kmace
parents:
diff changeset
663 #script.version=0.1
b465306d00ba Uploaded
kmace
parents:
diff changeset
664 #param$debug = F
b465306d00ba Uploaded
kmace
parents:
diff changeset
665
b465306d00ba Uploaded
kmace
parents:
diff changeset
666 ## RNA data:
b465306d00ba Uploaded
kmace
parents:
diff changeset
667 #param$rna.files = ""
b465306d00ba Uploaded
kmace
parents:
diff changeset
668 #param$rna.normalization = "none"
b465306d00ba Uploaded
kmace
parents:
diff changeset
669
b465306d00ba Uploaded
kmace
parents:
diff changeset
670 ## Filter:
b465306d00ba Uploaded
kmace
parents:
diff changeset
671 #param$filter.percentage <- 100
b465306d00ba Uploaded
kmace
parents:
diff changeset
672
b465306d00ba Uploaded
kmace
parents:
diff changeset
673 ## Clustering:
b465306d00ba Uploaded
kmace
parents:
diff changeset
674 #param$clustering.number.of.clusters <- 13
b465306d00ba Uploaded
kmace
parents:
diff changeset
675
b465306d00ba Uploaded
kmace
parents:
diff changeset
676 ## Heatmap:
b465306d00ba Uploaded
kmace
parents:
diff changeset
677 #param$heatmap.document.name <- "heatmap"
b465306d00ba Uploaded
kmace
parents:
diff changeset
678 #param$heatmap.document.type <- "png"
b465306d00ba Uploaded
kmace
parents:
diff changeset
679 ##Cluster Groups:
b465306d00ba Uploaded
kmace
parents:
diff changeset
680 #param$cluster.groups.document.name <- "clusters"
b465306d00ba Uploaded
kmace
parents:
diff changeset
681
b465306d00ba Uploaded
kmace
parents:
diff changeset
682 #return(param)
b465306d00ba Uploaded
kmace
parents:
diff changeset
683
b465306d00ba Uploaded
kmace
parents:
diff changeset
684 #}
b465306d00ba Uploaded
kmace
parents:
diff changeset
685
b465306d00ba Uploaded
kmace
parents:
diff changeset
686
b465306d00ba Uploaded
kmace
parents:
diff changeset
687
b465306d00ba Uploaded
kmace
parents:
diff changeset
688 LoadParams <- function(cmd.args, args.nms, n.start.numeric, optional = F) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
689 # Loads user defined paramaters for the heatmap application
b465306d00ba Uploaded
kmace
parents:
diff changeset
690 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
691 # Args:
b465306d00ba Uploaded
kmace
parents:
diff changeset
692 # cmd.args: The command line arguments given.
b465306d00ba Uploaded
kmace
parents:
diff changeset
693 # arg.nms: A list of possible command arguments.
b465306d00ba Uploaded
kmace
parents:
diff changeset
694 # n.start.numeric: the first argument that should be numeric (alway put
b465306d00ba Uploaded
kmace
parents:
diff changeset
695 # these last).
b465306d00ba Uploaded
kmace
parents:
diff changeset
696 # optional: This specifies if the params in cmd.args are optional or
b465306d00ba Uploaded
kmace
parents:
diff changeset
697 # required.
b465306d00ba Uploaded
kmace
parents:
diff changeset
698 # Returns:
b465306d00ba Uploaded
kmace
parents:
diff changeset
699 # A list of values assigned to each argument.
b465306d00ba Uploaded
kmace
parents:
diff changeset
700
b465306d00ba Uploaded
kmace
parents:
diff changeset
701
b465306d00ba Uploaded
kmace
parents:
diff changeset
702 vals <- ReadCommadLineParameters(argument.names = args.nms,
b465306d00ba Uploaded
kmace
parents:
diff changeset
703 command.line.arguments = cmd.args,
b465306d00ba Uploaded
kmace
parents:
diff changeset
704 optional = optional)
b465306d00ba Uploaded
kmace
parents:
diff changeset
705
b465306d00ba Uploaded
kmace
parents:
diff changeset
706 #check if numeric params are indeed numeric
b465306d00ba Uploaded
kmace
parents:
diff changeset
707 if(!optional) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
708 for(i in n.start.numeric:length(vals)){
b465306d00ba Uploaded
kmace
parents:
diff changeset
709 if(is.na(as.numeric(vals[i]))){
b465306d00ba Uploaded
kmace
parents:
diff changeset
710 stop("arg ",args.nms[i]," is not numeric. Bailing out...\n",print.error())
b465306d00ba Uploaded
kmace
parents:
diff changeset
711 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
712 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
713 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
714 return (vals)
b465306d00ba Uploaded
kmace
parents:
diff changeset
715
b465306d00ba Uploaded
kmace
parents:
diff changeset
716 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
717
b465306d00ba Uploaded
kmace
parents:
diff changeset
718 #ValidateParams <- function(params) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
719 # return(T)
b465306d00ba Uploaded
kmace
parents:
diff changeset
720 #}
b465306d00ba Uploaded
kmace
parents:
diff changeset
721
b465306d00ba Uploaded
kmace
parents:
diff changeset
722
b465306d00ba Uploaded
kmace
parents:
diff changeset
723 ##########
b465306d00ba Uploaded
kmace
parents:
diff changeset
724
b465306d00ba Uploaded
kmace
parents:
diff changeset
725 LoadDebugParams <- function(param) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
726
b465306d00ba Uploaded
kmace
parents:
diff changeset
727 cmd.args <- c(
b465306d00ba Uploaded
kmace
parents:
diff changeset
728 "--mtls_file data/test/mtls.xls",
b465306d00ba Uploaded
kmace
parents:
diff changeset
729 "--cluster_file data/test/cluster",
b465306d00ba Uploaded
kmace
parents:
diff changeset
730 "--heatmap_file data/test/heatmap",
b465306d00ba Uploaded
kmace
parents:
diff changeset
731 "--heatmap_type bmp",
b465306d00ba Uploaded
kmace
parents:
diff changeset
732 "--n_clusters 13",
b465306d00ba Uploaded
kmace
parents:
diff changeset
733 "--filter_percentage 100",
b465306d00ba Uploaded
kmace
parents:
diff changeset
734 "--expression_file /home/kieran/code/scorchR-heatmap/data/expression/rna1.tabular::/home/kieran/code/scorchR-heatmap/data/expression/rna2.tabular",
b465306d00ba Uploaded
kmace
parents:
diff changeset
735 "--expression_name batf.ko.0::batf.ko.17",
b465306d00ba Uploaded
kmace
parents:
diff changeset
736 "--normalization_file mean",
b465306d00ba Uploaded
kmace
parents:
diff changeset
737 "--chip_experiment_order ac::bc::cc::dc::ec",
b465306d00ba Uploaded
kmace
parents:
diff changeset
738 "--include_targetless yes",
b465306d00ba Uploaded
kmace
parents:
diff changeset
739 "--number_bins 20"
b465306d00ba Uploaded
kmace
parents:
diff changeset
740 )
b465306d00ba Uploaded
kmace
parents:
diff changeset
741
b465306d00ba Uploaded
kmace
parents:
diff changeset
742 args.nms <- c( "--mtls_file", #1
b465306d00ba Uploaded
kmace
parents:
diff changeset
743 "--cluster_file", #2
b465306d00ba Uploaded
kmace
parents:
diff changeset
744 "--chip_experiment_order", #3
b465306d00ba Uploaded
kmace
parents:
diff changeset
745 "--heatmap_file", #4
b465306d00ba Uploaded
kmace
parents:
diff changeset
746 "--heatmap_type", #5
b465306d00ba Uploaded
kmace
parents:
diff changeset
747 "--expression_file", #6
b465306d00ba Uploaded
kmace
parents:
diff changeset
748 "--expression_name", #7
b465306d00ba Uploaded
kmace
parents:
diff changeset
749 "--normalization_file", #8
b465306d00ba Uploaded
kmace
parents:
diff changeset
750 "--include_targetless", #9
b465306d00ba Uploaded
kmace
parents:
diff changeset
751 "--n_clusters", #10
b465306d00ba Uploaded
kmace
parents:
diff changeset
752 "--filter_percentage", #11
b465306d00ba Uploaded
kmace
parents:
diff changeset
753 "--number_bins") #12
b465306d00ba Uploaded
kmace
parents:
diff changeset
754
b465306d00ba Uploaded
kmace
parents:
diff changeset
755
b465306d00ba Uploaded
kmace
parents:
diff changeset
756 # vals has the same order as args.nms
b465306d00ba Uploaded
kmace
parents:
diff changeset
757 vals <- LoadParams(cmd.args, args.nms, n.start.numeric = 10, optional = F)
b465306d00ba Uploaded
kmace
parents:
diff changeset
758
b465306d00ba Uploaded
kmace
parents:
diff changeset
759
b465306d00ba Uploaded
kmace
parents:
diff changeset
760 # ChIP data:
b465306d00ba Uploaded
kmace
parents:
diff changeset
761 param$annotated.macs.file <- vals[1]
b465306d00ba Uploaded
kmace
parents:
diff changeset
762 param$chip.order <- vals[3]
b465306d00ba Uploaded
kmace
parents:
diff changeset
763 # RNA data:
b465306d00ba Uploaded
kmace
parents:
diff changeset
764 param$rna.files = vals[6]
b465306d00ba Uploaded
kmace
parents:
diff changeset
765 param$rna.names = vals[7]
b465306d00ba Uploaded
kmace
parents:
diff changeset
766 param$rna.normalization.file = vals[8]
b465306d00ba Uploaded
kmace
parents:
diff changeset
767 param$include.targetless = vals[9]
b465306d00ba Uploaded
kmace
parents:
diff changeset
768
b465306d00ba Uploaded
kmace
parents:
diff changeset
769 # Filter:
b465306d00ba Uploaded
kmace
parents:
diff changeset
770 param$filter.percentage <- as.numeric(vals[11])
b465306d00ba Uploaded
kmace
parents:
diff changeset
771
b465306d00ba Uploaded
kmace
parents:
diff changeset
772 # Clustering:
b465306d00ba Uploaded
kmace
parents:
diff changeset
773 param$number.bins <- as.numeric(vals[12])
b465306d00ba Uploaded
kmace
parents:
diff changeset
774 param$clustering.number.of.clusters <- as.numeric(vals[10])
b465306d00ba Uploaded
kmace
parents:
diff changeset
775
b465306d00ba Uploaded
kmace
parents:
diff changeset
776 # Heatmap:
b465306d00ba Uploaded
kmace
parents:
diff changeset
777 param$heatmap.document.name <- vals[4]
b465306d00ba Uploaded
kmace
parents:
diff changeset
778 param$heatmap.document.type <- vals[5]
b465306d00ba Uploaded
kmace
parents:
diff changeset
779 #Cluster Groups:
b465306d00ba Uploaded
kmace
parents:
diff changeset
780 param$cluster.groups.document.name <- vals[2]
b465306d00ba Uploaded
kmace
parents:
diff changeset
781
b465306d00ba Uploaded
kmace
parents:
diff changeset
782 return(param)
b465306d00ba Uploaded
kmace
parents:
diff changeset
783
b465306d00ba Uploaded
kmace
parents:
diff changeset
784 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
785
b465306d00ba Uploaded
kmace
parents:
diff changeset
786
b465306d00ba Uploaded
kmace
parents:
diff changeset
787
b465306d00ba Uploaded
kmace
parents:
diff changeset
788 LoadOptionalParams <- function(param) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
789
b465306d00ba Uploaded
kmace
parents:
diff changeset
790 cmd.args <- commandArgs(trailingOnly = T)
b465306d00ba Uploaded
kmace
parents:
diff changeset
791
b465306d00ba Uploaded
kmace
parents:
diff changeset
792 args.nms <- c( "--chip_experiment_order", #1
b465306d00ba Uploaded
kmace
parents:
diff changeset
793 "--expression_file", #2
b465306d00ba Uploaded
kmace
parents:
diff changeset
794 "--expression_name", #3
b465306d00ba Uploaded
kmace
parents:
diff changeset
795 "--normalization_file", #4
b465306d00ba Uploaded
kmace
parents:
diff changeset
796 "--heatmap_type", #5
b465306d00ba Uploaded
kmace
parents:
diff changeset
797 "--include_targetless", #6
b465306d00ba Uploaded
kmace
parents:
diff changeset
798 "--filter_percentage", #7
b465306d00ba Uploaded
kmace
parents:
diff changeset
799 "--number_bins") #8
b465306d00ba Uploaded
kmace
parents:
diff changeset
800
b465306d00ba Uploaded
kmace
parents:
diff changeset
801
b465306d00ba Uploaded
kmace
parents:
diff changeset
802 # vals has the same order as args.nms
b465306d00ba Uploaded
kmace
parents:
diff changeset
803 vals <- LoadParams(cmd.args, args.nms, n.start.numeric = 7, optional = T)
b465306d00ba Uploaded
kmace
parents:
diff changeset
804
b465306d00ba Uploaded
kmace
parents:
diff changeset
805 # ChIP data:
b465306d00ba Uploaded
kmace
parents:
diff changeset
806 param$chip.order <- if(!is.na(vals[1])){vals[1]}else{NA}
b465306d00ba Uploaded
kmace
parents:
diff changeset
807
b465306d00ba Uploaded
kmace
parents:
diff changeset
808 # RNA data:
b465306d00ba Uploaded
kmace
parents:
diff changeset
809 param$rna.files <- if(!is.na(vals[2])){vals[2]}else{"none"}
b465306d00ba Uploaded
kmace
parents:
diff changeset
810 param$rna.names <- if(!is.na(vals[3])){vals[3]}else{"none"}
b465306d00ba Uploaded
kmace
parents:
diff changeset
811 param$rna.normalization.file <- if(!is.na(vals[4])){vals[4]}else{"no"}
b465306d00ba Uploaded
kmace
parents:
diff changeset
812 param$include.targetless <- if(!is.na(vals[6])){vals[6]}else{"yes"}
b465306d00ba Uploaded
kmace
parents:
diff changeset
813 # Filter:
b465306d00ba Uploaded
kmace
parents:
diff changeset
814 param$filter.percentage <- if(!is.na(vals[7])){as.numeric(vals[7])}else{100}
b465306d00ba Uploaded
kmace
parents:
diff changeset
815 param$number.bins <- if(!is.na(vals[8])){as.numeric(vals[8])}else{30}
b465306d00ba Uploaded
kmace
parents:
diff changeset
816 # Heatmap file (output)
b465306d00ba Uploaded
kmace
parents:
diff changeset
817 param$heatmap.document.type <- if(!is.na(vals[5])){vals[5]}else{"none"}
b465306d00ba Uploaded
kmace
parents:
diff changeset
818
b465306d00ba Uploaded
kmace
parents:
diff changeset
819 return(param)
b465306d00ba Uploaded
kmace
parents:
diff changeset
820 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
821
b465306d00ba Uploaded
kmace
parents:
diff changeset
822
b465306d00ba Uploaded
kmace
parents:
diff changeset
823 LoadReqiredParams <- function(param){
b465306d00ba Uploaded
kmace
parents:
diff changeset
824
b465306d00ba Uploaded
kmace
parents:
diff changeset
825 cmd.args <- commandArgs(trailingOnly = T)
b465306d00ba Uploaded
kmace
parents:
diff changeset
826
b465306d00ba Uploaded
kmace
parents:
diff changeset
827 args.nms <- c( "--mtls_file", #1
b465306d00ba Uploaded
kmace
parents:
diff changeset
828 "--cluster_file", #2
b465306d00ba Uploaded
kmace
parents:
diff changeset
829 "--heatmap_file", #3
b465306d00ba Uploaded
kmace
parents:
diff changeset
830 "--n_clusters") #4
b465306d00ba Uploaded
kmace
parents:
diff changeset
831
b465306d00ba Uploaded
kmace
parents:
diff changeset
832
b465306d00ba Uploaded
kmace
parents:
diff changeset
833 # vals has the same order as args.nms
b465306d00ba Uploaded
kmace
parents:
diff changeset
834 vals <- LoadParams(cmd.args, args.nms, n.start.numeric = 4, optional = F)
b465306d00ba Uploaded
kmace
parents:
diff changeset
835
b465306d00ba Uploaded
kmace
parents:
diff changeset
836 # ChIP data:
b465306d00ba Uploaded
kmace
parents:
diff changeset
837 param$annotated.macs.file <- vals[1]
b465306d00ba Uploaded
kmace
parents:
diff changeset
838
b465306d00ba Uploaded
kmace
parents:
diff changeset
839 # Clustering
b465306d00ba Uploaded
kmace
parents:
diff changeset
840 param$clustering.number.of.clusters <- as.numeric(vals[4])
b465306d00ba Uploaded
kmace
parents:
diff changeset
841
b465306d00ba Uploaded
kmace
parents:
diff changeset
842 # Cluster file (output):
b465306d00ba Uploaded
kmace
parents:
diff changeset
843 param$cluster.groups.document.name <- vals[2]
b465306d00ba Uploaded
kmace
parents:
diff changeset
844
b465306d00ba Uploaded
kmace
parents:
diff changeset
845
b465306d00ba Uploaded
kmace
parents:
diff changeset
846 # Heatmap file (output):
b465306d00ba Uploaded
kmace
parents:
diff changeset
847 param$heatmap.document.name <- vals[3]
b465306d00ba Uploaded
kmace
parents:
diff changeset
848
b465306d00ba Uploaded
kmace
parents:
diff changeset
849 return(param)
b465306d00ba Uploaded
kmace
parents:
diff changeset
850
b465306d00ba Uploaded
kmace
parents:
diff changeset
851 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
852
b465306d00ba Uploaded
kmace
parents:
diff changeset
853 ###########
b465306d00ba Uploaded
kmace
parents:
diff changeset
854 # here we output the fasta file of the targets of each kmeans cluster
b465306d00ba Uploaded
kmace
parents:
diff changeset
855 CreateClusterGroups <- function(trgts,k.ix,f.nm="output/clust.to.trgts", km.order){
b465306d00ba Uploaded
kmace
parents:
diff changeset
856 f.nm = paste(f.nm, ".fasta", sep="")
b465306d00ba Uploaded
kmace
parents:
diff changeset
857 clusters = km.order
b465306d00ba Uploaded
kmace
parents:
diff changeset
858 for(i in 1:length(clusters)){
b465306d00ba Uploaded
kmace
parents:
diff changeset
859 v=trgts[which(k.ix==clusters[i])]
b465306d00ba Uploaded
kmace
parents:
diff changeset
860 v.split = unlist(sapply(v,strsplit, "_"))
b465306d00ba Uploaded
kmace
parents:
diff changeset
861 if(i == 1){
b465306d00ba Uploaded
kmace
parents:
diff changeset
862 cat(sep="",file=f.nm,">cluster_",i,"\n")#clusters[i],"\n")
b465306d00ba Uploaded
kmace
parents:
diff changeset
863 } else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
864 cat(sep="",file=f.nm,">cluster_",i,"\n",append=TRUE)#clusters[i],"\n",append=TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
865 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
866 cat(sep="\n",file=f.nm,v.split,append=TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
867 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
868 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
869
b465306d00ba Uploaded
kmace
parents:
diff changeset
870
b465306d00ba Uploaded
kmace
parents:
diff changeset
871 PrintClusters <- function(trgts,k.ix,f.nm="output/clust.to.trgts", km.order){
b465306d00ba Uploaded
kmace
parents:
diff changeset
872 f.nm = paste(f.nm, ".tsv", sep="")
b465306d00ba Uploaded
kmace
parents:
diff changeset
873 cat(sep="\t",file=f.nm,"row_number/target","cluster","\n")
b465306d00ba Uploaded
kmace
parents:
diff changeset
874 trgts[which(trgts=="")] <- "no_target"
b465306d00ba Uploaded
kmace
parents:
diff changeset
875 for(i in 1:length(trgts)){
b465306d00ba Uploaded
kmace
parents:
diff changeset
876 cat(sep="",file=f.nm,trgts[i],"\t","cluster_",k.ix[i],"\n",append=TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
877 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
878 # if(i == 1){
b465306d00ba Uploaded
kmace
parents:
diff changeset
879 # cat(sep="",file=f.nm,"cluster_",i,"\n")#clusters[i],"\n")
b465306d00ba Uploaded
kmace
parents:
diff changeset
880 # } else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
881 # cat(sep="",file=f.nm,">cluster_",i,"\n",append=TRUE)#clusters[i],"\n",append=TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
882 # }
b465306d00ba Uploaded
kmace
parents:
diff changeset
883 #cat(sep="\n",file=f.nm,v.split,append=TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
884 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
885 GetTopRowsFromMatrix = function(mtrx, percentage = 10)
b465306d00ba Uploaded
kmace
parents:
diff changeset
886 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
887 if (param$debug) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
888 print("In GetTopRowsFromMatrix")
b465306d00ba Uploaded
kmace
parents:
diff changeset
889 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
890 #Store the stats for the mtrx
b465306d00ba Uploaded
kmace
parents:
diff changeset
891 stats = list()
b465306d00ba Uploaded
kmace
parents:
diff changeset
892 stats$mean=apply(mtrx,1,mean)
b465306d00ba Uploaded
kmace
parents:
diff changeset
893 stats$sd=apply(mtrx,1,sd)
b465306d00ba Uploaded
kmace
parents:
diff changeset
894 stats$nonzero.mean=apply(mtrx, 1, function(x) mean(x[which(x != 0)]))
b465306d00ba Uploaded
kmace
parents:
diff changeset
895
b465306d00ba Uploaded
kmace
parents:
diff changeset
896
b465306d00ba Uploaded
kmace
parents:
diff changeset
897 #Store the indexes for the mtrx
b465306d00ba Uploaded
kmace
parents:
diff changeset
898 index = list()
b465306d00ba Uploaded
kmace
parents:
diff changeset
899 index$mean = sort(stats$mean, decreasing=T, index.return=T)$ix
b465306d00ba Uploaded
kmace
parents:
diff changeset
900 index$sd = sort(stats$sd, decreasing=T, index.return=T)$ix
b465306d00ba Uploaded
kmace
parents:
diff changeset
901 index$nonzero.mean = sort(stats$nonzero.mean, decreasing=T, index.return=T)$ix
b465306d00ba Uploaded
kmace
parents:
diff changeset
902
b465306d00ba Uploaded
kmace
parents:
diff changeset
903 #Calculate how many data points we want to take
b465306d00ba Uploaded
kmace
parents:
diff changeset
904 cutoff = floor(length(mtrx[ ,1])*(percentage/100))
b465306d00ba Uploaded
kmace
parents:
diff changeset
905
b465306d00ba Uploaded
kmace
parents:
diff changeset
906 #Extract Indexes and return to caller
b465306d00ba Uploaded
kmace
parents:
diff changeset
907 index$union = union(index$mean[1:cutoff], union(index$sd[1:cutoff], index$nonzero.mean[1:cutoff]))
b465306d00ba Uploaded
kmace
parents:
diff changeset
908
b465306d00ba Uploaded
kmace
parents:
diff changeset
909 return(index)
b465306d00ba Uploaded
kmace
parents:
diff changeset
910 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
911
b465306d00ba Uploaded
kmace
parents:
diff changeset
912 #GetUniq = function(targets.cluster)
b465306d00ba Uploaded
kmace
parents:
diff changeset
913 #{
b465306d00ba Uploaded
kmace
parents:
diff changeset
914 # #problem with this function is that it agrigates the list handed to it. after this point you cant maintain order
b465306d00ba Uploaded
kmace
parents:
diff changeset
915 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
916 # return(unique(unlist(lapply(targets.cluster, function(i) strsplit(i, "_")))))
b465306d00ba Uploaded
kmace
parents:
diff changeset
917 # #return(unlist(lapply(targets.cluster, function(i) strsplit(i, "_"))))
b465306d00ba Uploaded
kmace
parents:
diff changeset
918 #
b465306d00ba Uploaded
kmace
parents:
diff changeset
919 #}
b465306d00ba Uploaded
kmace
parents:
diff changeset
920
b465306d00ba Uploaded
kmace
parents:
diff changeset
921 bindata = function(d,qunts=seq(.4,.9,.1))
b465306d00ba Uploaded
kmace
parents:
diff changeset
922 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
923 tmp=matrix(0,nr=nrow(d),nc=ncol(d),dimnames=dimnames(d))
b465306d00ba Uploaded
kmace
parents:
diff changeset
924 for(j in 1:ncol(d))
b465306d00ba Uploaded
kmace
parents:
diff changeset
925 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
926 bins=quantile(d[,j],qunts)
b465306d00ba Uploaded
kmace
parents:
diff changeset
927 for(i in 1:length(bins))
b465306d00ba Uploaded
kmace
parents:
diff changeset
928 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
929 tmp[which(d[,j]>bins[i]),j] = i
b465306d00ba Uploaded
kmace
parents:
diff changeset
930 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
931 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
932 return(tmp)
b465306d00ba Uploaded
kmace
parents:
diff changeset
933 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
934
b465306d00ba Uploaded
kmace
parents:
diff changeset
935 bindata.non.zero = function(d,qunts=seq(0,0.9,0.1))
b465306d00ba Uploaded
kmace
parents:
diff changeset
936 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
937 tmp=matrix(0,nr=nrow(d),nc=ncol(d))
b465306d00ba Uploaded
kmace
parents:
diff changeset
938 for(j in 1:ncol(d))
b465306d00ba Uploaded
kmace
parents:
diff changeset
939 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
940 ix.non.zero=which(d[,j]!=0)
b465306d00ba Uploaded
kmace
parents:
diff changeset
941 bins=quantile(d[ix.non.zero,j],qunts)
b465306d00ba Uploaded
kmace
parents:
diff changeset
942 for(i in 1:length(bins))
b465306d00ba Uploaded
kmace
parents:
diff changeset
943 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
944 tmp[which(d[,j]>bins[i]),j] = i
b465306d00ba Uploaded
kmace
parents:
diff changeset
945 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
946 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
947
b465306d00ba Uploaded
kmace
parents:
diff changeset
948 return(tmp)
b465306d00ba Uploaded
kmace
parents:
diff changeset
949 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
950 bindata.matrix = function(d,qunts=seq(0,0.9,0.1))
b465306d00ba Uploaded
kmace
parents:
diff changeset
951 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
952 tmp=matrix(0,nr=nrow(d),nc=ncol(d),dimnames=dimnames(d))
b465306d00ba Uploaded
kmace
parents:
diff changeset
953 #ix.non.zero=which(d!=0)
b465306d00ba Uploaded
kmace
parents:
diff changeset
954 bins=quantile(d[],qunts)
b465306d00ba Uploaded
kmace
parents:
diff changeset
955 for(i in 1:length(bins))
b465306d00ba Uploaded
kmace
parents:
diff changeset
956 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
957 tmp[which(d>bins[i])] = i
b465306d00ba Uploaded
kmace
parents:
diff changeset
958 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
959 return(tmp)
b465306d00ba Uploaded
kmace
parents:
diff changeset
960 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
961 bindata.non.zero.matrix = function(d,qunts=seq(0,0.9,0.1))
b465306d00ba Uploaded
kmace
parents:
diff changeset
962 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
963 tmp=matrix(0,nr=nrow(d),nc=ncol(d),dimnames=dimnames(d))
b465306d00ba Uploaded
kmace
parents:
diff changeset
964 ix.non.zero=which(d!=0)
b465306d00ba Uploaded
kmace
parents:
diff changeset
965 bins=quantile(d[ix.non.zero],qunts)
b465306d00ba Uploaded
kmace
parents:
diff changeset
966 for(i in 1:length(bins))
b465306d00ba Uploaded
kmace
parents:
diff changeset
967 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
968 tmp[which(d>bins[i])] = i
b465306d00ba Uploaded
kmace
parents:
diff changeset
969 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
970 return(tmp)
b465306d00ba Uploaded
kmace
parents:
diff changeset
971 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
972 heatmap.3 <- function (x, Rowv = TRUE, Colv = if (symm) "Rowv" else TRUE,
b465306d00ba Uploaded
kmace
parents:
diff changeset
973 distfun = dist, hclustfun = hclust, dendrogram = c("both",
b465306d00ba Uploaded
kmace
parents:
diff changeset
974 "row", "column", "none"), symm = FALSE, scale = c("none",
b465306d00ba Uploaded
kmace
parents:
diff changeset
975 "row", "column"), na.rm = TRUE, revC = identical(Colv,
b465306d00ba Uploaded
kmace
parents:
diff changeset
976 "Rowv"), add.expr, breaks, symbreaks = min(x < 0, na.rm = TRUE) ||
b465306d00ba Uploaded
kmace
parents:
diff changeset
977 scale != "none", col = "heat.colors", colsep, rowsep,
b465306d00ba Uploaded
kmace
parents:
diff changeset
978 sepcolor = "white", sepwidth = c(0.05, 0.05), cellnote, notecex = 1,
b465306d00ba Uploaded
kmace
parents:
diff changeset
979 notecol = "cyan", na.color = par("bg"), trace = c("column",
b465306d00ba Uploaded
kmace
parents:
diff changeset
980 "row", "both", "none"), tracecol = "cyan", hline = median(breaks),
b465306d00ba Uploaded
kmace
parents:
diff changeset
981 vline = median(breaks), linecol = tracecol, margins = c(5,
b465306d00ba Uploaded
kmace
parents:
diff changeset
982 5), ColSideColors, RowSideColors, cexRow = 0.2 + 1/log10(nr),
b465306d00ba Uploaded
kmace
parents:
diff changeset
983 cexCol = 0.2 + 1/log10(nc), labRow = NULL, labCol = NULL,
b465306d00ba Uploaded
kmace
parents:
diff changeset
984 key = TRUE, keysize = 1.5, density.info = c("histogram",
b465306d00ba Uploaded
kmace
parents:
diff changeset
985 "density", "none"), denscol = tracecol, symkey = min(x <
b465306d00ba Uploaded
kmace
parents:
diff changeset
986 0, na.rm = TRUE) || symbreaks, densadj = 0.25, main = NULL,
b465306d00ba Uploaded
kmace
parents:
diff changeset
987 xlab = NULL, ylab = NULL, lmat = NULL, lhei = NULL, lwid = NULL,
b465306d00ba Uploaded
kmace
parents:
diff changeset
988 ...)
b465306d00ba Uploaded
kmace
parents:
diff changeset
989 {
b465306d00ba Uploaded
kmace
parents:
diff changeset
990 scale01 <- function(x, low = min(x), high = max(x)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
991 x <- (x - low)/(high - low)
b465306d00ba Uploaded
kmace
parents:
diff changeset
992 x
b465306d00ba Uploaded
kmace
parents:
diff changeset
993 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
994 retval <- list()
b465306d00ba Uploaded
kmace
parents:
diff changeset
995 scale <- if (symm && missing(scale))
b465306d00ba Uploaded
kmace
parents:
diff changeset
996 "none"
b465306d00ba Uploaded
kmace
parents:
diff changeset
997 else match.arg(scale)
b465306d00ba Uploaded
kmace
parents:
diff changeset
998 dendrogram <- match.arg(dendrogram)
b465306d00ba Uploaded
kmace
parents:
diff changeset
999 trace <- match.arg(trace)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1000 density.info <- match.arg(density.info)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1001 if (length(col) == 1 && is.character(col))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1002 col <- get(col, mode = "function")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1003 if (!missing(breaks) && (scale != "none"))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1004 warning("Using scale=\"row\" or scale=\"column\" when breaks are",
b465306d00ba Uploaded
kmace
parents:
diff changeset
1005 "specified can produce unpredictable results.", "Please consider using only one or the other.")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1006 if (is.null(Rowv) || is.na(Rowv))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1007 Rowv <- FALSE
b465306d00ba Uploaded
kmace
parents:
diff changeset
1008 if (is.null(Colv) || is.na(Colv))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1009 Colv <- FALSE
b465306d00ba Uploaded
kmace
parents:
diff changeset
1010 else if (Colv == "Rowv" && !isTRUE(Rowv))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1011 Colv <- FALSE
b465306d00ba Uploaded
kmace
parents:
diff changeset
1012 if (length(di <- dim(x)) != 2 || !is.numeric(x))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1013 stop("`x' must be a numeric matrix")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1014 nr <- di[1]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1015 nc <- di[2]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1016 if (nr <= 1 || nc <= 1)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1017 stop("`x' must have at least 2 rows and 2 columns")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1018 if (!is.numeric(margins) || length(margins) != 2)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1019 stop("`margins' must be a numeric vector of length 2")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1020 if (missing(cellnote))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1021 cellnote <- matrix("", ncol = ncol(x), nrow = nrow(x))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1022 if (!inherits(Rowv, "dendrogram")) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1023 if (((!isTRUE(Rowv)) || (is.null(Rowv))) && (dendrogram %in%
b465306d00ba Uploaded
kmace
parents:
diff changeset
1024 c("both", "row"))) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1025 if (is.logical(Colv) && (Colv))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1026 dendrogram <- "column"
b465306d00ba Uploaded
kmace
parents:
diff changeset
1027 else dedrogram <- "none"
b465306d00ba Uploaded
kmace
parents:
diff changeset
1028 warning("Discrepancy: Rowv is FALSE, while dendrogram is `",
b465306d00ba Uploaded
kmace
parents:
diff changeset
1029 dendrogram, "'. Omitting row dendogram.")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1030 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1031 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1032 if (!inherits(Colv, "dendrogram")) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1033 if (((!isTRUE(Colv)) || (is.null(Colv))) && (dendrogram %in%
b465306d00ba Uploaded
kmace
parents:
diff changeset
1034 c("both", "column"))) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1035 if (is.logical(Rowv) && (Rowv))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1036 dendrogram <- "row"
b465306d00ba Uploaded
kmace
parents:
diff changeset
1037 else dendrogram <- "none"
b465306d00ba Uploaded
kmace
parents:
diff changeset
1038 warning("Discrepancy: Colv is FALSE, while dendrogram is `",
b465306d00ba Uploaded
kmace
parents:
diff changeset
1039 dendrogram, "'. Omitting column dendogram.")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1040 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1041 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1042 if (inherits(Rowv, "dendrogram")) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1043 ddr <- Rowv
b465306d00ba Uploaded
kmace
parents:
diff changeset
1044 rowInd <- order.dendrogram(ddr)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1045 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1046 else if (is.integer(Rowv)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1047 hcr <- hclustfun(distfun(x))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1048 ddr <- as.dendrogram(hcr)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1049 ddr <- reorder(ddr, Rowv)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1050 rowInd <- order.dendrogram(ddr)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1051 if (nr != length(rowInd))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1052 stop("row dendrogram ordering gave index of wrong length")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1053 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1054 else if (isTRUE(Rowv)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1055 Rowv <- rowMeans(x, na.rm = na.rm)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1056 hcr <- hclustfun(distfun(x))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1057 ddr <- as.dendrogram(hcr)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1058 ddr <- reorder(ddr, Rowv)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1059 rowInd <- order.dendrogram(ddr)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1060 if (nr != length(rowInd))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1061 stop("row dendrogram ordering gave index of wrong length")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1062 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1063 else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1064 rowInd <- nr:1
b465306d00ba Uploaded
kmace
parents:
diff changeset
1065 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1066 if (inherits(Colv, "dendrogram")) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1067 ddc <- Colv
b465306d00ba Uploaded
kmace
parents:
diff changeset
1068 colInd <- order.dendrogram(ddc)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1069 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1070 else if (identical(Colv, "Rowv")) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1071 if (nr != nc)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1072 stop("Colv = \"Rowv\" but nrow(x) != ncol(x)")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1073 if (exists("ddr")) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1074 ddc <- ddr
b465306d00ba Uploaded
kmace
parents:
diff changeset
1075 colInd <- order.dendrogram(ddc)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1076 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1077 else colInd <- rowInd
b465306d00ba Uploaded
kmace
parents:
diff changeset
1078 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1079 else if (is.integer(Colv)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1080 hcc <- hclustfun(distfun(if (symm)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1081 x
b465306d00ba Uploaded
kmace
parents:
diff changeset
1082 else t(x)))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1083 ddc <- as.dendrogram(hcc)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1084 ddc <- reorder(ddc, Colv)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1085 colInd <- order.dendrogram(ddc)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1086 if (nc != length(colInd))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1087 stop("column dendrogram ordering gave index of wrong length")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1088 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1089 else if (isTRUE(Colv)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1090 Colv <- colMeans(x, na.rm = na.rm)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1091 hcc <- hclustfun(distfun(if (symm)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1092 x
b465306d00ba Uploaded
kmace
parents:
diff changeset
1093 else t(x)))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1094 ddc <- as.dendrogram(hcc)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1095 ddc <- reorder(ddc, Colv)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1096 colInd <- order.dendrogram(ddc)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1097 if (nc != length(colInd))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1098 stop("column dendrogram ordering gave index of wrong length")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1099 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1100 else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1101 colInd <- 1:nc
b465306d00ba Uploaded
kmace
parents:
diff changeset
1102 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1103 retval$rowInd <- rowInd
b465306d00ba Uploaded
kmace
parents:
diff changeset
1104 retval$colInd <- colInd
b465306d00ba Uploaded
kmace
parents:
diff changeset
1105 retval$call <- match.call()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1106 x <- x[rowInd, colInd]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1107 x.unscaled <- x
b465306d00ba Uploaded
kmace
parents:
diff changeset
1108 cellnote <- cellnote[rowInd, colInd]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1109 if (is.null(labRow))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1110 labRow <- if (is.null(rownames(x)))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1111 (1:nr)[rowInd]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1112 else rownames(x)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1113 else labRow <- labRow[rowInd]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1114 if (is.null(labCol))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1115 labCol <- if (is.null(colnames(x)))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1116 (1:nc)[colInd]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1117 else colnames(x)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1118 else labCol <- labCol[colInd]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1119 if (scale == "row") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1120 retval$rowMeans <- rm <- rowMeans(x, na.rm = na.rm)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1121 x <- sweep(x, 1, rm)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1122 retval$rowSDs <- sx <- apply(x, 1, sd, na.rm = na.rm)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1123 x <- sweep(x, 1, sx, "/")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1124 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1125 else if (scale == "column") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1126 retval$colMeans <- rm <- colMeans(x, na.rm = na.rm)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1127 x <- sweep(x, 2, rm)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1128 retval$colSDs <- sx <- apply(x, 2, sd, na.rm = na.rm)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1129 x <- sweep(x, 2, sx, "/")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1130 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1131 if (missing(breaks) || is.null(breaks) || length(breaks) <
b465306d00ba Uploaded
kmace
parents:
diff changeset
1132 1) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1133 if (missing(col) || is.function(col))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1134 breaks <- 16
b465306d00ba Uploaded
kmace
parents:
diff changeset
1135 else breaks <- length(col) + 1
b465306d00ba Uploaded
kmace
parents:
diff changeset
1136 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1137 if (length(breaks) == 1) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1138 if (!symbreaks)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1139 breaks <- seq(min(x, na.rm = na.rm), max(x, na.rm = na.rm),
b465306d00ba Uploaded
kmace
parents:
diff changeset
1140 length = breaks)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1141 else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1142 extreme <- max(abs(x), na.rm = TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1143 breaks <- seq(-extreme, extreme, length = breaks)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1144 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1145 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1146 nbr <- length(breaks)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1147 ncol <- length(breaks) - 1
b465306d00ba Uploaded
kmace
parents:
diff changeset
1148 if (class(col) == "function")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1149 col <- col(ncol)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1150 min.breaks <- min(breaks)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1151 max.breaks <- max(breaks)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1152 x[x < min.breaks] <- min.breaks
b465306d00ba Uploaded
kmace
parents:
diff changeset
1153 x[x > max.breaks] <- max.breaks
b465306d00ba Uploaded
kmace
parents:
diff changeset
1154 # if (missing(lhei) || is.null(lhei))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1155 # lhei <- c(keysize, 4)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1156 # if (missing(lwid) || is.null(lwid))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1157 # lwid <- c(keysize, 4)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1158 # if (missing(lmat) || is.null(lmat)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1159 # lmat <- rbind(4:3, 2:1)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1160 # if (!missing(ColSideColors)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1161 # if (!is.character(ColSideColors) || length(ColSideColors) !=
b465306d00ba Uploaded
kmace
parents:
diff changeset
1162 # nc)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1163 # stop("'ColSideColors' must be a character vector of length ncol(x)")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1164 # lmat <- rbind(lmat[1, ] + 1, c(NA, 1), lmat[2, ] +
b465306d00ba Uploaded
kmace
parents:
diff changeset
1165 # 1)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1166 # lhei <- c(lhei[1], 0.2, lhei[2])
b465306d00ba Uploaded
kmace
parents:
diff changeset
1167 # }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1168 # if (!missing(RowSideColors)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1169 # if (!is.character(RowSideColors) || length(RowSideColors) !=
b465306d00ba Uploaded
kmace
parents:
diff changeset
1170 # nr)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1171 # stop("'RowSideColors' must be a character vector of length nrow(x)")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1172 # lmat <- cbind(lmat[, 1] + 1, c(rep(NA, nrow(lmat) -
b465306d00ba Uploaded
kmace
parents:
diff changeset
1173 # 1), 1), lmat[, 2] + 1)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1174 # lwid <- c(lwid[1], 0.2, lwid[2])
b465306d00ba Uploaded
kmace
parents:
diff changeset
1175 # }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1176 # lmat[is.na(lmat)] <- 0
b465306d00ba Uploaded
kmace
parents:
diff changeset
1177 # }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1178 # if (length(lhei) != nrow(lmat))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1179 # stop("lhei must have length = nrow(lmat) = ", nrow(lmat))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1180 # if (length(lwid) != ncol(lmat))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1181 # stop("lwid must have length = ncol(lmat) =", ncol(lmat))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1182 # op <- par(no.readonly = TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1183 # on.exit(par(op))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1184 # layout(lmat, widths = lwid, heights = lhei, respect = FALSE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1185 if (!missing(RowSideColors)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1186 par(mar = c(margins[1], 0, 0, 0.5))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1187 image(rbind(1:nr), col = RowSideColors[rowInd], axes = FALSE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1188 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1189 if (!missing(ColSideColors)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1190 par(mar = c(0.5, 0, 0, margins[2]))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1191 image(cbind(1:nc), col = ColSideColors[colInd], axes = FALSE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1192 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1193 par(mar = c(margins[1], 0, 0, margins[2]))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1194 x <- t(x)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1195 cellnote <- t(cellnote)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1196 if (revC) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1197 iy <- nr:1
b465306d00ba Uploaded
kmace
parents:
diff changeset
1198 if (exists("ddr"))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1199 ddr <- rev(ddr)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1200 x <- x[, iy]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1201 cellnote <- cellnote[, iy]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1202 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1203 else iy <- 1:nr
b465306d00ba Uploaded
kmace
parents:
diff changeset
1204 image(1:nc, 1:nr, x, xlim = 0.5 + c(0, nc), ylim = 0.5 +
b465306d00ba Uploaded
kmace
parents:
diff changeset
1205 c(0, nr), axes = FALSE, xlab = "", ylab = "", col = col,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1206 breaks = breaks, ...)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1207 retval$carpet <- x
b465306d00ba Uploaded
kmace
parents:
diff changeset
1208 if (exists("ddr"))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1209 retval$rowDendrogram <- ddr
b465306d00ba Uploaded
kmace
parents:
diff changeset
1210 if (exists("ddc"))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1211 retval$colDendrogram <- ddc
b465306d00ba Uploaded
kmace
parents:
diff changeset
1212 retval$breaks <- breaks
b465306d00ba Uploaded
kmace
parents:
diff changeset
1213 retval$col <- col
b465306d00ba Uploaded
kmace
parents:
diff changeset
1214 if (!invalid(na.color) & any(is.na(x))) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1215 mmat <- ifelse(is.na(x), 1, NA)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1216 image(1:nc, 1:nr, mmat, axes = FALSE, xlab = "", ylab = "",
b465306d00ba Uploaded
kmace
parents:
diff changeset
1217 col = na.color, add = TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1218 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1219 axis(1, 1:nc, labels = labCol, las = 2, line = -0.5, tick = 0,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1220 cex.axis = cexCol)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1221 if (!is.null(xlab))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1222 mtext(xlab, side = 1, line = margins[1] - 1.25)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1223 axis(4, iy, labels = labRow, las = 2, line = -0.5, tick = 0,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1224 cex.axis = cexRow)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1225 if (!is.null(ylab))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1226 mtext(ylab, side = 4, line = margins[2] - 1.25)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1227 if (!missing(add.expr))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1228 eval(substitute(add.expr))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1229 if (!missing(colsep))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1230 for (csep in colsep) rect(xleft = csep + 0.5, ybottom = rep(0,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1231 length(csep)), xright = csep + 0.5 + sepwidth[1],
b465306d00ba Uploaded
kmace
parents:
diff changeset
1232 ytop = rep(ncol(x) + 1, csep), lty = 1, lwd = 1,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1233 col = sepcolor, border = sepcolor)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1234 if (!missing(rowsep))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1235 for (rsep in rowsep) rect(xleft = 0, ybottom = (ncol(x) +
b465306d00ba Uploaded
kmace
parents:
diff changeset
1236 1 - rsep) - 0.5, xright = nrow(x) + 1, ytop = (ncol(x) +
b465306d00ba Uploaded
kmace
parents:
diff changeset
1237 1 - rsep) - 0.5 - sepwidth[2], lty = 1, lwd = 1,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1238 col = sepcolor, border = sepcolor)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1239 min.scale <- min(breaks)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1240 max.scale <- max(breaks)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1241 x.scaled <- scale01(t(x), min.scale, max.scale)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1242 if (trace %in% c("both", "column")) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1243 retval$vline <- vline
b465306d00ba Uploaded
kmace
parents:
diff changeset
1244 vline.vals <- scale01(vline, min.scale, max.scale)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1245 for (i in colInd) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1246 if (!is.null(vline)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1247 abline(v = i - 0.5 + vline.vals, col = linecol,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1248 lty = 2)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1249 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1250 xv <- rep(i, nrow(x.scaled)) + x.scaled[, i] - 0.5
b465306d00ba Uploaded
kmace
parents:
diff changeset
1251 xv <- c(xv[1], xv)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1252 yv <- 1:length(xv) - 0.5
b465306d00ba Uploaded
kmace
parents:
diff changeset
1253 lines(x = xv, y = yv, lwd = 1, col = tracecol, type = "s")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1254 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1255 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1256 if (trace %in% c("both", "row")) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1257 retval$hline <- hline
b465306d00ba Uploaded
kmace
parents:
diff changeset
1258 hline.vals <- scale01(hline, min.scale, max.scale)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1259 for (i in rowInd) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1260 if (!is.null(hline)) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1261 abline(h = i + hline, col = linecol, lty = 2)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1262 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1263 yv <- rep(i, ncol(x.scaled)) + x.scaled[i, ] - 0.5
b465306d00ba Uploaded
kmace
parents:
diff changeset
1264 yv <- rev(c(yv[1], yv))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1265 xv <- length(yv):1 - 0.5
b465306d00ba Uploaded
kmace
parents:
diff changeset
1266 lines(x = xv, y = yv, lwd = 1, col = tracecol, type = "s")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1267 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1268 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1269 if (!missing(cellnote))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1270 text(x = c(row(cellnote)), y = c(col(cellnote)), labels = c(cellnote),
b465306d00ba Uploaded
kmace
parents:
diff changeset
1271 col = notecol, cex = notecex)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1272 par(mar = c(margins[1], 0, 0, 0))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1273 # if (dendrogram %in% c("both", "row")) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1274 # plot(ddr, horiz = TRUE, axes = FALSE, yaxs = "i", leaflab = "none")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1275 # }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1276 # else plot.new()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1277 par(mar = c(0, 0, if (!is.null(main)) 5 else 0, margins[2]))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1278 # if (dendrogram %in% c("both", "column")) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1279 # plot(ddc, axes = FALSE, xaxs = "i", leaflab = "none")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1280 # }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1281 # else plot.new()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1282 if (!is.null(main))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1283 title(main, cex.main = 1.5 * op[["cex.main"]])
b465306d00ba Uploaded
kmace
parents:
diff changeset
1284 # if (key) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1285 # par(mar = c(5, 4, 2, 1), cex = 0.75)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1286 # tmpbreaks <- breaks
b465306d00ba Uploaded
kmace
parents:
diff changeset
1287 # if (symkey) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1288 # max.raw <- max(abs(c(x, breaks)), na.rm = TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1289 # min.raw <- -max.raw
b465306d00ba Uploaded
kmace
parents:
diff changeset
1290 # tmpbreaks[1] <- -max(abs(x), na.rm = TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1291 # tmpbreaks[length(tmpbreaks)] <- max(abs(x), na.rm = TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1292 # }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1293 # else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1294 # min.raw <- min(x, na.rm = TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1295 # max.raw <- max(x, na.rm = TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1296 # }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1297 # z <- seq(min.raw, max.raw, length = length(col))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1298 # image(z = matrix(z, ncol = 1), col = col, breaks = tmpbreaks,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1299 # xaxt = "n", yaxt = "n")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1300 # par(usr = c(0, 1, 0, 1))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1301 # lv <- pretty(breaks)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1302 # xv <- scale01(as.numeric(lv), min.raw, max.raw)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1303 # axis(1, at = xv, labels = lv)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1304 # if (scale == "row")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1305 # mtext(side = 1, "Row Z-Score", line = 2)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1306 # else if (scale == "column")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1307 # mtext(side = 1, "Column Z-Score", line = 2)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1308 # else mtext(side = 1, "Value", line = 2)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1309 # if (density.info == "density") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1310 # dens <- density(x, adjust = densadj, na.rm = TRUE)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1311 # omit <- dens$x < min(breaks) | dens$x > max(breaks)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1312 # dens$x <- dens$x[-omit]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1313 # dens$y <- dens$y[-omit]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1314 # dens$x <- scale01(dens$x, min.raw, max.raw)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1315 # lines(dens$x, dens$y/max(dens$y) * 0.95, col = denscol,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1316 # lwd = 1)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1317 # axis(2, at = pretty(dens$y)/max(dens$y) * 0.95, pretty(dens$y))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1318 # title("Color Key\nand Density Plot")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1319 # par(cex = 0.5)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1320 # mtext(side = 2, "Density", line = 2)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1321 # }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1322 # else if (density.info == "histogram") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1323 # h <- hist(x, plot = FALSE, breaks = breaks)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1324 # hx <- scale01(breaks, min.raw, max.raw)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1325 # hy <- c(h$counts, h$counts[length(h$counts)])
b465306d00ba Uploaded
kmace
parents:
diff changeset
1326 # lines(hx, hy/max(hy) * 0.95, lwd = 1, type = "s",
b465306d00ba Uploaded
kmace
parents:
diff changeset
1327 # col = denscol)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1328 # axis(2, at = pretty(hy)/max(hy) * 0.95, pretty(hy))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1329 # title("Color Key\nand Histogram")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1330 # par(cex = 0.5)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1331 # mtext(side = 2, "Count", line = 2)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1332 # }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1333 # else title("Color Key")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1334 # }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1335 # else plot.new()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1336 retval$colorTable <- data.frame(low = retval$breaks[-length(retval$breaks)],
b465306d00ba Uploaded
kmace
parents:
diff changeset
1337 high = retval$breaks[-1], color = retval$col)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1338 invisible(retval)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1339 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1340
b465306d00ba Uploaded
kmace
parents:
diff changeset
1341 #rm(list=ls())
b465306d00ba Uploaded
kmace
parents:
diff changeset
1342 param <- list()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1343 param$debug <- FALSE #T
b465306d00ba Uploaded
kmace
parents:
diff changeset
1344
b465306d00ba Uploaded
kmace
parents:
diff changeset
1345 print("Finished loading functions")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1346
b465306d00ba Uploaded
kmace
parents:
diff changeset
1347
b465306d00ba Uploaded
kmace
parents:
diff changeset
1348 if(param$debug) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1349 param <- LoadDebugParams(param)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1350 } else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1351 param <- LoadReqiredParams(param)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1352 param <- LoadOptionalParams(param)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1353 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1354 print (param)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1355 Rprof() #Remove me
b465306d00ba Uploaded
kmace
parents:
diff changeset
1356 # Load Chip data, alread in pval format
b465306d00ba Uploaded
kmace
parents:
diff changeset
1357 # Column.order need to be a vecor of strings, that correspond to the order (and
b465306d00ba Uploaded
kmace
parents:
diff changeset
1358 # inclustion) of chip experiments.
b465306d00ba Uploaded
kmace
parents:
diff changeset
1359 chip <- GetChipData(param$annotated.macs.file, column.order = param$chip.order)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1360
b465306d00ba Uploaded
kmace
parents:
diff changeset
1361 #Get the top percentages on different criteria
b465306d00ba Uploaded
kmace
parents:
diff changeset
1362 #ix.top <- GetTopRowsFromMatrix(chip$peaks, percentage = param$filter.percentage)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1363 #chip$peaks <- chip$peaks[ix.top$union, ]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1364 #chip$targets <- chip$targets[ix.top$union]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1365 #Bin data:
b465306d00ba Uploaded
kmace
parents:
diff changeset
1366 chip$peaks <- bindata.non.zero.matrix(chip$peaks, qunts = seq(0, 0.9, length=(param$number.bins+1)))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1367
b465306d00ba Uploaded
kmace
parents:
diff changeset
1368 file.names <- unlist(strsplit(param$rna.files, split="::"))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1369 print(file.names)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1370 file.lables <- unlist(strsplit(param$rna.names, split="::"))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1371 print(file.lables)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1372
b465306d00ba Uploaded
kmace
parents:
diff changeset
1373 library("RColorBrewer")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1374 color.2 = rev(colorRampPalette(c("darkblue", "steelblue", "lightgrey"))(param$number.bins))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1375 if(!is.na(file.names) && file.names != "none") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1376 #rna.scores <- GetRNAData(file.names, file.lables = file.lables, fpkm = "avg")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1377 #do differential expression if the user specifies such:
b465306d00ba Uploaded
kmace
parents:
diff changeset
1378 if(param$rna.normalization != "no") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1379 if(param$rna.normalization != "mean"){
b465306d00ba Uploaded
kmace
parents:
diff changeset
1380 norm.file.names <- unlist(strsplit(param$rna.normalization.file, split="::"))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1381 all.file.names <- c(file.names, norm.file.names)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1382 all.file.lables <- c(file.lables, norm.file.names)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1383 print (all.file.names)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1384 print (all.file.lables)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1385 rna.scores <- GetRNAData(all.file.names, file.lables = all.file.lables, fpkm = "avg")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1386 rna.scores <- NormalizeRNA(scores = rna.scores)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1387 rna.scores.sign <- rna.scores/abs(rna.scores)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1388 rna.scores.sign[which(is.nan(rna.scores.sign))] <- 0
b465306d00ba Uploaded
kmace
parents:
diff changeset
1389 rna.scores <- bindata.non.zero.matrix(abs(rna.scores), qunts = seq(0, 0.9, length=(param$number.bins+1)))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1390 rna.scores <- rna.scores.sign * rna.scores
b465306d00ba Uploaded
kmace
parents:
diff changeset
1391 color.2 = colorRampPalette(c("darkblue", "steelblue", "lightgrey", "pink", "darkred"))(param$number.bins)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1392 } else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1393 print("we are normalizing by average")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1394 print("file lables are:")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1395 print(file.lables)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1396 rna.scores <- GetRNAData(file.names, file.lables = file.lables, fpkm = "avg")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1397 rna.scores <- t(apply(rna.scores,1, function(x) { if(mean(x)!=0){ return(x/mean(x)) } else { return(x) } }))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1398 rna.scores <- bindata.non.zero.matrix(rna.scores, qunts = seq(0, 0.9, length=(param$number.bins+1)))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1399 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1400 } else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1401 rna.scores <- GetRNAData(file.names, file.lables = file.lables, fpkm = "avg")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1402 rna.scores <- bindata.non.zero.matrix(rna.scores, qunts = seq(0, 0.9, length=(param$number.bins+1)))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1403 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1404
b465306d00ba Uploaded
kmace
parents:
diff changeset
1405 # chip$peaks <- chip$peaks[order(chip$targets), ]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1406 # rna.scores <- rna.scores[order(rownames(rna.scores)), ]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1407 # chip$targets <- chip$targets[order(chip$targets)]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1408
b465306d00ba Uploaded
kmace
parents:
diff changeset
1409 rna.scores.mapped <- MapExpressiontoChip(chip.targets = chip$targets, expression=rna.scores)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1410 all.data <- cbind(chip$peaks, rna.scores.mapped)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1411 if(param$include.targetless!="yes"){
b465306d00ba Uploaded
kmace
parents:
diff changeset
1412 all.data <- all.data[-which(chip$targets==""),]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1413 chip$peaks <- chip$peaks[-which(chip$targets==""),]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1414 rna.scores.mapped <- rna.scores.mapped[-which(chip$targets==""),]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1415 chip$targets <- chip$targets[-which(chip$targets=="")]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1416 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1417 } else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1418 all.data <- chip$peaks
b465306d00ba Uploaded
kmace
parents:
diff changeset
1419 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1420
b465306d00ba Uploaded
kmace
parents:
diff changeset
1421 print("Clustering")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1422 set.seed(1234)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1423 km <- kmeans(all.data, param$clustering.number.of.clusters, iter.max = 50)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1424 print("Ordering")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1425 km.order <- GenerateKMOrder(all.data, km)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1426
b465306d00ba Uploaded
kmace
parents:
diff changeset
1427 ##AM edits##
b465306d00ba Uploaded
kmace
parents:
diff changeset
1428 km.new.order <- numeric(length(km$cluster))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1429 for(i in 1:length(km.order)){
b465306d00ba Uploaded
kmace
parents:
diff changeset
1430 cur.clst <- km.order[i]
b465306d00ba Uploaded
kmace
parents:
diff changeset
1431 ix <- which(km$cluster==cur.clst)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1432 km.new.order[ix] <- i
b465306d00ba Uploaded
kmace
parents:
diff changeset
1433 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1434 km.order <- 1:length(km.order)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1435 km$cluster <- km.new.order
b465306d00ba Uploaded
kmace
parents:
diff changeset
1436 ## Done AM ##
b465306d00ba Uploaded
kmace
parents:
diff changeset
1437 print("Creating image")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1438 #bmp(param$heatmap.document.name, 640, 480)#1280, 960)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1439 bmp(paste(param$heatmap.document.name,".bmp", sep = ""), 5120, 3840)#2560, 1920)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1440 #pdf(paste(param$heatmap.document.name,".pdf", sep = ""))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1441 color.1 <- c("#000000", colorRampPalette(c("blue", "yellow","orange","red"))(param$number.bins))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1442 if(!is.na(file.names) && file.names != "none") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1443 PrintClusters(trgts=chip$targets,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1444 k.ix=km$cluster,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1445 f.nm = param$cluster.groups.document.name,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1446 km.order = NA)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1447
b465306d00ba Uploaded
kmace
parents:
diff changeset
1448 #if(param$rna.normalization != "no") {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1449 # data.split <- cbind(chip$peaks, PrepareRNAforHeatmap(rna.scores.mapped))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1450 #} else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1451 # data.split <- cbind(chip$peaks, rna.scores.mapped)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1452 #}
b465306d00ba Uploaded
kmace
parents:
diff changeset
1453 expression.width.multiplier <- 2
b465306d00ba Uploaded
kmace
parents:
diff changeset
1454 if(ncol(rna.scores.mapped)==1) {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1455 rna.scores.mapped <- cbind(rna.scores.mapped, rna.scores.mapped)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1456 expression.width.multiplier <- 1
b465306d00ba Uploaded
kmace
parents:
diff changeset
1457 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1458
b465306d00ba Uploaded
kmace
parents:
diff changeset
1459 layout(matrix(c(1,2,2,5,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1460 1,3,4,6,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1461 1,3,4,7,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1462 1,3,4,8,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1463 1,3,4,9),
b465306d00ba Uploaded
kmace
parents:
diff changeset
1464 5,4,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1465 byrow=T),
b465306d00ba Uploaded
kmace
parents:
diff changeset
1466 widths=c(1,2*ncol(chip$peaks),expression.width.multiplier*ncol(rna.scores.mapped),1),
b465306d00ba Uploaded
kmace
parents:
diff changeset
1467 heights=c(1,10,2,10,2))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1468 #1
b465306d00ba Uploaded
kmace
parents:
diff changeset
1469 plot.new()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1470 #2
b465306d00ba Uploaded
kmace
parents:
diff changeset
1471 plot.new()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1472 #3
b465306d00ba Uploaded
kmace
parents:
diff changeset
1473 print("Creating peak image")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1474 CreateIndividualHeatMap(chip$peaks,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1475 km,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1476 km.order, color.ramp=color.1)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1477 #4
b465306d00ba Uploaded
kmace
parents:
diff changeset
1478 print("Creating rna image")
b465306d00ba Uploaded
kmace
parents:
diff changeset
1479 CreateIndividualHeatMap(rna.scores.mapped,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1480 km,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1481 km.order, color.ramp=color.2)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1482 #5
b465306d00ba Uploaded
kmace
parents:
diff changeset
1483 plot.new()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1484 #6
b465306d00ba Uploaded
kmace
parents:
diff changeset
1485 image(t(matrix(1:param$number.bins,nc=1)), col=color.1)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1486 #7
b465306d00ba Uploaded
kmace
parents:
diff changeset
1487 plot.new()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1488 #8
b465306d00ba Uploaded
kmace
parents:
diff changeset
1489 image(t(matrix(1:param$number.bins,nc=1)), col=color.2)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1490 #9
b465306d00ba Uploaded
kmace
parents:
diff changeset
1491 plot.new()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1492 } else {
b465306d00ba Uploaded
kmace
parents:
diff changeset
1493 PrintClusters(trgts=1:nrow(chip$peaks),
b465306d00ba Uploaded
kmace
parents:
diff changeset
1494 k.ix=km$cluster,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1495 f.nm = param$cluster.groups.document.name,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1496 km.order = NA)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1497
b465306d00ba Uploaded
kmace
parents:
diff changeset
1498
b465306d00ba Uploaded
kmace
parents:
diff changeset
1499 layout(matrix(c(1,2,2,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1500 1,3,4,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1501 1,3,5),3,3,byrow=T),
b465306d00ba Uploaded
kmace
parents:
diff changeset
1502 widths=c(1,3*ncol(chip$peaks),1),
b465306d00ba Uploaded
kmace
parents:
diff changeset
1503 heights=c(1,8,1))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1504 #1
b465306d00ba Uploaded
kmace
parents:
diff changeset
1505 plot.new()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1506 #2
b465306d00ba Uploaded
kmace
parents:
diff changeset
1507 plot.new()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1508 #3
b465306d00ba Uploaded
kmace
parents:
diff changeset
1509 CreateIndividualHeatMap(chip$peaks,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1510 km,
b465306d00ba Uploaded
kmace
parents:
diff changeset
1511 km.order, color.ramp=color.1)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1512 #4
b465306d00ba Uploaded
kmace
parents:
diff changeset
1513 image(t(matrix(1:param$number.bins,nc=1)), col=color.1)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1514 #5
b465306d00ba Uploaded
kmace
parents:
diff changeset
1515 plot.new()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1516
b465306d00ba Uploaded
kmace
parents:
diff changeset
1517 }
b465306d00ba Uploaded
kmace
parents:
diff changeset
1518
b465306d00ba Uploaded
kmace
parents:
diff changeset
1519 dev.off()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1520 Rprof(NULL)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1521 profile <- summaryRprof()
b465306d00ba Uploaded
kmace
parents:
diff changeset
1522 print(str(profile))
b465306d00ba Uploaded
kmace
parents:
diff changeset
1523 print(profile)
b465306d00ba Uploaded
kmace
parents:
diff changeset
1524 #save.image("test/testData.RData")