Mercurial > repos > vipints > deseq_hts
diff dexseq-hts_1.0/src/run_DEXseq.R @ 11:cec4b4fb30be draft default tip
DEXSeq version 1.6 added
author | vipints <vipin@cbio.mskcc.org> |
---|---|
date | Tue, 08 Oct 2013 08:22:45 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dexseq-hts_1.0/src/run_DEXseq.R Tue Oct 08 08:22:45 2013 -0400 @@ -0,0 +1,73 @@ +### load DEXSeq package +suppressMessages(require("DEXSeq")) + +### get arguments 1: INFILE, 2: OUTFILE 3:SIZE +args <- commandArgs() +INFILE<-args[4] +EXTRAPATH<-args[5] +annodb<-args[6] +OUTFILE<-args[7] + +INFILE_CONDS=c(paste(INFILE, "_CONDITIONS.tab", sep="")) + +### read count data from file +condsTable <- read.delim( INFILE_CONDS, header=TRUE, stringsAsFactors=TRUE, row.names=1 ) +#head(condsTable) + +conditions<-factor( condsTable[ , 1] ) +#print(conditions) + +## unique condition to define the pair of tests +uniq_conds <- unique(conditions) +#print(uniq_conds) + +## all possible pairs of conditions +pw_tests <- list() +for(i in 1:(length(uniq_conds)-1)) { + for(j in (i+1):length(uniq_conds)) { + pw_tests[[length(pw_tests)+1]] <- c(uniq_conds[i], uniq_conds[j]) + } +} +#print(pw_tests) + +tab <- NULL +## testing all possible pairs of conditions +for(i in 1:length(pw_tests)) { + ## header name + test_pair_name <- c(paste(pw_tests[[i]][1], "__vs__", pw_tests[[i]][2], sep="")) + print(test_pair_name) + + sub.data <- subset(condsTable, (conditions %in% c(pw_tests[[i]][1],pw_tests[[i]][2]))) + sub.data[[1]]<-as.factor(sub.data[[1]]) + + ecs = read.HTSeqCounts(countfiles=file.path(EXTRAPATH, row.names(sub.data)), design=sub.data, flattenedfile=annodb) + + ## Normalisation + ecs <- estimateSizeFactors(ecs) + print(sizeFactors(ecs)) + + suppressMessages(require("parallel")) + ## Dispersion estimation + ecs <- estimateDispersions(ecs, nCores=2) + ecs <- fitDispersionFunction(ecs) + + ## Testing for differential exon usage + ecs <- testForDEU(ecs, nCores=2) + + ## estimate the fold change + ecs <- estimatelog2FoldChanges(ecs, nCores=2) + + ## Result table + resultTable <- DEUresultTable(ecs) + print(head(resultTable)) + + colnames(resultTable) <- paste(test_pair_name, colnames(resultTable), sep=":") + #print(colnames(resultTable)) + + if(is.null(tab)) { + tab<- resultTable + } + else tab<- cbind(tab, resultTable) +} +## printing the result to out file +write.table(tab, OUTFILE, quote=F, sep="\t", row.names=F)