annotate cluster.tools/determine.IPL.threshold.R @ 0:0decf3fd54bc draft

Uploaded
author peter-waltman
date Thu, 28 Feb 2013 01:45:39 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
1 #!/usr/bin/env Rscript
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
2
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
3 ##usage, options and doc goes here
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
4 argspec <- c("determine.IPL.threshold.R takes an IPL result, and determines a statistically sound threshold to use
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
5
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
6 Usage:
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
7 determine.IPL.threshold.R -d <IPL_data_file>
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
8 Optional:
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
9 -o output.rdata ## rdata output file (contains variables used for calculation, for those who want to review them
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
10 -f filter type # must be either modulated, active, or inactive
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
11 -p percent of samples passing (must be value on [0,1]
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
12 \n\n")
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
13 args <- commandArgs(TRUE)
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
14 if ( length( args ) == 1 && args =="--help") {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
15 write( argspec, stderr() )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
16 q();
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
17 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
18
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
19 lib.load.quiet <- function( package ) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
20 package <- as.character(substitute(package))
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
21 suppressPackageStartupMessages( do.call( "library", list( package=package ) ) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
22 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
23 lib.load.quiet(getopt)
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
24
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
25 spec <- matrix( c( "data.fname", "d", 1, "character",
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
26 "output.rdata", "o", 2, "character",
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
27 "filter.type", "f", 2, "character",
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
28 "perc.pass", "p", 2, "numeric",
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
29 "selection.criteria", "s", 2, "character",
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
30 "output.report.dir", "r", 2, "character",
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
31 "output.report.html", "h", 2, "character"
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
32 ),
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
33 nc=4,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
34 byrow=T
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
35 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
36 opt <- getopt( spec=spec )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
37
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
38 ## default params for non-required params
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
39 if ( is.null( opt$filter.type ) ) { opt$filter.type <- 'modulated' }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
40 if ( is.null( opt$perc.pass ) ) { opt$perc.pass <- 1/3 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
41 if ( is.null( opt$selection.criteria ) ) { opt$selection.criteria <- 'max_diffs' }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
42 if ( is.null( opt$output.report.dir ) ) { opt$output.report.dir <- "report" }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
43 if ( is.null( opt$output.report.html ) ) { opt$output.report.html <- "report/index.html" }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
44 if ( is.null( opt$output.rdata ) ) { opt$output.rdata <- "output.rdata" }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
45 if ( opt$perc.pass < 0 ) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
46 stop( "please specify a positive number for the percentage of samples that pass the filter (if applicable)" )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
47 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
48
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
49 if (!file.exists(opt$output.report.dir)){
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
50 dir.create(opt$output.report.dir)
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
51 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
52
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
53
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
54 data <- as.matrix( read.delim( opt$data.fname, row.names=1, check.names=FALSE ) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
55 genes <- rownames( data )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
56 genes <- genes[ !grepl( "abstract|family|complex", genes ) ]
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
57 data <- data[ genes, ]
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
58
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
59 nulls.mat <- grepl( "na_", colnames( data ) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
60 reals <- ! nulls.mat
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
61 nulls.mat <- data[ , nulls.mat ]
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
62 reals.mat <- data[, reals ]
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
63 if ( ncol( nulls.mat ) == 0 ) stop( "no nulls were in the file provided!\n" )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
64 if ( ncol( reals.mat ) == 0 ) stop( "no reals were in the file provided!\n" )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
65
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
66
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
67 if ( opt$filter.type == 'modulated' ) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
68 reals.mat <- abs( reals.mat )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
69 nulls.mat <- abs( nulls.mat )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
70 } else {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
71 if ( opt$filter.type == "inactive" ) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
72 reals.mat <- -reals.mat
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
73 nulls.mat <- -nulls.mat
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
74 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
75 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
76
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
77
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
78 ## we only look at the larger 50% of the possible IPL values
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
79 ## as possible thresholds to use (since the lower 50% are almost
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
80 ## always uninformative)
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
81 thresholds <- unique( quantile( reals.mat,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
82 seq( 0.5, 1, by=0.001 ) ) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
83 thresholds <- c( thresholds,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
84 quantile( nulls.mat,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
85 seq( 0.5, 1, by=0.001 ) ) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
86 thresholds <- unique( sort( thresholds ) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
87
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
88
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
89 get.num.filtered.feats <- function( mat,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
90 threshold,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
91 perc.samples.passing=1/3 ) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
92 feat.vect <- apply( mat,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
93 1,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
94 function(x) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
95 tmp <- sum( x > threshold )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
96 if ( perc.samples.passing >=1 ) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
97 return( tmp >= perc.samples.passing )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
98 } else {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
99 return( tmp > floor( perc.samples.passing * length(x) ) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
100 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
101 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
102 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
103 return( sum( feat.vect ) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
104 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
105
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
106
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
107 real.feats <- null.feats <- length( genes )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
108 chisq.pvals <- binom.pvals <- numeric()
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
109
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
110 for ( i in 1:length( thresholds ) ) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
111
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
112 nul.feats.this.thresh <- get.num.filtered.feats( mat=nulls.mat, threshold=thresholds[i], perc.samples.passing=opt$perc.pass )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
113 ## limit the maximum threshold to one where there are at least 75 valid points
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
114 ## because if there are fewer nulls than that, it heavily skews the probability
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
115 if ( nul.feats.this.thresh < 50 ) break
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
116
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
117 null.feats[ i ] <- nul.feats.this.thresh
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
118 real.feats[ i ] <- get.num.filtered.feats( mat=reals.mat, threshold=thresholds[i], perc.samples.passing=opt$perc.pass )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
119
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
120 ## only calculate if there are more real features than nulls, otherwise, give a p-value of 1
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
121 if ( null.feats[i] < real.feats[i] ) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
122 p <- null.feats[i]/nrow( nulls.mat )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
123 sd <- ( nrow( nulls.mat ) * p * (1-p ) )^0.5
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
124
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
125 ## binomial test
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
126 p <- -pnorm( q=real.feats[i],
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
127 mean=null.feats[i],
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
128 sd=sd,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
129 log.p=TRUE,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
130 lower.tail=FALSE )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
131
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
132 ##chisq test
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
133 chi <- ( real.feats[i] - null.feats[i] )^2
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
134 chi <- chi/(null.feats[i])^2
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
135 chi <- -pchisq( chi, 1, log.p=TRUE, lower=FALSE )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
136 } else {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
137 p <- chi <- 0 ## 0 == -log(1)
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
138 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
139
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
140 binom.pvals <- c( binom.pvals, p )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
141 chisq.pvals <- c( chisq.pvals, chi )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
142
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
143 if ( length( chisq.pvals ) != i ) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
144 stop( "lengths differ\n" )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
145 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
146 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
147
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
148
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
149
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
150 ##names( binom.pvals ) <- names( chisq.pvals ) <- thresholds
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
151 diffs <- real.feats - null.feats
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
152 if ( opt$selection.criteria == "max_diffs" ) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
153 max.diff <- max( diffs )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
154 opt.thresh <- which( diffs %in% max.diff )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
155 } else if ( opt$selection.criteria == "binomial" ) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
156 max.bin <- max( binom.pvals )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
157 opt.thresh <- which( binom.pvals %in% max.bin )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
158 } else if ( opt$selection.criteria == "chisq" ) {
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
159 max.chi <- max( chisq.pvals )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
160 opt.thresh <- which( chisq.pvals %in% max.chi )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
161 }
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
162
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
163 opt.thresh <- mean( c( thresholds[ opt.thresh ], thresholds[ (opt.thresh-1) ] ) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
164 opt.thresh <- signif( opt.thresh, 4 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
165
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
166
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
167 ##corrected.binom.pvals <- binom.pvals + log( length(thresholds) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
168 ##binom.pvals <- binom.pvals - log( length(thresholds) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
169 ##corrected.chisq.pvals <- chisq.pvals + log( length(thresholds) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
170 ##chisq.pvals <- chisq.pvals - log( length(thresholds) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
171
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
172
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
173 eval.thresh <- thresholds[ 1:length( real.feats ) ]
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
174 ##plot.new(); screens <- split.screen( c( 4,1 ) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
175 ##postscript( "threshold.comparison.ps", paper='letter', horizontal=F )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
176 ##png.fname <- file.path( opt$output.report.dir, "IPL.threshold.determination.png")
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
177 ##plot.dev <- png( png.fname,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
178 ## width=11,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
179 ## height=8.5,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
180 ## units='in',
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
181 ## res=72 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
182 ##par( mar=rep(0,4) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
183 ##screens <- split.screen( c( 4,1 ) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
184
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
185 png.fname <- file.path( opt$output.report.dir, "01.num.feats.IPL.threshold.determination.png")
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
186 plot.dev <- png( png.fname,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
187 width=11,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
188 height=8.5,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
189 units='in',
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
190 res=72 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
191 par( mar=c(2.25,3,1.5,0.5) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
192 plot( eval.thresh, null.feats, type='l', lwd=2, col='blue', cex.axis=0.75 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
193 lines( eval.thresh, real.feats, type='l', lwd=2, col='black', cex.axis=0.75 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
194 abline( v=opt.thresh )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
195 legend( "topright", c( "Real", "Null" ), lwd=2, col=c('black', 'blue' ) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
196 mtext( "Number of Genes Passing Threshold", font=2 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
197 mtext( "IPL Threshold", 1, font=2, line=1.5 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
198 mtext( "Number of Genes", 2, font=2, line=1.8 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
199 dev.off()
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
200
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
201
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
202 png.fname <- file.path( opt$output.report.dir, "02.diffs.IPL.threshold.determination.png")
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
203 plot.dev <- png( png.fname,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
204 width=11,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
205 height=8.5,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
206 units='in',
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
207 res=72 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
208 ##screen( screen()+1 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
209 par( mar=c(2.25,3,1.5,0.5) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
210 plot( eval.thresh, diffs, type='l', lwd=2, col='black', cex.axis=0.75 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
211 abline( v=opt.thresh )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
212 mtext( "Difference between number of Real & Null genes passing Threshold", font=2 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
213 mtext( "IPL Threshold", 1, font=2, line=1.5 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
214 mtext( "Number of Genes", 2, font=2, line=1.8 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
215 dev.off()
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
216
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
217
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
218
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
219 png.fname <- file.path( opt$output.report.dir, "03.chisq.IPL.threshold.determination.png")
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
220 plot.dev <- png( png.fname,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
221 width=11,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
222 height=8.5,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
223 units='in',
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
224 res=72 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
225 ##screen( screen()+1 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
226 par( mar=c(2.25,3,1.5,0.5) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
227 plot( eval.thresh, chisq.pvals, type='l', lwd=2, col='red', cex.axis=0.75 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
228 abline( v=opt.thresh )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
229 mtext( "Chi-sq p-values", font=2 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
230 mtext( "IPL Threshold", 1, font=2, line=1.5 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
231 mtext( "-Log p-value", 2, font=2, line=1.8 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
232 dev.off()
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
233
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
234
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
235
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
236 png.fname <- file.path( opt$output.report.dir, "04.binom.IPL.threshold.determination.png")
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
237 plot.dev <- png( png.fname,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
238 width=11,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
239 height=8.5,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
240 units='in',
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
241 res=72 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
242 ##screen( screen()+1 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
243 par( mar=c(2.25,3,1.5,0.5) )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
244 plot( eval.thresh, binom.pvals, type='l', lwd=2, col='green', cex.axis=0.75 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
245 abline( v=opt.thresh )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
246 mtext( "Binomial p-values", font=2 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
247 mtext( "IPL Threshold", 1, font=2, line=1.5 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
248 mtext( "-Log p-value", 2, font=2, line=1.8 )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
249 dev.off()
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
250
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
251 ##close.screen( all=T ); dev.off()
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
252
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
253 report_str = paste( "The threshold to use for consensus clustering filtering is ", opt.thresh, "\n", sep="" )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
254
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
255 pngs = list.files(path=opt$output.report.dir, patt="png")
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
256 html.out <- paste( "<html>", report_str,
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
257 paste( paste( paste( "<div><img src=\'", pngs, sep="" ), "\'/></div>", sep="" ), collapse=""),
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
258 "</html>" )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
259 cat( html.out, file=opt$output.report.html )
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
260
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
261 filter.type <- opt$filter.type
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
262 perc.pass <- opt$perc.pass
0decf3fd54bc Uploaded
peter-waltman
parents:
diff changeset
263 save( file=opt$output.rdata, thresholds, diffs, binom.pvals, chisq.pvals, real.feats, null.feats, data, filter.type, perc.pass, opt.thresh )