changeset 23:492ef68d73f7 draft

Uploaded
author greg
date Mon, 26 Jun 2017 09:56:24 -0400
parents f3b7455d6c04
children 4cbeb43dc936
files ks_distribution.R
diffstat 1 files changed, 38 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/ks_distribution.R	Mon Jun 26 07:51:21 2017 -0400
+++ b/ks_distribution.R	Mon Jun 26 09:56:24 2017 -0400
@@ -7,47 +7,47 @@
     make_option(c("-k", "--kaks_input"), action="store", dest="kaks_input", help="KaKs analysis input dataset"),
     make_option(c("-n", "--num_comp"), action="store", dest="num_comp", type="integer", help="Number of significant components in the Ks distribution"),
     make_option(c("-o", "--output"), action="store", dest="output", help="Output dataset"),
-    make_option(c("-r", "--colors"), action="store", default=[], help="List of component colors")
+    make_option(c("-r", "--colors"), action="store", default=NA, help="List of component colors")
 )
 
 parser <- OptionParser(usage="%prog [options] file", option_list=option_list)
 args <- parse_args(parser, positional_arguments=TRUE)
 opt <- args$options
 
-get_pi_mu_var = function(components_data, num_components)
+get_pi_mu_var = function(components_data, number_comp)
 {
-    # FixMe: enhance this to generically handle any integer value for num_components.
-    if (num_components == 1)
+    # FixMe: enhance this to generically handle any integer value for number_comp.
+    if (number_comp == 1)
     {
         pi <- c(components_data[1, 9])
         mu <- c(components_data[1, 7])
         var <- c(components_data[1, 8])
     }
-    else if (num_components == 2)
+    else if (number_comp == 2)
     {
         pi <- c(components_data[2, 9], components_data[3, 9])
         mu <- c(components_data[2, 7], components_data[3, 7])
         var <- c(components_data[2, 8], components_data[3, 8])
     }
-    else if (num_components == 3)
+    else if (number_comp == 3)
     {
       pi <- c(components_data[4, 9], components_data[5, 9], components_data[6, 9])
       mu <- c(components_data[4, 7], components_data[5, 7], components_data[6, 7])
       var <- c(components_data[4, 8], components_data[5, 8], components_data[6, 8])
     }
-    else if (num_components == 4)
+    else if (number_comp == 4)
     {
         pi <- c(components_data[7, 9], components_data[8, 9], components_data[9, 9], components_data[10, 9])
         mu <- c(components_data[7, 7], components_data[8, 7], components_data[9, 7], components_data[10, 7])
         var <- c(components_data[7, 8], components_data[8, 8], components_data[9, 8], components_data[10, 8])
     }
-    else if (num_components == 5)
+    else if (number_comp == 5)
     {
         pi <- c(components_data[11, 9], components_data[12, 9], components_data[13, 9], components_data[14, 9], components_data[15, 9])
         mu <- c(components_data[11, 7], components_data[12, 7], components_data[13, 7], components_data[14, 7], components_data[15, 7])
         var <- c(components_data[11, 8], components_data[12, 8], components_data[13, 8], components_data[14, 8], components_data[15, 8])
     }
-    else if (num_components == 6)
+    else if (number_comp == 6)
     {
         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])
         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])
@@ -57,7 +57,7 @@
     return(results)
 }
 
-plot_ks<-function(kaks_input, num_components, colors, output, pi, mu, var)
+plot_ks<-function(kaks_input, number_comp, colors, output, pi, mu, var)
 {
     # Start PDF device driver to save charts to output.
     pdf(file=output, bg="white")
@@ -96,9 +96,9 @@
             color <- c(color, item)
         }
         num_colors_specified = length(color)
-        if (num_colors_specified < num_components):
+        if (num_colors_specified < number_comp):
         {
-            for (i in num_colors_specified:num_components)
+            for (i in num_colors_specified:number_comp)
             {
                 if !(any(color=='red'))
                 {
@@ -152,43 +152,60 @@
     return(fx)
 }
 
+# Handle colors for components.
+if (is.na(opt$colors))
+ {
+    # Randomly specify colors for components.
+    specified_colors <- c('red', 'yellow', 'green', 'black', 'blue', 'darkorange')
+}
+else
+{
+    # Handle selected colors for components.
+    parser <- newJSONParser()
+    parser$addData(opt$colors)
+    raw_colors <- parser$getObject()
+    specified_colors <- c()
+    for (raw_color in raw_colors) {
+        specified_colors <- c(specified_colors, raw_color)
+}
+
 # Read in the components data.
 components_data <- read.delim(opt$components_input, header=TRUE)
-num_components <- opt$num_comp
+number_comp <- opt$number_comp
 
 # Set pi, mu, var.
-items <- get_pi_mu_var(components_data, num_components)
-if (num_components == 1)
+items <- get_pi_mu_var(components_data, number_comp)
+if (number_comp == 1)
 {
 	pi <- items[1]
 	mu <- items[2]
 	var <- items[3]
 }
-if (num_components == 2)
+if (number_comp == 2)
 {
 	pi <- items[1:2]
 	mu <- items[3:4]
 	var <- items[5:6]
 }
-if (num_components == 3)
+if (number_comp == 3)
 {
 	pi <- items[1:3]
 	mu <- items[4:6]
 	var <- items[7:9]
 }
-if (num_components == 4)
+if (number_comp == 4)
 {
 	pi <- items[1:4]
 	mu <- items[5:8]
 	var <- items[9:12]
 }
-if (num_components == 5)
+if (number_comp == 5)
 {
 	pi <- items[1:5]
 	mu <- items[6:10]
 	var <- items[11:15]
 }
-if (num_components == 6)
+if (number_comp == 6)
 {
 	pi <- items[1:6]
 	mu <- items[7:12]
@@ -196,4 +213,4 @@
 }
 
 # Plot the output.
-plot_ks(opt$kaks_input, num_components, opt$colors, opt$output, pi, mu, var)
+plot_ks(opt$kaks_input, number_comp, specified_colors, opt$output, pi, mu, var)