diff bin/plot_pact_tree.R @ 0:d67268158946 draft

planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
author bcclaywell
date Mon, 12 Oct 2015 17:43:33 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/plot_pact_tree.R	Mon Oct 12 17:43:33 2015 -0400
@@ -0,0 +1,59 @@
+#!/usr/bin/env Rscript
+
+library(ggplot2)
+library(argparse)
+
+parser <- ArgumentParser()
+parser$add_argument('-b', '--brewer', help="Specify a color brewer pallete")
+parser$add_argument('-c', '--color-spec', help="Specify a deme -> color CSV mapping")
+parser$add_argument('-d', '--demes', help="For help with making colors consistent, always know what all the demes are")
+parser$add_argument('common')
+parser$add_argument('input')
+parser$add_argument('output')
+args <- parser$parse_args()
+
+# Load shared library
+source(args$common)
+
+data <- read.csv(args$input, stringsAsFactors=F)
+
+# Factorify the demes and assign colors
+deme.factor <- factorify.deme(data, args=args)
+data <- deme.factor$data
+deme.colors <- deme.factor$colors
+
+# We will be doing a separate geom data setting for the tip coloring and such
+tips.data <- subset(data, klass == "tip")
+
+# Computing some values for getting spacing/padding right for tips
+x.range <- abs(min(data$x) - max(data$x))
+x.end <- max(data$x) + (x.range * 0.13)
+print(c(min(data$x), max(data$x), x.range, x.end))
+
+# Move the tips names over just a touch from the dots
+label.nudge <- x.range * 0.01
+
+
+# Go to town plotting
+gg <- ggplot(data, aes(x=x, y=y, color=label, fill=label))
+gg <- gg + geom_segment(aes(xend=parent_x, yend=parent_y))
+gg <- gg + scale_color_manual(values=deme.colors)
+gg <- gg + geom_text(aes(x=x+label.nudge, y=y, label=sequence, hjust=0), color="black", size=1.8)
+gg <- gg + geom_point(aes(color=label), data=tips.data)
+gg <- gg + theme_bw()
+# Add some padding for the label names on right
+gg <- gg + xlim(min(data$x), x.end)
+gg <- gg + theme(axis.text.y=element_blank(),
+                 axis.ticks.y=element_blank(),
+                 axis.title.y=element_blank(),
+                 legend.position="none")
+gg <- gg + xlab("time (units same as tip dates)")
+gg <- gg + labs(title="Maximum likelihood ancestral reconstruction")
+
+# Dynamically compute dimensions
+n <- dim(tips.data)[1]
+print(n)
+height <- 9*(n/292) + 3
+
+ggsave(args$output, gg, width=7, height=height)
+