comparison ks_distribution.R @ 23:492ef68d73f7 draft

Uploaded
author greg
date Mon, 26 Jun 2017 09:56:24 -0400
parents e6bbc7426cd1
children da8615a486fe
comparison
equal deleted inserted replaced
22:f3b7455d6c04 23:492ef68d73f7
5 option_list <- list( 5 option_list <- list(
6 make_option(c("-c", "--components_input"), action="store", dest="components_input", help="Ks significant components input dataset"), 6 make_option(c("-c", "--components_input"), action="store", dest="components_input", help="Ks significant components input dataset"),
7 make_option(c("-k", "--kaks_input"), action="store", dest="kaks_input", help="KaKs analysis input dataset"), 7 make_option(c("-k", "--kaks_input"), action="store", dest="kaks_input", help="KaKs analysis input dataset"),
8 make_option(c("-n", "--num_comp"), action="store", dest="num_comp", type="integer", help="Number of significant components in the Ks distribution"), 8 make_option(c("-n", "--num_comp"), action="store", dest="num_comp", type="integer", help="Number of significant components in the Ks distribution"),
9 make_option(c("-o", "--output"), action="store", dest="output", help="Output dataset"), 9 make_option(c("-o", "--output"), action="store", dest="output", help="Output dataset"),
10 make_option(c("-r", "--colors"), action="store", default=[], help="List of component colors") 10 make_option(c("-r", "--colors"), action="store", default=NA, help="List of component colors")
11 ) 11 )
12 12
13 parser <- OptionParser(usage="%prog [options] file", option_list=option_list) 13 parser <- OptionParser(usage="%prog [options] file", option_list=option_list)
14 args <- parse_args(parser, positional_arguments=TRUE) 14 args <- parse_args(parser, positional_arguments=TRUE)
15 opt <- args$options 15 opt <- args$options
16 16
17 get_pi_mu_var = function(components_data, num_components) 17 get_pi_mu_var = function(components_data, number_comp)
18 { 18 {
19 # FixMe: enhance this to generically handle any integer value for num_components. 19 # FixMe: enhance this to generically handle any integer value for number_comp.
20 if (num_components == 1) 20 if (number_comp == 1)
21 { 21 {
22 pi <- c(components_data[1, 9]) 22 pi <- c(components_data[1, 9])
23 mu <- c(components_data[1, 7]) 23 mu <- c(components_data[1, 7])
24 var <- c(components_data[1, 8]) 24 var <- c(components_data[1, 8])
25 } 25 }
26 else if (num_components == 2) 26 else if (number_comp == 2)
27 { 27 {
28 pi <- c(components_data[2, 9], components_data[3, 9]) 28 pi <- c(components_data[2, 9], components_data[3, 9])
29 mu <- c(components_data[2, 7], components_data[3, 7]) 29 mu <- c(components_data[2, 7], components_data[3, 7])
30 var <- c(components_data[2, 8], components_data[3, 8]) 30 var <- c(components_data[2, 8], components_data[3, 8])
31 } 31 }
32 else if (num_components == 3) 32 else if (number_comp == 3)
33 { 33 {
34 pi <- c(components_data[4, 9], components_data[5, 9], components_data[6, 9]) 34 pi <- c(components_data[4, 9], components_data[5, 9], components_data[6, 9])
35 mu <- c(components_data[4, 7], components_data[5, 7], components_data[6, 7]) 35 mu <- c(components_data[4, 7], components_data[5, 7], components_data[6, 7])
36 var <- c(components_data[4, 8], components_data[5, 8], components_data[6, 8]) 36 var <- c(components_data[4, 8], components_data[5, 8], components_data[6, 8])
37 } 37 }
38 else if (num_components == 4) 38 else if (number_comp == 4)
39 { 39 {
40 pi <- c(components_data[7, 9], components_data[8, 9], components_data[9, 9], components_data[10, 9]) 40 pi <- c(components_data[7, 9], components_data[8, 9], components_data[9, 9], components_data[10, 9])
41 mu <- c(components_data[7, 7], components_data[8, 7], components_data[9, 7], components_data[10, 7]) 41 mu <- c(components_data[7, 7], components_data[8, 7], components_data[9, 7], components_data[10, 7])
42 var <- c(components_data[7, 8], components_data[8, 8], components_data[9, 8], components_data[10, 8]) 42 var <- c(components_data[7, 8], components_data[8, 8], components_data[9, 8], components_data[10, 8])
43 } 43 }
44 else if (num_components == 5) 44 else if (number_comp == 5)
45 { 45 {
46 pi <- c(components_data[11, 9], components_data[12, 9], components_data[13, 9], components_data[14, 9], components_data[15, 9]) 46 pi <- c(components_data[11, 9], components_data[12, 9], components_data[13, 9], components_data[14, 9], components_data[15, 9])
47 mu <- c(components_data[11, 7], components_data[12, 7], components_data[13, 7], components_data[14, 7], components_data[15, 7]) 47 mu <- c(components_data[11, 7], components_data[12, 7], components_data[13, 7], components_data[14, 7], components_data[15, 7])
48 var <- c(components_data[11, 8], components_data[12, 8], components_data[13, 8], components_data[14, 8], components_data[15, 8]) 48 var <- c(components_data[11, 8], components_data[12, 8], components_data[13, 8], components_data[14, 8], components_data[15, 8])
49 } 49 }
50 else if (num_components == 6) 50 else if (number_comp == 6)
51 { 51 {
52 pi <- c(components_data[16, 9], components_data[17, 9], components_data[18, 9], components_data[19, 9], components_data[20, 9], components_data[21, 9]) 52 pi <- c(components_data[16, 9], components_data[17, 9], components_data[18, 9], components_data[19, 9], components_data[20, 9], components_data[21, 9])
53 mu <- c(components_data[16, 7], components_data[17, 7], components_data[18, 7], components_data[19, 7], components_data[20, 7], components_data[21, 7]) 53 mu <- c(components_data[16, 7], components_data[17, 7], components_data[18, 7], components_data[19, 7], components_data[20, 7], components_data[21, 7])
54 var <- c(components_data[16, 8], components_data[17, 8], components_data[18, 8], components_data[19, 8], components_data[20, 8], components_data[21, 8]) 54 var <- c(components_data[16, 8], components_data[17, 8], components_data[18, 8], components_data[19, 8], components_data[20, 8], components_data[21, 8])
55 } 55 }
56 results = c(pi, mu, var) 56 results = c(pi, mu, var)
57 return(results) 57 return(results)
58 } 58 }
59 59
60 plot_ks<-function(kaks_input, num_components, colors, output, pi, mu, var) 60 plot_ks<-function(kaks_input, number_comp, colors, output, pi, mu, var)
61 { 61 {
62 # Start PDF device driver to save charts to output. 62 # Start PDF device driver to save charts to output.
63 pdf(file=output, bg="white") 63 pdf(file=output, bg="white")
64 kaks <- read.table(file=kaks_input, header=T) 64 kaks <- read.table(file=kaks_input, header=T)
65 max_ks <- max(kaks$Ks, na.rm=TRUE) 65 max_ks <- max(kaks$Ks, na.rm=TRUE)
94 items <- strsplit(cStr, ",") 94 items <- strsplit(cStr, ",")
95 for (item in items) { 95 for (item in items) {
96 color <- c(color, item) 96 color <- c(color, item)
97 } 97 }
98 num_colors_specified = length(color) 98 num_colors_specified = length(color)
99 if (num_colors_specified < num_components): 99 if (num_colors_specified < number_comp):
100 { 100 {
101 for (i in num_colors_specified:num_components) 101 for (i in num_colors_specified:number_comp)
102 { 102 {
103 if !(any(color=='red')) 103 if !(any(color=='red'))
104 { 104 {
105 color <- c(color, 'red') 105 color <- c(color, 'red')
106 } 106 }
150 } 150 }
151 } 151 }
152 return(fx) 152 return(fx)
153 } 153 }
154 154
155 # Handle colors for components.
156 if (is.na(opt$colors))
157 {
158 # Randomly specify colors for components.
159 specified_colors <- c('red', 'yellow', 'green', 'black', 'blue', 'darkorange')
160 }
161 else
162 {
163 # Handle selected colors for components.
164 parser <- newJSONParser()
165 parser$addData(opt$colors)
166 raw_colors <- parser$getObject()
167 specified_colors <- c()
168 for (raw_color in raw_colors) {
169 specified_colors <- c(specified_colors, raw_color)
170 }
171
155 # Read in the components data. 172 # Read in the components data.
156 components_data <- read.delim(opt$components_input, header=TRUE) 173 components_data <- read.delim(opt$components_input, header=TRUE)
157 num_components <- opt$num_comp 174 number_comp <- opt$number_comp
158 175
159 # Set pi, mu, var. 176 # Set pi, mu, var.
160 items <- get_pi_mu_var(components_data, num_components) 177 items <- get_pi_mu_var(components_data, number_comp)
161 if (num_components == 1) 178 if (number_comp == 1)
162 { 179 {
163 pi <- items[1] 180 pi <- items[1]
164 mu <- items[2] 181 mu <- items[2]
165 var <- items[3] 182 var <- items[3]
166 } 183 }
167 if (num_components == 2) 184 if (number_comp == 2)
168 { 185 {
169 pi <- items[1:2] 186 pi <- items[1:2]
170 mu <- items[3:4] 187 mu <- items[3:4]
171 var <- items[5:6] 188 var <- items[5:6]
172 } 189 }
173 if (num_components == 3) 190 if (number_comp == 3)
174 { 191 {
175 pi <- items[1:3] 192 pi <- items[1:3]
176 mu <- items[4:6] 193 mu <- items[4:6]
177 var <- items[7:9] 194 var <- items[7:9]
178 } 195 }
179 if (num_components == 4) 196 if (number_comp == 4)
180 { 197 {
181 pi <- items[1:4] 198 pi <- items[1:4]
182 mu <- items[5:8] 199 mu <- items[5:8]
183 var <- items[9:12] 200 var <- items[9:12]
184 } 201 }
185 if (num_components == 5) 202 if (number_comp == 5)
186 { 203 {
187 pi <- items[1:5] 204 pi <- items[1:5]
188 mu <- items[6:10] 205 mu <- items[6:10]
189 var <- items[11:15] 206 var <- items[11:15]
190 } 207 }
191 if (num_components == 6) 208 if (number_comp == 6)
192 { 209 {
193 pi <- items[1:6] 210 pi <- items[1:6]
194 mu <- items[7:12] 211 mu <- items[7:12]
195 var <- items[13:18] 212 var <- items[13:18]
196 } 213 }
197 214
198 # Plot the output. 215 # Plot the output.
199 plot_ks(opt$kaks_input, num_components, opt$colors, opt$output, pi, mu, var) 216 plot_ks(opt$kaks_input, number_comp, specified_colors, opt$output, pi, mu, var)