comparison ks_distribution.R @ 9:214e2710c51e draft

Uploaded
author greg
date Fri, 23 Jun 2017 14:12:59 -0400
parents 22cae2172406
children 1f6943662833
comparison
equal deleted inserted replaced
8:1650842a90ba 9:214e2710c51e
3 suppressPackageStartupMessages(library("optparse")) 3 suppressPackageStartupMessages(library("optparse"))
4 4
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("-o", "--output"), action="store", dest="output", help="Output dataset") 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"),
10 make_option(c("-r", "--colors"), action="store", default=NA, help="List of component colors"),
9 ) 11 )
10 12
11 parser <- OptionParser(usage="%prog [options] file", option_list=option_list) 13 parser <- OptionParser(usage="%prog [options] file", option_list=option_list)
12 args <- parse_args(parser, positional_arguments=TRUE) 14 args <- parse_args(parser, positional_arguments=TRUE)
13 opt <- args$options 15 opt <- args$options
14
15
16 get_num_components = function(components_data)
17 {
18 # Get the max of the number_comp column.
19 number_comp = components_data[, 3]
20 num_components <- max(number_comp, na.rm=TRUE)
21 return(num_components)
22 }
23 16
24 get_pi_mu_var = function(components_data, num_components) 17 get_pi_mu_var = function(components_data, num_components)
25 { 18 {
26 # FixMe: enhance this to generically handle any integer value for num_components. 19 # FixMe: enhance this to generically handle any integer value for num_components.
27 if (num_components == 1) 20 if (num_components == 1)
62 } 55 }
63 results = c(pi, mu, var) 56 results = c(pi, mu, var)
64 return(results) 57 return(results)
65 } 58 }
66 59
67 plot_ks<-function(kaks_input, output, pi, mu, var) 60 plot_ks<-function(kaks_input, num_components, colors, output, pi, mu, var)
68 { 61 {
69 # Start PDF device driver to save charts to output. 62 # Start PDF device driver to save charts to output.
70 pdf(file=output, bg="white") 63 pdf(file=output, bg="white")
71 kaks <- read.table(file=kaks_input, header=T) 64 kaks <- read.table(file=kaks_input, header=T)
72 max_ks <- max(kaks$Ks, na.rm=TRUE) 65 max_ks <- max(kaks$Ks, na.rm=TRUE)
87 vx <- seq(1, 100) * (max_ks / 100) 80 vx <- seq(1, 100) * (max_ks / 100)
88 ymax <- max(nc) 81 ymax <- max(nc)
89 barplot(nc, space=0.25, offset=0, width=0.04, xlim=c(0, max_ks), ylim=c(0, ymax), col="lightpink1", border="lightpink3") 82 barplot(nc, space=0.25, offset=0, width=0.04, xlim=c(0, max_ks), ylim=c(0, ymax), col="lightpink1", border="lightpink3")
90 # Add x-axis. 83 # Add x-axis.
91 axis(1) 84 axis(1)
92 color <- c('red', 'yellow','green','black','blue', 'darkorange' ) 85 if(is.na(colors)
86 {
87 color <- c('red', 'yellow', 'green', 'black', 'blue', 'darkorange')
88 }
89 else
90 {
91 # Handle specified colors for components.
92 cStr <- unlist(colors)
93 color <- c()
94 items <- strsplit(cStr, ",")
95 for (item in items) {
96 color <- c(color, item)
97 }
98 num_colors_specified = length(color)
99 if num_colors_specified < num_components:
100 {
101 for (i in num_colors_specified:num_components)
102 {
103 if !(any(color=='red')
104 {
105 color <- c(color, 'red')
106 }
107 else if !(any(color=='yellow')
108 {
109 color <- c(color, 'yellow')
110 }
111 else if !(any(color=='green')
112 {
113 color <- c(color, 'green')
114 }
115 else if !(any(color=='black')
116 {
117 color <- c(color, 'black')
118 }
119 else if !(any(color=='blue')
120 {
121 color <- c(color, 'blue')
122 }
123 else
124 {
125 color <- c(color, 'darkorange')
126 }
127 }
128 }
129 }
93 for (i in 1:length(mu)) 130 for (i in 1:length(mu))
94 { 131 {
95 lines(vx, g[,i] * h, lwd=2, col=color[i]) 132 lines(vx, g[,i] * h, lwd=2, col=color[i])
96 } 133 }
97 } 134 }
115 return(fx) 152 return(fx)
116 } 153 }
117 154
118 # Read in the components data. 155 # Read in the components data.
119 components_data <- read.delim(opt$components_input, header=TRUE) 156 components_data <- read.delim(opt$components_input, header=TRUE)
120 # Get the number of components. 157 num_components <- opt$num_comp
121 num_components <- get_num_components(components_data)
122 158
123 # Set pi, mu, var. 159 # Set pi, mu, var.
124 items <- get_pi_mu_var(components_data, num_components) 160 items <- get_pi_mu_var(components_data, num_components)
125 if (num_components == 1) 161 if (num_components == 1)
126 { 162 {
158 mu <- items[7:12] 194 mu <- items[7:12]
159 var <- items[13:18] 195 var <- items[13:18]
160 } 196 }
161 197
162 # Plot the output. 198 # Plot the output.
163 plot_ks(opt$kaks_input, opt$output, pi, mu, var) 199 plot_ks(opt$kaks_input, num_components, opt$colors, opt$output, pi, mu, var)