diff small_rna_maps.r @ 11:a561a71bd7d7 draft

planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/master/tools/small_rna_maps commit c24bbb6d53574eb1c1eb8d219cf2a39a9ed5b3ff
author artbio
date Tue, 06 Mar 2018 06:11:55 -0500
parents a96e6a7df2b7
children d33263e6e812
line wrap: on
line diff
--- a/small_rna_maps.r	Tue Nov 07 17:38:39 2017 -0500
+++ b/small_rna_maps.r	Tue Mar 06 06:11:55 2018 -0500
@@ -43,7 +43,7 @@
         i = i + 1
     }
 }
-genes=unique(levels(Table$Chromosome))
+genes=unique(Table$Chromosome)
 per_gene_readmap=lapply(genes, function(x) subset(Table, Chromosome==x))
 per_gene_limit=lapply(genes, function(x) c(1, unique(subset(Table, Chromosome==x)$Chrom_length)) )
 n_genes=length(per_gene_readmap)
@@ -147,62 +147,6 @@
     combineLimits(p)
 }
 
-plot_single <- function(df, method=args$first_plot_method, rows_per_page=rows_per_page, ...) {
-    if (method == 'Counts') {
-        p = xyplot(Counts~Coordinate|factor(Dataset, levels=unique(Dataset))+factor(Chromosome, levels=unique(Chromosome)),
-                   data=df,
-                   type='h',
-                   lwd=1.5,
-                   scales= list(relation="free", x=list(rot=0, cex=0.7, axs="i", tck=0.5), y=list(tick.number=4, rot=90, cex=0.7)),
-                   xlab=list(label=bottom_first_method[[args$first_plot_method]], cex=.85),
-                   ylab=list(label=legend_first_method[[args$first_plot_method]], cex=.85),
-                   main=title_first_method[[args$first_plot_method]],
-                   origin = 0,
-                   group=Polarity,
-                   col=c("red","blue"),
-                   par.strip.text = list(cex=0.7),
-                   as.table=T,
-                   ...)
-        p = update(useOuterStrips(p, strip.left=strip.custom(par.strip.text = list(cex=0.5))), layout=c(n_samples, rows_per_page))
-        return(p)
-    } else if (method != "Size") {
-        p = xyplot(eval(as.name(method))~Coordinate|factor(Dataset, levels=unique(Dataset))+factor(Chromosome, levels=unique(Chromosome)),
-                   data=df,
-                   type='p',
-                   pch=19,
-                   cex=0.35,
-                   scales= list(relation="free", x=list(rot=0, cex=0.7, axs="i", tck=0.5), y=list(tick.number=4, rot=90, cex=0.7)),
-                   xlab=list(label=bottom_first_method[[args$first_plot_method]], cex=.85),
-                   ylab=list(label=legend_first_method[[args$first_plot_method]], cex=.85),
-                   main=title_first_method[[args$first_plot_method]],
-                   origin = 0,
-                   group=Polarity,
-                   col=c("red","blue"),
-                   par.strip.text = list(cex=0.7),
-                   as.table=T,
-                   ...)
-        p = update(useOuterStrips(p, strip.left=strip.custom(par.strip.text = list(cex=0.5))), layout=c(n_samples, rows_per_page))
-        return(p)
-    } else {
-        p= barchart(Counts~as.factor(Size)|factor(Dataset, levels=unique(Dataset))+Chromosome, data = df, origin = 0,
-                    horizontal=FALSE,
-                    group=Polarity,
-                    stack=TRUE,
-                    col=c('red', 'blue'),
-                    scales=list(y=list(tick.number=4, rot=90, relation="free", cex=0.5, alternating=T), x=list(rot=0, cex=0.6, tck=0.5, alternating=c(3,3))),
-                    xlab=list(label=bottom_first_method[[args$first_plot_method]], cex=.85),
-                    ylab=list(label=legend_first_method[[args$first_plot_method]], cex=.85),
-                    main=title_first_method[[args$first_plot_method]],
-                    par.strip.text = list(cex=0.7),
-                    nrow = 8,
-                    as.table=TRUE,
-                    ...)
-          p = update(useOuterStrips(p, strip.left=strip.custom(par.strip.text = list(cex=0.5))), layout=c(n_samples, rows_per_page))
-          p = combineLimits(p, extend=TRUE)
-          return (p)
-        }
-}
-
 ## function parameters
 
 #par.settings.firstplot = list(layout.heights=list(top.padding=11, bottom.padding = -14))
@@ -220,20 +164,22 @@
 ## Plotting Functions
 
 double_plot <- function(...) {
-    if (n_genes > 5) {page_height=15; rows_per_page=10} else {
-                     rows_per_page= 2 * n_genes; page_height=1.5*n_genes}
-    if (n_samples > 4) {page_width = 8.2677*n_samples/4} else {page_width = 7 * n_samples/2}
+    page_height = 15
+    rows_per_page = 10
+    graph_heights=c(40,30,40,30,40,30,40,30,40,30,10)
+    if (n_samples > 4) {page_width = 8.2677*n_samples/4} else {page_width = 2.3*n_samples +2.5}
     pdf(file=args$output_pdf, paper="special", height=page_height, width=page_width)
     for (i in seq(1,n_genes,rows_per_page/2)) {
         start=i
         end=i+rows_per_page/2-1
         if (end>n_genes) {end=n_genes}
+        if (end-start+1 < 5) {graph_heights=c(rep(c(40,30),end-start+1),10,rep(c(40,30),5-(end-start+1)))}
         first_plot.list = lapply(per_gene_readmap[start:end], function(x) plot_unit(x, strip=FALSE, par.settings=par.settings.firstplot))
         second_plot.list = lapply(per_gene_size[start:end], function(x) plot_unit(x, method=args$extra_plot_method, par.settings=par.settings.secondplot))
         plot.list=rbind(second_plot.list, first_plot.list)
-        args_list=c(plot.list, list( nrow=rows_per_page+1, ncol=1,  heights=unit(c(40,30,40,30,40,30,40,30,40,30,10), rep("mm", 11)),
+        args_list=c(plot.list, list( nrow=rows_per_page+1, ncol=1, heights=unit(graph_heights, rep("mm", 11)),
                                     top=textGrob(paste(title_first_method[[args$first_plot_method]], "and", title_extra_method[[args$extra_plot_method]]), gp=gpar(cex=1), vjust=0, just="top"),
-                                    left=textGrob(paste(legend_first_method[[args$first_plot_method]], "/", legend_extra_method[[args$extra_plot_method]]), gp=gpar(cex=1), vjust=2, rot=90),
+                                    left=textGrob(paste(legend_first_method[[args$first_plot_method]], "/", legend_extra_method[[args$extra_plot_method]]), gp=gpar(cex=1), just=0.675*(end-start-(2.2*(4/2.7))),vjust=2, rot=90),
                                     sub=textGrob(paste(bottom_first_method[[args$first_plot_method]], "/", bottom_extra_method[[args$extra_plot_method]]), gp=gpar(cex=1), just="bottom", vjust=2)
                                     )
                    )
@@ -246,14 +192,22 @@
 single_plot <- function(...) {
     width = 8.2677 * n_samples / 2
     rows_per_page=8
-    pdf(file=args$output_pdf, paper="special", height=11.69, width=width)
+    graph_heights=c(rep(40,8),10)
+    pdf(file=args$output_pdf, paper="special", height=15, width=width)
     for (i in seq(1,n_genes,rows_per_page)) {
         start=i
         end=i+rows_per_page-1
         if (end>n_genes) {end=n_genes}
-        bunch = do.call(rbind, per_gene_readmap[start:end]) # sub dataframe from the list
-        p = plot_single(bunch, method=args$first_plot_method, par.settings=par.settings.single_plot, rows_per_page=rows_per_page)
-        plot(p)
+        if (end-start+1 < 8) {graph_heights=c(rep(c(40),end-start+1),10,rep(c(40),8-(end-start+1)))}
+        first_plot.list = lapply(per_gene_readmap[start:end], function(x) plot_unit(x, par.settings=par.settings.firstplot))
+        plot.list=rbind(first_plot.list)
+        args_list=c(plot.list, list( nrow=rows_per_page+1, ncol=1, heights=unit(graph_heights, rep("mm", 9)),
+                                    top=textGrob(title_first_method[[args$first_plot_method]], gp=gpar(cex=1), vjust=0, just="top"),
+                                    left=textGrob(legend_first_method[[args$first_plot_method]], gp=gpar(cex=1), just=(6.4/7)*(end-start-(6.2*(7/6.4))),vjust=2, rot=90),
+                                    sub=textGrob(bottom_first_method[[args$first_plot_method]], gp=gpar(cex=1), just="bottom", vjust=2)
+                                    )
+                   )
+        do.call(grid.arrange, args_list)
         }
     devname=dev.off()
 }