Mercurial > repos > greg > ks_distribution
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) |