view cummeRbund.R @ 2:4bbfacecedd3 draft default tip

"planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tools/cummerbund commit f929353ffb0623f2218d7dec459c7da62f3b0d24"
author devteam
date Mon, 06 Jul 2020 18:11:20 +0000
parents aefbcaf15a94
children
line wrap: on
line source

## Feature Selection ##
options(echo = TRUE)
get_features <- function(my_genes, f = "gene") {
    if (f == "isoforms")
        return(isoforms(my_genes))
    else if (f == "tss")
        return(TSS(my_genes))
    else if (f == "cds")
        return(CDS(my_genes))
    else
        return(my_genes)
}

## Main Function ##

library(argparse)

parser <- ArgumentParser(description = "Create a plot with cummeRbund")

parser$add_argument("--type", dest = "plotType", default = "Density", required = TRUE)
parser$add_argument("--height", dest = "height", type = "integer", default = 960, required = TRUE)
parser$add_argument("--width", dest = "width", type = "integer", default = 1280, required = TRUE)
parser$add_argument("--outfile", dest = "filename", default = "plot-unknown-0.png", required = TRUE)
parser$add_argument("--input", dest = "input_database", default = "cuffData.db", required = TRUE)
parser$add_argument("--smooth", dest = "smooth", action = "store_true", default = FALSE)
parser$add_argument("--gene_selector", dest = "gene_selector", action = "store_true", default = FALSE)
parser$add_argument("--replicates", dest = "replicates", action = "store_true", default = FALSE)
parser$add_argument("--labcol", dest = "labcol", action = "store_true", default = FALSE)
parser$add_argument("--labrow", dest = "labrow", action = "store_true", default = FALSE)
parser$add_argument("--border", dest = "border", action = "store_true", default = FALSE)
parser$add_argument("--summary", dest = "summary", action = "store_true", default = FALSE)
parser$add_argument("--count", dest = "count", action = "store_true", default = FALSE)
parser$add_argument("--error_bars", dest = "error_bars", action = "store_true", default = FALSE)
parser$add_argument("--log10", dest = "log10", action = "store_true", default = FALSE)
parser$add_argument("--features", dest = "features", action = "store", default = "genes")
parser$add_argument("--clustering", dest = "clustering", action = "store", default = "both")
parser$add_argument("--iter_max", dest = "iter_max", action = "store")
parser$add_argument("--genes", dest = "genes", action = "append")
parser$add_argument("--k", dest = "k", action = "store")
parser$add_argument("--x", dest = "x", action = "store")
parser$add_argument("--y", dest = "y", action = "store")

args <- parser$parse_args()

## Load cummeRbund library
library("cummeRbund")

## Initialize cuff object
cuff <- readCufflinks(dir = "", dbFile = args$input_database, rebuild = FALSE)

## Print out info
print(cuff)
sink("cuffdb_info.txt")
print(cuff)
print("SAMPLES:")
samples(cuff)
print("REPLICATES:")
replicates(cuff)
print("FEATURES:")
print(annotation(genes(cuff)))
cat(annotation(genes(cuff))[[1]], sep = ",")
sink()

png(filename = args$filename, width = args$width, height = args$height)
tryCatch({
    if (args$plotType == "density") {
        csDensity(genes(cuff), replicates = args$replicates, logMode = args$log10)
    } else if (args$plotType == "boxplot") {
        csBoxplot(genes(cuff), replicates = args$replicates, logMode = args$log10)
    } else if (args$plotType == "mds") {
        MDSplot(genes(cuff), replicates = args$replicates)
    } else if (args$plotType == "pca") {
        PCAplot(genes(cuff), "PC1", "PC2", replicates = args$replicates)
    } else if (args$plotType == "dendrogram") {
        csDendro(genes(cuff), replicates = args$replicates)
    } else if (args$plotType == "scatter") {
        if (args$gene_selector) {
            my_genes <- get_features(getGenes(cuff, args$genes), args$features)
        } else {
            my_genes <- genes(cuff)
        }
        csScatter(my_genes, args$x, args$y, smooth = args$smooth, logMode = args$log10)
    } else if (args$plotType == "volcano") {
        if (args$gene_selector) {
            my_genes <- get_features(getGenes(cuff, args$genes), args$features)
        } else {
            my_genes <- genes(cuff)
        }
        csVolcano(my_genes, args$x, args$y)
    } else if (args$plotType == "heatmap") {
        if (args$gene_selector) {
            my_genes <- getGenes(cuff, args$genes)
        } else {
            my_genes <- getGenes(cuff, annotation(genes(cuff))[[1]])
        }
        csHeatmap(get_features(my_genes, args$features), clustering = args$clustering, labCol = args$labcol, labRow = args$labrow, border = args$border, logMode = args$log10)
    } else if (args$plotType == "cluster") {
        my_genes <- getGenes(cuff, args$genes)
        csCluster(get_features(my_genes, args$features), k = args$k)
    } else if (args$plotType == "dispersion") {
        dispersionPlot(genes(cuff))
    } else if (args$plotType == "fpkmSCV") {
        fpkmSCVPlot(genes(cuff))
    } else if (args$plotType == "scatterMatrix") {
        csScatterMatrix(genes(cuff))
    } else if (args$plotType == "expressionplot") {
        my_genes <- getGenes(cuff, args$genes)
        expressionPlot(get_features(my_genes, args$features), drawSummary = args$summary, showErrorbars = args$error_bars, replicates = args$replicates)
    } else if (args$plotType == "expressionbarplot") {
        my_gene_id <- args$genes
        my_genes <- getGenes(cuff, my_gene_id)
        expressionBarplot(get_features(my_genes, args$features), showErrorbars = args$error_bars, replicates = args$replicates)
    } else if (args$plotType == "mds") {
        MDSplot(genes(cuff), replicates = args$replicates)
    } else if (args$plotType == "pca") {
        PCAplot(genes(cuff), "PC1", "PC2", replicates = args$replicates)
    } else if (args$plotType == "maplot") {
        MAplot(genes(cuff), args$x, args$y, useCount = args$count)
    } else if (args$plotType == "genetrack") {
        my_gene <- getGene(cuff, args$genes)
        plotTracks(makeGeneRegionTrack(my_gene))
    }
}, error = function(e) {
    write(paste("Failed:", e, sep = " "), stderr())
    q("no", 1, TRUE)
})
devname <- dev.off()
print("cummeRbund finished")