Mercurial > repos > yufei-luo > s_mart
diff SMART/DiffExpAnal/testR.R @ 18:94ab73e8a190
Uploaded
author | m-zytnicki |
---|---|
date | Mon, 29 Apr 2013 03:20:15 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SMART/DiffExpAnal/testR.R Mon Apr 29 03:20:15 2013 -0400 @@ -0,0 +1,93 @@ +#!/usr/bin + +library(DESeq) +library(hexbin) +library(latticeExtra) +library(gplots) +library(geneplotter) +library(Biobase) + +##In a file called test_args.R +args <- commandArgs() + + +fileName <- args[4] +colNames <- as.integer(unlist(strsplit(args[5], ","))) +colCond1 <- as.integer(unlist(strsplit(args[6], ","))) +colCond2 <- as.integer(unlist(strsplit(args[7], ","))) +OUTPUTCSV <- args[8] +OUTPUTPNG <- args[9] + +if(colNames[1]!=0){ + countsTable <- read.delim(fileName, row.names=1) + conditions <- c((colNames[length(colNames)]+1):ncol(countsTable)) +} else if(colNames[1]==0){ + countsTable <- read.delim(fileName) + conditions <- c(1:ncol(countsTable)) + rownames(countsTable) <- paste( "Gene", 1:nrow(countsTable), sep="_" )} + +for(i in colCond1){conditions[i] = "A"} +for(i in colCond2){conditions[i] = "B"} +conditions +#analysis with DESeq +cds <- newCountDataSet( countsTable, conditions ) +cds <- estimateSizeFactors( cds ) +cds <- estimateVarianceFunctions( cds ) +result <- nbinomTest( cds, "A", "B" ) +#stock the result dans un .tsv as output file +write.table(result, OUTPUTCSV, sep = " ", quote = FALSE, col.names = NA) + +#figures for DE analysis +#pdf( OUTPUTPNG, width=4, height=4 ) +png( filename=OUTPUTPNG, width=700, height=700 ) +#png format is not as clear as pdf format!!!!!!!!!!!!!!!!!!!!!!!!! +print(xyplot( + log2FoldChange ~ I(baseMean), + result, + pch=16, cex=.3, + col=ifelse(result$padj < .1, "#FF000040","#00000040" ), + panel = function( x, y, col, ...) { + above <- (y > 5.8) + below <- (y < -5.8) + inside <- !( above | below ) + panel.xyplot( x=x[inside], y=y[inside], col=col[inside], ...) + panel.arrows( x[above], 5.8, x[above], 5.95, col=col[above],length=".1", unit="native" ) + panel.arrows( x[below], -5.8, x[below], -5.95, col=col[below],length=".1", unit="native" ) }, + axis = function(side, ...) { + if( side=="left") { + panel.axis( side, outside=TRUE, at=seq(-14,14,by=1), labels=FALSE ) + panel.axis( side, outside=TRUE, at=seq(-10,10,by=5), labels=TRUE ) + } + if( side=="bottom") { + panel.axis( side, outside=TRUE, at=seq(-2,10,by=1), rot=0, + labels = do.call( expression, + lapply( seq(-2,10,by=1), function(a) + substitute( 10^b, list(b=a) ) ) ) ) + } }, + xlab = "mean", ylab = "log2 fold change", + scales = list(x = list( log=TRUE ),y = list( log=FALSE, limits=c( -6, 6 ) ) ) )) +dev.off() + +#The volcano plot +#pdf( "vulcano_fly.pdf", width=4, height=4 ) +#print(xyplot( -log10( pval ) ~ log2FoldChange, +# result, +# pch=20, cex=.2, +# col=ifelse( result$padj<.1, "#FF000050", "#00000050" ), +# axis = function( side, ... ) { +# if( side=="bottom") { +# panel.axis( side, outside=TRUE, at=seq(-14,14,by=1), labels=FALSE ) +# panel.axis( side, outside=TRUE, at=seq(-10,10,by=5), labels=TRUE ) +# } +# if( side=="left") { +# panel.axis( side, outside=TRUE, at=seq(0,25,by=1), labels=FALSE ) +# panel.axis( side, outside=TRUE, at=seq(0,25,by=5), +# labels = do.call( expression, +# lapply( seq(0,25,by=5), function(a) +# substitute( 10^-b, list(b=a) ) ) ) ) +# } }, +# xlab = "log2 fold change", ylab = "p value", +# scales = list( +# x = list( limits=c( -6, 6 ) ), +# y = list( limits=c( 0, 25 ) ) ) )) +#dev.off()