annotate rgedgeR/rgedgeRpaired.xml @ 32:f18d9aedcf58 draft

Uploaded
author fubar
date Wed, 12 Jun 2013 23:36:20 -0400
parents 511f1b00d458
children 697272b8ef42
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
dea65c85afb4 Uploaded
fubar
parents: 0
diff changeset
1 <tool id="rgedgeRpaired" name="edgeR" version="0.18">
dea65c85afb4 Uploaded
fubar
parents: 0
diff changeset
2 <description>1 or 2 level models for count data</description>
dea65c85afb4 Uploaded
fubar
parents: 0
diff changeset
3 <requirements>
25
552607114655 Uploaded
fubar
parents: 24
diff changeset
4 <requirement type="package" version="2.12">biocbasics</requirement>
32
f18d9aedcf58 Uploaded
fubar
parents: 31
diff changeset
5 <requirement type="package" version="3.0.1">package_r3</requirement>
4
dea65c85afb4 Uploaded
fubar
parents: 0
diff changeset
6 </requirements>
dea65c85afb4 Uploaded
fubar
parents: 0
diff changeset
7
0
82e0af566160 Uploaded
fubar
parents:
diff changeset
8 <command interpreter="python">
82e0af566160 Uploaded
fubar
parents:
diff changeset
9 rgToolFactory.py --script_path "$runme" --interpreter "Rscript" --tool_name "edgeR"
82e0af566160 Uploaded
fubar
parents:
diff changeset
10 --output_dir "$html_file.files_path" --output_html "$html_file" --output_tab "$outtab" --make_HTML "yes"
82e0af566160 Uploaded
fubar
parents:
diff changeset
11 </command>
82e0af566160 Uploaded
fubar
parents:
diff changeset
12 <inputs>
82e0af566160 Uploaded
fubar
parents:
diff changeset
13 <param name="input1" type="data" format="tabular" label="Select an input matrix - rows are contigs, columns are counts for each sample"
82e0af566160 Uploaded
fubar
parents:
diff changeset
14 help="Use the HTSeq based count matrix preparation tool to create these matrices from BAM/SAM files and a GTF file of genomic features"/>
82e0af566160 Uploaded
fubar
parents:
diff changeset
15 <param name="title" type="text" value="edgeR" size="80" label="Title for job outputs" help="Supply a meaningful name here to remind you what the outputs contain">
82e0af566160 Uploaded
fubar
parents:
diff changeset
16 <sanitizer invalid_char="">
82e0af566160 Uploaded
fubar
parents:
diff changeset
17 <valid initial="string.letters,string.digits"><add value="_" /> </valid>
82e0af566160 Uploaded
fubar
parents:
diff changeset
18 </sanitizer>
82e0af566160 Uploaded
fubar
parents:
diff changeset
19 </param>
82e0af566160 Uploaded
fubar
parents:
diff changeset
20 <param name="treatment_name" type="text" value="Treatment" size="50" label="Treatment Name"/>
82e0af566160 Uploaded
fubar
parents:
diff changeset
21 <param name="Treat_cols" label="Select columns containing treatment." type="data_column" data_ref="input1" numerical="True"
82e0af566160 Uploaded
fubar
parents:
diff changeset
22 multiple="true" use_header_names="true" size="120" display="checkboxes">
82e0af566160 Uploaded
fubar
parents:
diff changeset
23 <validator type="no_options" message="Please select at least one column."/>
82e0af566160 Uploaded
fubar
parents:
diff changeset
24 </param>
82e0af566160 Uploaded
fubar
parents:
diff changeset
25 <param name="control_name" type="text" value="Control" size="50" label="Control Name"/>
82e0af566160 Uploaded
fubar
parents:
diff changeset
26 <param name="Control_cols" label="Select columns containing control." type="data_column" data_ref="input1" numerical="True"
82e0af566160 Uploaded
fubar
parents:
diff changeset
27 multiple="true" use_header_names="true" size="120" display="checkboxes" optional="true">
82e0af566160 Uploaded
fubar
parents:
diff changeset
28 </param>
82e0af566160 Uploaded
fubar
parents:
diff changeset
29 <param name="subjectids" type="text" optional="true" size="120"
82e0af566160 Uploaded
fubar
parents:
diff changeset
30 label="IF SUBJECTS NOT ALL INDEPENDENT! Enter integers to indicate sample pairing for every column in input"
82e0af566160 Uploaded
fubar
parents:
diff changeset
31 help="Leave blank if no pairing, but eg if data from sample id A99 is in columns 2,4 and id C21 is in 3,5 then enter '1,2,1,2'">
82e0af566160 Uploaded
fubar
parents:
diff changeset
32 <sanitizer>
82e0af566160 Uploaded
fubar
parents:
diff changeset
33 <valid initial="string.digits"><add value="," /> </valid>
82e0af566160 Uploaded
fubar
parents:
diff changeset
34 </sanitizer>
82e0af566160 Uploaded
fubar
parents:
diff changeset
35 </param>
82e0af566160 Uploaded
fubar
parents:
diff changeset
36 <param name="fQ" type="float" value="0.3" size="5" label="Non-differential contig count quantile threshold - zero to analyze all non-zero read count contigs"
82e0af566160 Uploaded
fubar
parents:
diff changeset
37 help="May be a good or a bad idea depending on the biology and the question. EG 0.3 = sparsest 30% of contigs with at least one read are removed before analysis"/>
82e0af566160 Uploaded
fubar
parents:
diff changeset
38 <param name="useNDF" type="boolean" truevalue="T" checked='false' falsevalue="" size="1" label="Non differential filter - remove contigs below a threshold (1 per million) for half or more samples"
82e0af566160 Uploaded
fubar
parents:
diff changeset
39 help="May be a good or a bad idea depending on the biology and the question. This was the old default. Quantile based is available as an alternative"/>
82e0af566160 Uploaded
fubar
parents:
diff changeset
40 <param name="priordf" type="integer" value="20" size="3" label="prior.df for tagwise dispersion - lower value = more emphasis on each tag's variance. Replaces prior.n and prior.df = prior.n * residual.df"
82e0af566160 Uploaded
fubar
parents:
diff changeset
41 help="Zero = Use edgeR default. Use a small value to 'smooth' small samples. See edgeR docs and note below"/>
82e0af566160 Uploaded
fubar
parents:
diff changeset
42 <param name="fdrthresh" type="float" value="0.05" size="5" label="P value threshold for FDR filtering for amily wise error rate control"
82e0af566160 Uploaded
fubar
parents:
diff changeset
43 help="Conventional default value of 0.05 recommended"/>
82e0af566160 Uploaded
fubar
parents:
diff changeset
44 <param name="fdrtype" type="select" label="FDR (Type II error) control method"
82e0af566160 Uploaded
fubar
parents:
diff changeset
45 help="Use fdr or bh typically to control for the number of tests in a reliable way">
82e0af566160 Uploaded
fubar
parents:
diff changeset
46 <option value="fdr" selected="true">fdr</option>
82e0af566160 Uploaded
fubar
parents:
diff changeset
47 <option value="BH">Benjamini Hochberg</option>
82e0af566160 Uploaded
fubar
parents:
diff changeset
48 <option value="BY">Benjamini Yukateli</option>
82e0af566160 Uploaded
fubar
parents:
diff changeset
49 <option value="bonferroni">Bonferroni</option>
82e0af566160 Uploaded
fubar
parents:
diff changeset
50 <option value="hochberg">Hochberg</option>
82e0af566160 Uploaded
fubar
parents:
diff changeset
51 <option value="holm">Holm</option>
82e0af566160 Uploaded
fubar
parents:
diff changeset
52 <option value="hommel">Hommel</option>
82e0af566160 Uploaded
fubar
parents:
diff changeset
53 <option value="none">no control for multiple tests</option>
82e0af566160 Uploaded
fubar
parents:
diff changeset
54 </param>
82e0af566160 Uploaded
fubar
parents:
diff changeset
55 </inputs>
82e0af566160 Uploaded
fubar
parents:
diff changeset
56 <outputs>
82e0af566160 Uploaded
fubar
parents:
diff changeset
57 <data format="tabular" name="outtab" label="${title}.xls"/>
82e0af566160 Uploaded
fubar
parents:
diff changeset
58 <data format="html" name="html_file" label="${title}.html"/>
82e0af566160 Uploaded
fubar
parents:
diff changeset
59 </outputs>
82e0af566160 Uploaded
fubar
parents:
diff changeset
60 <stdio>
82e0af566160 Uploaded
fubar
parents:
diff changeset
61 <exit_code range="4" level="fatal" description="Number of subject ids must match total number of samples in the input matrix" />
82e0af566160 Uploaded
fubar
parents:
diff changeset
62 </stdio>
82e0af566160 Uploaded
fubar
parents:
diff changeset
63 <tests>
82e0af566160 Uploaded
fubar
parents:
diff changeset
64 <test>
82e0af566160 Uploaded
fubar
parents:
diff changeset
65 <param name='input1' value='test_bams2mx.xls' ftype='tabular' />
82e0af566160 Uploaded
fubar
parents:
diff changeset
66 <param name='treatment_name' value='case' />
82e0af566160 Uploaded
fubar
parents:
diff changeset
67 <param name='title' value='edgeRtest' />
82e0af566160 Uploaded
fubar
parents:
diff changeset
68 <param name='fdrtype' value='fdr' />
82e0af566160 Uploaded
fubar
parents:
diff changeset
69 <param name='priordf' value="0" />
82e0af566160 Uploaded
fubar
parents:
diff changeset
70 <param name='fdrthresh' value="0.05" />
82e0af566160 Uploaded
fubar
parents:
diff changeset
71 <param name='control_name' value='control' />
82e0af566160 Uploaded
fubar
parents:
diff changeset
72 <param name='Treat_cols' value='3,4,5,9' />
82e0af566160 Uploaded
fubar
parents:
diff changeset
73 <param name='Control_cols' value='2,6,7,8' />
82e0af566160 Uploaded
fubar
parents:
diff changeset
74 <output name='outtab' file='edgeRtest1out.xls' ftype='tabular' compare='diff' />
82e0af566160 Uploaded
fubar
parents:
diff changeset
75 <output name='html_file' file='edgeRtest1out.html' ftype='html' compare='diff' lines_diff='20' />
82e0af566160 Uploaded
fubar
parents:
diff changeset
76 </test>
82e0af566160 Uploaded
fubar
parents:
diff changeset
77 </tests>
82e0af566160 Uploaded
fubar
parents:
diff changeset
78
82e0af566160 Uploaded
fubar
parents:
diff changeset
79 <configfiles>
82e0af566160 Uploaded
fubar
parents:
diff changeset
80 <configfile name="runme">
82e0af566160 Uploaded
fubar
parents:
diff changeset
81 <![CDATA[
82e0af566160 Uploaded
fubar
parents:
diff changeset
82 #
82e0af566160 Uploaded
fubar
parents:
diff changeset
83 # edgeR.Rscript
82e0af566160 Uploaded
fubar
parents:
diff changeset
84 # updated npv 2011 for R 2.14.0 and edgeR 2.4.0 by ross
82e0af566160 Uploaded
fubar
parents:
diff changeset
85 # Performs DGE on a count table containing n replicates of two conditions
82e0af566160 Uploaded
fubar
parents:
diff changeset
86 #
82e0af566160 Uploaded
fubar
parents:
diff changeset
87 # Parameters
82e0af566160 Uploaded
fubar
parents:
diff changeset
88 #
82e0af566160 Uploaded
fubar
parents:
diff changeset
89 # 1 - Output Dir
82e0af566160 Uploaded
fubar
parents:
diff changeset
90
82e0af566160 Uploaded
fubar
parents:
diff changeset
91 # Original edgeR code by: S.Lunke and A.Kaspi
82e0af566160 Uploaded
fubar
parents:
diff changeset
92 reallybig = log10(.Machine\$double.xmax)
82e0af566160 Uploaded
fubar
parents:
diff changeset
93 reallysmall = log10(.Machine\$double.xmin)
82e0af566160 Uploaded
fubar
parents:
diff changeset
94 library('stringr')
82e0af566160 Uploaded
fubar
parents:
diff changeset
95 library('gplots')
82e0af566160 Uploaded
fubar
parents:
diff changeset
96 library('DESeq')
82e0af566160 Uploaded
fubar
parents:
diff changeset
97 library('edgeR')
82e0af566160 Uploaded
fubar
parents:
diff changeset
98 hmap2 = function(cmat,nsamp=100,outpdfname='heatmap2.pdf', TName='Treatment',group=NA,myTitle='title goes here')
82e0af566160 Uploaded
fubar
parents:
diff changeset
99 {
82e0af566160 Uploaded
fubar
parents:
diff changeset
100 # Perform clustering for significant pvalues after controlling FWER
82e0af566160 Uploaded
fubar
parents:
diff changeset
101 samples = colnames(cmat)
82e0af566160 Uploaded
fubar
parents:
diff changeset
102 gu = unique(group)
82e0af566160 Uploaded
fubar
parents:
diff changeset
103 if (length(gu) == 2) {
82e0af566160 Uploaded
fubar
parents:
diff changeset
104 col.map = function(g) {if (g==gu[1]) "#FF0000" else "#0000FF"}
82e0af566160 Uploaded
fubar
parents:
diff changeset
105 pcols = unlist(lapply(group,col.map))
82e0af566160 Uploaded
fubar
parents:
diff changeset
106 } else {
82e0af566160 Uploaded
fubar
parents:
diff changeset
107 colours = rainbow(length(gu),start=0,end=4/6)
82e0af566160 Uploaded
fubar
parents:
diff changeset
108 pcols = colours[match(group,gu)] }
82e0af566160 Uploaded
fubar
parents:
diff changeset
109 gn = rownames(cmat)
82e0af566160 Uploaded
fubar
parents:
diff changeset
110 dm = cmat[(! is.na(gn)),]
82e0af566160 Uploaded
fubar
parents:
diff changeset
111 # remove unlabelled hm rows
82e0af566160 Uploaded
fubar
parents:
diff changeset
112 nprobes = nrow(dm)
82e0af566160 Uploaded
fubar
parents:
diff changeset
113 # sub = paste('Showing',nprobes,'contigs ranked for evidence of differential abundance')
82e0af566160 Uploaded
fubar
parents:
diff changeset
114 if (nprobes > nsamp) {
82e0af566160 Uploaded
fubar
parents:
diff changeset
115 dm =dm[1:nsamp,]
82e0af566160 Uploaded
fubar
parents:
diff changeset
116 #sub = paste('Showing',nsamp,'contigs ranked for evidence for differential abundance out of',nprobes,'total')
82e0af566160 Uploaded
fubar
parents:
diff changeset
117 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
118 newcolnames = substr(colnames(dm),1,20)
82e0af566160 Uploaded
fubar
parents:
diff changeset
119 colnames(dm) = newcolnames
82e0af566160 Uploaded
fubar
parents:
diff changeset
120 pdf(outpdfname)
82e0af566160 Uploaded
fubar
parents:
diff changeset
121 heatmap.2(dm,main=myTitle,ColSideColors=pcols,col=topo.colors(100),dendrogram="col",key=T,density.info='none',
82e0af566160 Uploaded
fubar
parents:
diff changeset
122 Rowv=F,scale='row',trace='none',margins=c(8,8),cexRow=0.4,cexCol=0.5)
82e0af566160 Uploaded
fubar
parents:
diff changeset
123 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
124 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
125
82e0af566160 Uploaded
fubar
parents:
diff changeset
126 hmap = function(cmat,nmeans=4,outpdfname="heatMap.pdf",nsamp=250,TName='Treatment',group=NA,myTitle="Title goes here")
82e0af566160 Uploaded
fubar
parents:
diff changeset
127 {
82e0af566160 Uploaded
fubar
parents:
diff changeset
128 # for 2 groups only was
82e0af566160 Uploaded
fubar
parents:
diff changeset
129 #col.map = function(g) {if (g==TName) "#FF0000" else "#0000FF"}
82e0af566160 Uploaded
fubar
parents:
diff changeset
130 #pcols = unlist(lapply(group,col.map))
82e0af566160 Uploaded
fubar
parents:
diff changeset
131 gu = unique(group)
82e0af566160 Uploaded
fubar
parents:
diff changeset
132 colours = rainbow(length(gu),start=0.3,end=0.6)
82e0af566160 Uploaded
fubar
parents:
diff changeset
133 pcols = colours[match(group,gu)]
82e0af566160 Uploaded
fubar
parents:
diff changeset
134 nrows = nrow(cmat)
82e0af566160 Uploaded
fubar
parents:
diff changeset
135 mtitle = paste(myTitle,'Heatmap: n contigs =',nrows)
82e0af566160 Uploaded
fubar
parents:
diff changeset
136 if (nrows > nsamp) {
82e0af566160 Uploaded
fubar
parents:
diff changeset
137 cmat = cmat[c(1:nsamp),]
82e0af566160 Uploaded
fubar
parents:
diff changeset
138 mtitle = paste('Heatmap: Top ',nsamp,' DE contigs (of ',nrows,')',sep='')
82e0af566160 Uploaded
fubar
parents:
diff changeset
139 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
140 newcolnames = substr(colnames(cmat),1,20)
82e0af566160 Uploaded
fubar
parents:
diff changeset
141 colnames(cmat) = newcolnames
82e0af566160 Uploaded
fubar
parents:
diff changeset
142 pdf(outpdfname)
82e0af566160 Uploaded
fubar
parents:
diff changeset
143 heatmap(cmat,scale='row',main=mtitle,cexRow=0.3,cexCol=0.4,Rowv=NA,ColSideColors=pcols)
82e0af566160 Uploaded
fubar
parents:
diff changeset
144 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
145 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
146
82e0af566160 Uploaded
fubar
parents:
diff changeset
147 qqPlot = function(descr='Title',pvector, ...)
82e0af566160 Uploaded
fubar
parents:
diff changeset
148 # stolen from https://gist.github.com/703512
82e0af566160 Uploaded
fubar
parents:
diff changeset
149 {
82e0af566160 Uploaded
fubar
parents:
diff changeset
150 o = -log10(sort(pvector,decreasing=F))
82e0af566160 Uploaded
fubar
parents:
diff changeset
151 e = -log10( 1:length(o)/length(o) )
82e0af566160 Uploaded
fubar
parents:
diff changeset
152 o[o==-Inf] = reallysmall
82e0af566160 Uploaded
fubar
parents:
diff changeset
153 o[o==Inf] = reallybig
82e0af566160 Uploaded
fubar
parents:
diff changeset
154 pdfname = paste(gsub(" ","", descr , fixed=TRUE),'pval_qq.pdf',sep='_')
82e0af566160 Uploaded
fubar
parents:
diff changeset
155 maint = paste(descr,'QQ Plot')
82e0af566160 Uploaded
fubar
parents:
diff changeset
156 pdf(pdfname)
82e0af566160 Uploaded
fubar
parents:
diff changeset
157 plot(e,o,pch=19,cex=1, main=maint, ...,
82e0af566160 Uploaded
fubar
parents:
diff changeset
158 xlab=expression(Expected~~-log[10](italic(p))),
82e0af566160 Uploaded
fubar
parents:
diff changeset
159 ylab=expression(Observed~~-log[10](italic(p))),
82e0af566160 Uploaded
fubar
parents:
diff changeset
160 xlim=c(0,max(e)), ylim=c(0,max(o)))
82e0af566160 Uploaded
fubar
parents:
diff changeset
161 lines(e,e,col="red")
82e0af566160 Uploaded
fubar
parents:
diff changeset
162 grid(col = "lightgray", lty = "dotted")
82e0af566160 Uploaded
fubar
parents:
diff changeset
163 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
164 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
165
82e0af566160 Uploaded
fubar
parents:
diff changeset
166 smearPlot = function(DGEList,deTags, outSmear, outMain)
82e0af566160 Uploaded
fubar
parents:
diff changeset
167 {
82e0af566160 Uploaded
fubar
parents:
diff changeset
168 pdf(outSmear)
82e0af566160 Uploaded
fubar
parents:
diff changeset
169 plotSmear(DGEList,de.tags=deTags,main=outMain)
82e0af566160 Uploaded
fubar
parents:
diff changeset
170 grid(col="blue")
82e0af566160 Uploaded
fubar
parents:
diff changeset
171 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
172 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
173
82e0af566160 Uploaded
fubar
parents:
diff changeset
174 boxPlot = function(rawrs,cleanrs,maint,myTitle)
82e0af566160 Uploaded
fubar
parents:
diff changeset
175 { #
82e0af566160 Uploaded
fubar
parents:
diff changeset
176 nc = ncol(rawrs)
82e0af566160 Uploaded
fubar
parents:
diff changeset
177 for (i in c(1:nc)) {rawrs[(rawrs[,i] < 0),i] = NA}
82e0af566160 Uploaded
fubar
parents:
diff changeset
178 fullnames = colnames(rawrs)
82e0af566160 Uploaded
fubar
parents:
diff changeset
179 newcolnames = substr(colnames(rawrs),1,20)
82e0af566160 Uploaded
fubar
parents:
diff changeset
180 colnames(rawrs) = newcolnames
82e0af566160 Uploaded
fubar
parents:
diff changeset
181 newcolnames = substr(colnames(cleanrs),1,20)
82e0af566160 Uploaded
fubar
parents:
diff changeset
182 colnames(cleanrs) = newcolnames
82e0af566160 Uploaded
fubar
parents:
diff changeset
183 pdfname = paste(gsub(" ","", myTitle , fixed=TRUE),"sampleBoxplot.pdf",sep='_')
82e0af566160 Uploaded
fubar
parents:
diff changeset
184 defpar = par(no.readonly=T)
82e0af566160 Uploaded
fubar
parents:
diff changeset
185 pdf(pdfname,height=6,width=8)
82e0af566160 Uploaded
fubar
parents:
diff changeset
186 #par(mfrow=c(1,2)) # 1 rows 2 col
82e0af566160 Uploaded
fubar
parents:
diff changeset
187 l = layout(matrix(c(1,2),1,2,byrow=T))
82e0af566160 Uploaded
fubar
parents:
diff changeset
188 print.noquote('raw contig counts by sample:')
82e0af566160 Uploaded
fubar
parents:
diff changeset
189 print.noquote(summary(rawrs))
82e0af566160 Uploaded
fubar
parents:
diff changeset
190 print.noquote('normalised contig counts by sample:')
82e0af566160 Uploaded
fubar
parents:
diff changeset
191 print.noquote(summary(cleanrs))
82e0af566160 Uploaded
fubar
parents:
diff changeset
192 boxplot(rawrs,varwidth=T,notch=T,ylab='log contig count',col="maroon",las=3,cex.axis=0.35,main=paste('Raw:',maint))
82e0af566160 Uploaded
fubar
parents:
diff changeset
193 grid(col="blue")
82e0af566160 Uploaded
fubar
parents:
diff changeset
194 boxplot(cleanrs,varwidth=T,notch=T,ylab='log contig count',col="maroon",las=3,cex.axis=0.35,main=paste('After ',maint))
82e0af566160 Uploaded
fubar
parents:
diff changeset
195 grid(col="blue")
82e0af566160 Uploaded
fubar
parents:
diff changeset
196 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
197 pdfname = paste(gsub(" ","", myTitle , fixed=TRUE),"samplehistplot.pdf",sep='_')
82e0af566160 Uploaded
fubar
parents:
diff changeset
198 nc = ncol(rawrs)
82e0af566160 Uploaded
fubar
parents:
diff changeset
199 print.noquote(paste('Using ncol rawrs=',nc))
82e0af566160 Uploaded
fubar
parents:
diff changeset
200 ncroot = round(sqrt(nc))
82e0af566160 Uploaded
fubar
parents:
diff changeset
201 if (ncroot*ncroot < nc) { ncroot = ncroot + 1 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
202 m = c()
82e0af566160 Uploaded
fubar
parents:
diff changeset
203 for (i in c(1:nc)) {
82e0af566160 Uploaded
fubar
parents:
diff changeset
204 rhist = hist(rawrs[,i],breaks=100,plot=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
205 m = append(m,max(rhist\$counts))
82e0af566160 Uploaded
fubar
parents:
diff changeset
206 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
207 ymax = max(m)
82e0af566160 Uploaded
fubar
parents:
diff changeset
208 pdf(pdfname)
82e0af566160 Uploaded
fubar
parents:
diff changeset
209 par(mfrow=c(ncroot,ncroot))
82e0af566160 Uploaded
fubar
parents:
diff changeset
210 for (i in c(1:nc)) {
82e0af566160 Uploaded
fubar
parents:
diff changeset
211 hist(rawrs[,i], main=paste("Contig logcount",i), xlab='log raw count', col="maroon",
82e0af566160 Uploaded
fubar
parents:
diff changeset
212 breaks=100,sub=fullnames[i],cex=0.8,ylim=c(0,ymax))
82e0af566160 Uploaded
fubar
parents:
diff changeset
213 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
214 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
215 par(defpar)
82e0af566160 Uploaded
fubar
parents:
diff changeset
216
82e0af566160 Uploaded
fubar
parents:
diff changeset
217 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
218
82e0af566160 Uploaded
fubar
parents:
diff changeset
219 cumPlot = function(rawrs,cleanrs,maint,myTitle)
82e0af566160 Uploaded
fubar
parents:
diff changeset
220 { # updated to use ecdf
82e0af566160 Uploaded
fubar
parents:
diff changeset
221 pdfname = paste(gsub(" ","", myTitle , fixed=TRUE),"RowsumCum.pdf",sep='_')
82e0af566160 Uploaded
fubar
parents:
diff changeset
222 defpar = par(no.readonly=T)
82e0af566160 Uploaded
fubar
parents:
diff changeset
223 pdf(pdfname)
82e0af566160 Uploaded
fubar
parents:
diff changeset
224 par(mfrow=c(2,1))
82e0af566160 Uploaded
fubar
parents:
diff changeset
225 lrs = log(rawrs,10)
82e0af566160 Uploaded
fubar
parents:
diff changeset
226 lim = max(lrs)
82e0af566160 Uploaded
fubar
parents:
diff changeset
227 hist(lrs,breaks=100,main=paste('Before:',maint),xlab="# Reads (log)",
82e0af566160 Uploaded
fubar
parents:
diff changeset
228 ylab="Count",col="maroon",sub=myTitle, xlim=c(0,lim),las=1)
82e0af566160 Uploaded
fubar
parents:
diff changeset
229 grid(col="blue")
82e0af566160 Uploaded
fubar
parents:
diff changeset
230 lrs = log(cleanrs,10)
82e0af566160 Uploaded
fubar
parents:
diff changeset
231 hist(lrs,breaks=100,main=paste('After:',maint),xlab="# Reads (log)",
82e0af566160 Uploaded
fubar
parents:
diff changeset
232 ylab="Count",col="maroon",sub=myTitle,xlim=c(0,lim),las=1)
82e0af566160 Uploaded
fubar
parents:
diff changeset
233 grid(col="blue")
82e0af566160 Uploaded
fubar
parents:
diff changeset
234 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
235 par(defpar)
82e0af566160 Uploaded
fubar
parents:
diff changeset
236 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
237
82e0af566160 Uploaded
fubar
parents:
diff changeset
238 cumPlot1 = function(rawrs,cleanrs,maint,myTitle)
82e0af566160 Uploaded
fubar
parents:
diff changeset
239 { # updated to use ecdf
82e0af566160 Uploaded
fubar
parents:
diff changeset
240 pdfname = paste(gsub(" ","", myTitle , fixed=TRUE),"RowsumCum.pdf",sep='_')
82e0af566160 Uploaded
fubar
parents:
diff changeset
241 pdf(pdfname)
82e0af566160 Uploaded
fubar
parents:
diff changeset
242 par(mfrow=c(2,1))
82e0af566160 Uploaded
fubar
parents:
diff changeset
243 lastx = max(rawrs)
82e0af566160 Uploaded
fubar
parents:
diff changeset
244 rawe = knots(ecdf(rawrs))
82e0af566160 Uploaded
fubar
parents:
diff changeset
245 cleane = knots(ecdf(cleanrs))
82e0af566160 Uploaded
fubar
parents:
diff changeset
246 cy = 1:length(cleane)/length(cleane)
82e0af566160 Uploaded
fubar
parents:
diff changeset
247 ry = 1:length(rawe)/length(rawe)
82e0af566160 Uploaded
fubar
parents:
diff changeset
248 plot(rawe,ry,type='l',main=paste('Before',maint),xlab="Log Contig Total Reads",
82e0af566160 Uploaded
fubar
parents:
diff changeset
249 ylab="Cumulative proportion",col="maroon",log='x',xlim=c(1,lastx),sub=myTitle)
82e0af566160 Uploaded
fubar
parents:
diff changeset
250 grid(col="blue")
82e0af566160 Uploaded
fubar
parents:
diff changeset
251 plot(cleane,cy,type='l',main=paste('After',maint),xlab="Log Contig Total Reads",
82e0af566160 Uploaded
fubar
parents:
diff changeset
252 ylab="Cumulative proportion",col="maroon",log='x',xlim=c(1,lastx),sub=myTitle)
82e0af566160 Uploaded
fubar
parents:
diff changeset
253 grid(col="blue")
82e0af566160 Uploaded
fubar
parents:
diff changeset
254 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
255 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
256
82e0af566160 Uploaded
fubar
parents:
diff changeset
257
82e0af566160 Uploaded
fubar
parents:
diff changeset
258
82e0af566160 Uploaded
fubar
parents:
diff changeset
259 edgeIt = function (Count_Matrix,group,outputfilename,fdrtype='fdr',priordf=5,fdrthresh=0.05,outputdir='.',
82e0af566160 Uploaded
fubar
parents:
diff changeset
260 myTitle='edgeR',libSize=c(),useNDF="T",filterquantile=0.2,subjects=c()) {
82e0af566160 Uploaded
fubar
parents:
diff changeset
261
82e0af566160 Uploaded
fubar
parents:
diff changeset
262 # Error handling
82e0af566160 Uploaded
fubar
parents:
diff changeset
263 if (length(unique(group))!=2){
82e0af566160 Uploaded
fubar
parents:
diff changeset
264 print("Number of conditions identified in experiment does not equal 2")
82e0af566160 Uploaded
fubar
parents:
diff changeset
265 q()
82e0af566160 Uploaded
fubar
parents:
diff changeset
266 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
267 require(edgeR)
82e0af566160 Uploaded
fubar
parents:
diff changeset
268 mt = paste(unlist(strsplit(myTitle,'_')),collapse=" ")
82e0af566160 Uploaded
fubar
parents:
diff changeset
269 allN = nrow(Count_Matrix)
82e0af566160 Uploaded
fubar
parents:
diff changeset
270 nscut = round(ncol(Count_Matrix)/2)
82e0af566160 Uploaded
fubar
parents:
diff changeset
271 colTotmillionreads = colSums(Count_Matrix)/1e6
82e0af566160 Uploaded
fubar
parents:
diff changeset
272 rawrs = rowSums(Count_Matrix)
82e0af566160 Uploaded
fubar
parents:
diff changeset
273 nonzerod = Count_Matrix[(rawrs > 0),] # remove all zero count genes
82e0af566160 Uploaded
fubar
parents:
diff changeset
274 nzN = nrow(nonzerod)
82e0af566160 Uploaded
fubar
parents:
diff changeset
275 nzrs = rowSums(nonzerod)
82e0af566160 Uploaded
fubar
parents:
diff changeset
276 zN = allN - nzN
82e0af566160 Uploaded
fubar
parents:
diff changeset
277 print('# Quantiles for non-zero row counts:',quote=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
278 print(quantile(nzrs,probs=seq(0,1,0.1)),quote=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
279 if (useNDF == "T")
82e0af566160 Uploaded
fubar
parents:
diff changeset
280 {
82e0af566160 Uploaded
fubar
parents:
diff changeset
281 gt1rpin3 = rowSums(Count_Matrix/expandAsMatrix(colTotmillionreads,dim(Count_Matrix)) >= 1) >= nscut
82e0af566160 Uploaded
fubar
parents:
diff changeset
282 lo = colSums(Count_Matrix[!gt1rpin3,])
82e0af566160 Uploaded
fubar
parents:
diff changeset
283 workCM = Count_Matrix[gt1rpin3,]
82e0af566160 Uploaded
fubar
parents:
diff changeset
284 cleanrs = rowSums(workCM)
82e0af566160 Uploaded
fubar
parents:
diff changeset
285 cleanN = length(cleanrs)
82e0af566160 Uploaded
fubar
parents:
diff changeset
286 meth = paste( "After removing",length(lo),"contigs with fewer than ",nscut," sample read counts >= 1 per million, there are",sep="")
82e0af566160 Uploaded
fubar
parents:
diff changeset
287 print(paste("Read",allN,"contigs. Removed",zN,"contigs with no reads.",meth,cleanN,"contigs"),quote=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
288 maint = paste('Filter >=1/million reads in >=',nscut,'samples')
82e0af566160 Uploaded
fubar
parents:
diff changeset
289 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
290 else {
82e0af566160 Uploaded
fubar
parents:
diff changeset
291 useme = (nzrs > quantile(nzrs,filterquantile))
82e0af566160 Uploaded
fubar
parents:
diff changeset
292 workCM = nonzerod[useme,]
82e0af566160 Uploaded
fubar
parents:
diff changeset
293 lo = colSums(nonzerod[!useme,])
82e0af566160 Uploaded
fubar
parents:
diff changeset
294 cleanrs = rowSums(workCM)
82e0af566160 Uploaded
fubar
parents:
diff changeset
295 cleanN = length(cleanrs)
82e0af566160 Uploaded
fubar
parents:
diff changeset
296 meth = paste("After filtering at count quantile =",filterquantile,", there are",sep="")
82e0af566160 Uploaded
fubar
parents:
diff changeset
297 print(paste('Read',allN,"contigs. Removed",zN,"with no reads.",meth,cleanN,"contigs"),quote=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
298 maint = paste('Filter below',filterquantile,'quantile')
82e0af566160 Uploaded
fubar
parents:
diff changeset
299 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
300 cumPlot(rawrs=rawrs,cleanrs=cleanrs,maint=maint,myTitle=myTitle)
82e0af566160 Uploaded
fubar
parents:
diff changeset
301 allgenes <- rownames(workCM)
82e0af566160 Uploaded
fubar
parents:
diff changeset
302 print(paste("# Total low count contigs per sample = ",paste(lo,collapse=',')),quote=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
303 rsums = rowSums(workCM)
82e0af566160 Uploaded
fubar
parents:
diff changeset
304 TName=unique(group)[1]
82e0af566160 Uploaded
fubar
parents:
diff changeset
305 CName=unique(group)[2]
82e0af566160 Uploaded
fubar
parents:
diff changeset
306 # Setup DGEList object
82e0af566160 Uploaded
fubar
parents:
diff changeset
307 DGEList = DGEList(counts=workCM, group = group)
82e0af566160 Uploaded
fubar
parents:
diff changeset
308 if (length(subjects) == 0)
82e0af566160 Uploaded
fubar
parents:
diff changeset
309 {
82e0af566160 Uploaded
fubar
parents:
diff changeset
310 doDESEQ = T
82e0af566160 Uploaded
fubar
parents:
diff changeset
311 mydesign = model.matrix(~group)
82e0af566160 Uploaded
fubar
parents:
diff changeset
312 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
313 else {
82e0af566160 Uploaded
fubar
parents:
diff changeset
314 doDESEQ = F
82e0af566160 Uploaded
fubar
parents:
diff changeset
315 subjf = factor(subjects)
82e0af566160 Uploaded
fubar
parents:
diff changeset
316 mydesign = model.matrix(~subjf+group) # we block on subject so make group last to simplify finding it
82e0af566160 Uploaded
fubar
parents:
diff changeset
317 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
318 print.noquote(paste('Using samples:',paste(colnames(workCM),collapse=',')))
82e0af566160 Uploaded
fubar
parents:
diff changeset
319 print.noquote('Using design matrix:')
82e0af566160 Uploaded
fubar
parents:
diff changeset
320 print.noquote(mydesign)
82e0af566160 Uploaded
fubar
parents:
diff changeset
321 DGEList = estimateGLMCommonDisp(DGEList,mydesign)
82e0af566160 Uploaded
fubar
parents:
diff changeset
322 comdisp = DGEList\$common.dispersion
82e0af566160 Uploaded
fubar
parents:
diff changeset
323 DGEList = estimateGLMTrendedDisp(DGEList,mydesign)
82e0af566160 Uploaded
fubar
parents:
diff changeset
324 if (priordf > 0) {
82e0af566160 Uploaded
fubar
parents:
diff changeset
325 print.noquote(paste("prior.df =",priordf))
82e0af566160 Uploaded
fubar
parents:
diff changeset
326 DGEList = estimateGLMTagwiseDisp(DGEList,mydesign,prior.df = priordf)
82e0af566160 Uploaded
fubar
parents:
diff changeset
327 } else {
82e0af566160 Uploaded
fubar
parents:
diff changeset
328 DGEList = estimateGLMTagwiseDisp(DGEList,mydesign)
82e0af566160 Uploaded
fubar
parents:
diff changeset
329 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
330 DGLM = glmFit(DGEList,design=mydesign)
82e0af566160 Uploaded
fubar
parents:
diff changeset
331 efflib = DGEList\$samples\$lib.size*DGEList\$samples\$norm.factors
82e0af566160 Uploaded
fubar
parents:
diff changeset
332 normData = (1e+06*DGEList\$counts/efflib)
82e0af566160 Uploaded
fubar
parents:
diff changeset
333 co = length(colnames(mydesign))
82e0af566160 Uploaded
fubar
parents:
diff changeset
334 DE = glmLRT(DGLM,coef=co) # always last one - subject is first if needed
82e0af566160 Uploaded
fubar
parents:
diff changeset
335 uoutput = cbind(
82e0af566160 Uploaded
fubar
parents:
diff changeset
336 Name=as.character(rownames(DGEList\$counts)),
82e0af566160 Uploaded
fubar
parents:
diff changeset
337 DE\$table,
82e0af566160 Uploaded
fubar
parents:
diff changeset
338 adj.p.value=p.adjust(DE\$table\$PValue, method=fdrtype),
82e0af566160 Uploaded
fubar
parents:
diff changeset
339 Dispersion=DGEList\$tagwise.dispersion,totreads=rsums,normData,
82e0af566160 Uploaded
fubar
parents:
diff changeset
340 DGEList\$counts
82e0af566160 Uploaded
fubar
parents:
diff changeset
341 )
82e0af566160 Uploaded
fubar
parents:
diff changeset
342 soutput = uoutput[order(DE\$table\$PValue),] # sorted into p value order - for quick toptable
82e0af566160 Uploaded
fubar
parents:
diff changeset
343 goodness = gof(DGLM, pcutoff=fdrthresh)
82e0af566160 Uploaded
fubar
parents:
diff changeset
344 if (sum(goodness\$outlier) > 0) {
82e0af566160 Uploaded
fubar
parents:
diff changeset
345 print.noquote('GLM outliers:')
82e0af566160 Uploaded
fubar
parents:
diff changeset
346 print(paste(rownames(DGLM)[(goodness\$outlier != 0)],collapse=','),quote=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
347 z = limma::zscoreGamma(goodness\$gof.statistic, shape=goodness\$df/2, scale=2)
82e0af566160 Uploaded
fubar
parents:
diff changeset
348 pdf(paste(mt,"GoodnessofFit.pdf",sep='_'))
82e0af566160 Uploaded
fubar
parents:
diff changeset
349 qq = qqnorm(z, panel.first=grid(), main="tagwise dispersion")
82e0af566160 Uploaded
fubar
parents:
diff changeset
350 abline(0,1,lwd=3)
82e0af566160 Uploaded
fubar
parents:
diff changeset
351 points(qq\$x[goodness\$outlier],qq\$y[goodness\$outlier], pch=16, col="dodgerblue")
82e0af566160 Uploaded
fubar
parents:
diff changeset
352 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
353 } else { print('No GLM fit outlier genes found\n')}
82e0af566160 Uploaded
fubar
parents:
diff changeset
354 estpriorn = getPriorN(DGEList)
82e0af566160 Uploaded
fubar
parents:
diff changeset
355 print(paste("Common Dispersion =",comdisp,"CV = ",sqrt(comdisp),"getPriorN = ",estpriorn),quote=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
356 efflib = DGEList\$samples\$lib.size*DGEList\$samples\$norm.factors
82e0af566160 Uploaded
fubar
parents:
diff changeset
357 normData = (1e+06*DGEList\$counts/efflib)
82e0af566160 Uploaded
fubar
parents:
diff changeset
358 uniqueg = unique(group)
82e0af566160 Uploaded
fubar
parents:
diff changeset
359 # Plot MDS
82e0af566160 Uploaded
fubar
parents:
diff changeset
360 sample_colors = match(group,levels(group))
82e0af566160 Uploaded
fubar
parents:
diff changeset
361 pdf(paste(mt,"MDSplot.pdf",sep='_'))
82e0af566160 Uploaded
fubar
parents:
diff changeset
362 sampleTypes = levels(group)
82e0af566160 Uploaded
fubar
parents:
diff changeset
363 plotMDS.DGEList(DGEList,main=paste("MDS Plot for",myTitle),cex=0.5,col=sample_colors,pch=sample_colors)
82e0af566160 Uploaded
fubar
parents:
diff changeset
364 legend(x="topleft", legend = sampleTypes,col=c(1:length(sampleTypes)), pch=19)
82e0af566160 Uploaded
fubar
parents:
diff changeset
365 grid(col="blue")
82e0af566160 Uploaded
fubar
parents:
diff changeset
366 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
367 colnames(normData) = paste( colnames(normData),'N',sep="_")
82e0af566160 Uploaded
fubar
parents:
diff changeset
368 print(paste('Raw sample read totals',paste(colSums(nonzerod,na.rm=T),collapse=',')))
82e0af566160 Uploaded
fubar
parents:
diff changeset
369 nzd = data.frame(log(nonzerod + 1e-2,10))
82e0af566160 Uploaded
fubar
parents:
diff changeset
370 boxPlot(rawrs=nzd,cleanrs=log(normData,10),maint='TMM Normalisation',myTitle=myTitle)
82e0af566160 Uploaded
fubar
parents:
diff changeset
371 if (doDESEQ)
82e0af566160 Uploaded
fubar
parents:
diff changeset
372 {
82e0af566160 Uploaded
fubar
parents:
diff changeset
373 # DESeq
82e0af566160 Uploaded
fubar
parents:
diff changeset
374 deSeqDatcount <- newCountDataSet(workCM, group)
82e0af566160 Uploaded
fubar
parents:
diff changeset
375 deSeqDatsizefac <- estimateSizeFactors(deSeqDatcount)
82e0af566160 Uploaded
fubar
parents:
diff changeset
376 deSeqDatdisp <- estimateDispersions(deSeqDatsizefac)
82e0af566160 Uploaded
fubar
parents:
diff changeset
377 rDESeq <- nbinomTest(deSeqDatdisp, levels(group)[1], levels(group)[2])
82e0af566160 Uploaded
fubar
parents:
diff changeset
378 rDESeq <- rDESeq[order(rDESeq\$pval), ]
82e0af566160 Uploaded
fubar
parents:
diff changeset
379 write.table(rDESeq,paste(mt,'DESeq_TopTable.xls',sep='_'), quote=FALSE, sep="\t",row.names=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
380 topresults.DESeq <- rDESeq[which(rDESeq\$padj < fdrthresh), ]
82e0af566160 Uploaded
fubar
parents:
diff changeset
381 DESeqcountsindex <- which(allgenes %in% topresults.DESeq\$id)
82e0af566160 Uploaded
fubar
parents:
diff changeset
382 DESeqcounts <- rep(0, length(allgenes))
82e0af566160 Uploaded
fubar
parents:
diff changeset
383 DESeqcounts[DESeqcountsindex] <- 1
82e0af566160 Uploaded
fubar
parents:
diff changeset
384 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
385 DGEList = calcNormFactors(DGEList)
82e0af566160 Uploaded
fubar
parents:
diff changeset
386 norm.factor = DGEList\$samples\$norm.factors
82e0af566160 Uploaded
fubar
parents:
diff changeset
387 pdf(paste(mt,"voomplot.pdf",sep='_'))
82e0af566160 Uploaded
fubar
parents:
diff changeset
388 dat.voomed <- voom(DGEList, mydesign, plot = TRUE, lib.size = colSums(workCM) * norm.factor)
82e0af566160 Uploaded
fubar
parents:
diff changeset
389 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
390 # Use limma to fit data
82e0af566160 Uploaded
fubar
parents:
diff changeset
391 fit <- lmFit(dat.voomed, mydesign)
82e0af566160 Uploaded
fubar
parents:
diff changeset
392 fit <- eBayes(fit)
82e0af566160 Uploaded
fubar
parents:
diff changeset
393 rvoom <- topTable(fit, coef = length(colnames(mydesign)), adj = "BH", n = Inf)
82e0af566160 Uploaded
fubar
parents:
diff changeset
394 write.table(rvoom,paste(mt,'VOOM_topTable.xls',sep='_'), quote=FALSE, sep="\t",row.names=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
395 # Use an FDR cutoff to find interesting samples for edgeR, DESeq and voom/limma
82e0af566160 Uploaded
fubar
parents:
diff changeset
396 topresults.voom <- rvoom[which(rvoom\$adj.P.Val < fdrthresh), ]
82e0af566160 Uploaded
fubar
parents:
diff changeset
397 topresults.edgeR <- soutput[which(soutput\$adj.p.value < fdrthresh), ]
82e0af566160 Uploaded
fubar
parents:
diff changeset
398 # Create venn diagram of hits
82e0af566160 Uploaded
fubar
parents:
diff changeset
399 edgeRcountsindex <- which(allgenes %in% rownames(topresults.edgeR))
82e0af566160 Uploaded
fubar
parents:
diff changeset
400 voomcountsindex <- which(allgenes %in% topresults.voom\$ID)
82e0af566160 Uploaded
fubar
parents:
diff changeset
401 edgeRcounts <- rep(0, length(allgenes))
82e0af566160 Uploaded
fubar
parents:
diff changeset
402 edgeRcounts[edgeRcountsindex] <- 1
82e0af566160 Uploaded
fubar
parents:
diff changeset
403 voomcounts <- rep(0, length(allgenes))
82e0af566160 Uploaded
fubar
parents:
diff changeset
404 voomcounts[voomcountsindex] <- 1
82e0af566160 Uploaded
fubar
parents:
diff changeset
405 if (doDESEQ) {
82e0af566160 Uploaded
fubar
parents:
diff changeset
406 vennmain = paste(mt,'Voom,edgeR and DESeq overlap at FDR=',fdrthresh)
82e0af566160 Uploaded
fubar
parents:
diff changeset
407 counts.dataframe <- data.frame(edgeRcounts = edgeRcounts, DESeqcounts = DESeqcounts,
82e0af566160 Uploaded
fubar
parents:
diff changeset
408 voomcounts = voomcounts, row.names = allgenes)
82e0af566160 Uploaded
fubar
parents:
diff changeset
409 } else {
82e0af566160 Uploaded
fubar
parents:
diff changeset
410 vennmain = paste(mt,'Voom and edgeR overlap at FDR=',fdrthresh)
82e0af566160 Uploaded
fubar
parents:
diff changeset
411 counts.dataframe <- data.frame(edgeRcounts = edgeRcounts, voomcounts = voomcounts, row.names = allgenes)
82e0af566160 Uploaded
fubar
parents:
diff changeset
412 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
413 counts.venn <- vennCounts(counts.dataframe)
82e0af566160 Uploaded
fubar
parents:
diff changeset
414 vennf = paste(mt,'venn.pdf',sep='_')
82e0af566160 Uploaded
fubar
parents:
diff changeset
415 pdf(vennf)
82e0af566160 Uploaded
fubar
parents:
diff changeset
416 vennDiagram(counts.venn,main=vennmain,col="maroon")
82e0af566160 Uploaded
fubar
parents:
diff changeset
417 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
418 #Prepare our output file
82e0af566160 Uploaded
fubar
parents:
diff changeset
419 nreads = soutput\$totreads # ordered same way
82e0af566160 Uploaded
fubar
parents:
diff changeset
420 print('# writing output',quote=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
421 write.table(soutput,outputfilename, quote=FALSE, sep="\t",row.names=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
422 rn = uoutput\$Name
82e0af566160 Uploaded
fubar
parents:
diff changeset
423 reg = "^chr([0-9]+):([0-9]+)-([0-9]+)"
82e0af566160 Uploaded
fubar
parents:
diff changeset
424 org="hg19"
82e0af566160 Uploaded
fubar
parents:
diff changeset
425 genecards="<a href='http://www.genecards.org/index.php?path=/Search/keyword/"
82e0af566160 Uploaded
fubar
parents:
diff changeset
426 ucsc = paste("<a href='http://genome.ucsc.edu/cgi-bin/hgTracks?db=",org,sep='')
82e0af566160 Uploaded
fubar
parents:
diff changeset
427 testreg = str_match(rn,reg)
82e0af566160 Uploaded
fubar
parents:
diff changeset
428 nreads = uoutput\$totreads # ordered same way
82e0af566160 Uploaded
fubar
parents:
diff changeset
429 if (sum(!is.na(testreg[,1]))/length(testreg[,1]) > 0.8) # is ucsc style string
82e0af566160 Uploaded
fubar
parents:
diff changeset
430 {
82e0af566160 Uploaded
fubar
parents:
diff changeset
431 urls = paste(ucsc,'&amp;position=chr',testreg[,2],':',testreg[,3],"-",testreg[,4],"'>",rn,'</a>',sep='')
82e0af566160 Uploaded
fubar
parents:
diff changeset
432 } else {
82e0af566160 Uploaded
fubar
parents:
diff changeset
433 urls = paste(genecards,rn,"'></a>",rn,'</a>',sep="")
82e0af566160 Uploaded
fubar
parents:
diff changeset
434 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
435 print.noquote('# urls')
82e0af566160 Uploaded
fubar
parents:
diff changeset
436 cat(head(urls))
82e0af566160 Uploaded
fubar
parents:
diff changeset
437 tt = uoutput
82e0af566160 Uploaded
fubar
parents:
diff changeset
438 cat("# Top tags\n")
82e0af566160 Uploaded
fubar
parents:
diff changeset
439 tt = cbind(tt,ntotreads=nreads,URL=urls) # add to end so table isn't laid out strangely
82e0af566160 Uploaded
fubar
parents:
diff changeset
440 tt = tt[order(DE\$table\$PValue),]
82e0af566160 Uploaded
fubar
parents:
diff changeset
441 options(width = 500)
82e0af566160 Uploaded
fubar
parents:
diff changeset
442 print.noquote(tt[1:50,])
82e0af566160 Uploaded
fubar
parents:
diff changeset
443 pdf(paste(mt,"BCV_vs_abundance.pdf",sep='_'))
82e0af566160 Uploaded
fubar
parents:
diff changeset
444 plotBCV(DGEList, cex=0.3, main="Biological CV vs abundance")
82e0af566160 Uploaded
fubar
parents:
diff changeset
445 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
446 # Plot MAplot
82e0af566160 Uploaded
fubar
parents:
diff changeset
447 deTags = rownames(uoutput[uoutput\$adj.p.value < fdrthresh,])
82e0af566160 Uploaded
fubar
parents:
diff changeset
448 nsig = length(deTags)
82e0af566160 Uploaded
fubar
parents:
diff changeset
449 print(paste('#',nsig,'tags significant at adj p=',fdrthresh),quote=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
450 print('# deTags',quote=F)
82e0af566160 Uploaded
fubar
parents:
diff changeset
451 print(head(deTags))
82e0af566160 Uploaded
fubar
parents:
diff changeset
452 dg = DGEList[order(DE\$table\$PValue),]
82e0af566160 Uploaded
fubar
parents:
diff changeset
453 #normData = (1e+06 * dg\$counts/expandAsMatrix(dg\$samples\$lib.size, dim(dg)))
82e0af566160 Uploaded
fubar
parents:
diff changeset
454 efflib = dg\$samples\$lib.size*dg\$samples\$norm.factors
82e0af566160 Uploaded
fubar
parents:
diff changeset
455 normData = (1e+06*dg\$counts/efflib)
82e0af566160 Uploaded
fubar
parents:
diff changeset
456 outpdfname=paste(mt,"heatmap.pdf",sep='_')
82e0af566160 Uploaded
fubar
parents:
diff changeset
457 hmap2(normData,nsamp=100,TName=TName,group=group,outpdfname=outpdfname,myTitle=myTitle)
82e0af566160 Uploaded
fubar
parents:
diff changeset
458 outSmear = paste(mt,"Smearplot.pdf",sep='_')
82e0af566160 Uploaded
fubar
parents:
diff changeset
459 outMain = paste("Smear Plot for ",TName,' Vs ',CName,' (FDR@',fdrthresh,' N = ',nsig,')',sep='')
82e0af566160 Uploaded
fubar
parents:
diff changeset
460 smearPlot(DGEList=DGEList,deTags=deTags, outSmear=outSmear, outMain = outMain)
82e0af566160 Uploaded
fubar
parents:
diff changeset
461 qqPlot(descr=myTitle,pvector=DE\$table\$PValue)
82e0af566160 Uploaded
fubar
parents:
diff changeset
462 if (doDESEQ) {
82e0af566160 Uploaded
fubar
parents:
diff changeset
463 cat("# DESeq top 50\n")
82e0af566160 Uploaded
fubar
parents:
diff changeset
464 print(rDESeq[1:50,])
82e0af566160 Uploaded
fubar
parents:
diff changeset
465 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
466 cat("# VOOM top 50\n")
82e0af566160 Uploaded
fubar
parents:
diff changeset
467 print(rvoom[1:50,])
82e0af566160 Uploaded
fubar
parents:
diff changeset
468 # need a design matrix and glm to use this
82e0af566160 Uploaded
fubar
parents:
diff changeset
469 goodness = gof(DGLM, pcutoff=fdrthresh)
82e0af566160 Uploaded
fubar
parents:
diff changeset
470 nout = sum(goodness\$outlier)
82e0af566160 Uploaded
fubar
parents:
diff changeset
471 if (nout > 0) {
82e0af566160 Uploaded
fubar
parents:
diff changeset
472 print.noquote(paste('Found',nout,'Goodness of fit outliers'))
82e0af566160 Uploaded
fubar
parents:
diff changeset
473 rownames(DGLM)[goodness\$outlier]
82e0af566160 Uploaded
fubar
parents:
diff changeset
474 z = limma::zscoreGamma(goodness\$gof.statistic, shape=goodness\$df/2, scale=2)
82e0af566160 Uploaded
fubar
parents:
diff changeset
475 pdf(paste(mt,"GoodnessofFit.pdf",sep='_'))
82e0af566160 Uploaded
fubar
parents:
diff changeset
476 qq = qqnorm(z, panel.first=grid(), main="tagwise dispersion")
82e0af566160 Uploaded
fubar
parents:
diff changeset
477 abline(0,1,lwd=3)
82e0af566160 Uploaded
fubar
parents:
diff changeset
478 points(qq\$x[goodness\$outlier],qq\$y[goodness\$outlier], pch=16, col="dodgerblue")
82e0af566160 Uploaded
fubar
parents:
diff changeset
479 dev.off()
82e0af566160 Uploaded
fubar
parents:
diff changeset
480 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
481 #Return our main table
82e0af566160 Uploaded
fubar
parents:
diff changeset
482 uoutput
82e0af566160 Uploaded
fubar
parents:
diff changeset
483
82e0af566160 Uploaded
fubar
parents:
diff changeset
484 } #Done
82e0af566160 Uploaded
fubar
parents:
diff changeset
485 sink(stdout(),append=T,type="message")
82e0af566160 Uploaded
fubar
parents:
diff changeset
486 options(width=512)
82e0af566160 Uploaded
fubar
parents:
diff changeset
487 Out_Dir = "$html_file.files_path"
82e0af566160 Uploaded
fubar
parents:
diff changeset
488 Input = "$input1"
82e0af566160 Uploaded
fubar
parents:
diff changeset
489 TreatmentName = "$treatment_name"
82e0af566160 Uploaded
fubar
parents:
diff changeset
490 TreatmentCols = "$Treat_cols"
82e0af566160 Uploaded
fubar
parents:
diff changeset
491 ControlName = "$control_name"
82e0af566160 Uploaded
fubar
parents:
diff changeset
492 ControlCols= "$Control_cols"
82e0af566160 Uploaded
fubar
parents:
diff changeset
493 outputfilename = "$outtab"
82e0af566160 Uploaded
fubar
parents:
diff changeset
494 fdrtype = "$fdrtype"
82e0af566160 Uploaded
fubar
parents:
diff changeset
495 priordf = $priordf
82e0af566160 Uploaded
fubar
parents:
diff changeset
496 fdrthresh = $fdrthresh
82e0af566160 Uploaded
fubar
parents:
diff changeset
497 useNDF = "$useNDF"
82e0af566160 Uploaded
fubar
parents:
diff changeset
498 fQ = $fQ # non-differential centile cutoff
82e0af566160 Uploaded
fubar
parents:
diff changeset
499 myTitle = "$title"
82e0af566160 Uploaded
fubar
parents:
diff changeset
500 subjects = c($subjectids)
82e0af566160 Uploaded
fubar
parents:
diff changeset
501 nsubj = length(subjects)
82e0af566160 Uploaded
fubar
parents:
diff changeset
502 #Set our columns
82e0af566160 Uploaded
fubar
parents:
diff changeset
503 TCols = as.numeric(strsplit(TreatmentCols,",")[[1]])-1
82e0af566160 Uploaded
fubar
parents:
diff changeset
504 CCols = as.numeric(strsplit(ControlCols,",")[[1]])-1
82e0af566160 Uploaded
fubar
parents:
diff changeset
505 cat('# got TCols=')
82e0af566160 Uploaded
fubar
parents:
diff changeset
506 cat(TCols)
82e0af566160 Uploaded
fubar
parents:
diff changeset
507 cat('; CCols=')
82e0af566160 Uploaded
fubar
parents:
diff changeset
508 cat(CCols)
82e0af566160 Uploaded
fubar
parents:
diff changeset
509 cat('\n')
82e0af566160 Uploaded
fubar
parents:
diff changeset
510 useCols = c(TCols,CCols)
82e0af566160 Uploaded
fubar
parents:
diff changeset
511 # Create output dir if non existent
82e0af566160 Uploaded
fubar
parents:
diff changeset
512 if (file.exists(Out_Dir) == F) dir.create(Out_Dir)
82e0af566160 Uploaded
fubar
parents:
diff changeset
513
82e0af566160 Uploaded
fubar
parents:
diff changeset
514 Count_Matrix = read.table(Input,header=T,row.names=1,sep='\t') #Load tab file assume header
82e0af566160 Uploaded
fubar
parents:
diff changeset
515 snames = colnames(Count_Matrix)
82e0af566160 Uploaded
fubar
parents:
diff changeset
516 nsamples = length(snames)
82e0af566160 Uploaded
fubar
parents:
diff changeset
517 if (nsubj > 0 & nsubj != nsamples) {
82e0af566160 Uploaded
fubar
parents:
diff changeset
518 options("show.error.messages"=T)
82e0af566160 Uploaded
fubar
parents:
diff changeset
519 mess = paste('Fatal error: Supplied subject id list',paste(subjects,collapse=','),'has length',nsubj,'but there are',nsamples,'samples',paste(snames,collapse=','))
82e0af566160 Uploaded
fubar
parents:
diff changeset
520 write(mess, stderr())
82e0af566160 Uploaded
fubar
parents:
diff changeset
521 #print(mess)
82e0af566160 Uploaded
fubar
parents:
diff changeset
522 quit(save="no",status=4)
82e0af566160 Uploaded
fubar
parents:
diff changeset
523 }
82e0af566160 Uploaded
fubar
parents:
diff changeset
524
82e0af566160 Uploaded
fubar
parents:
diff changeset
525 Count_Matrix = Count_Matrix[,useCols] # reorder columns
82e0af566160 Uploaded
fubar
parents:
diff changeset
526 if (length(subjects) != 0) {subjects = subjects[useCols]}
82e0af566160 Uploaded
fubar
parents:
diff changeset
527 rn = rownames(Count_Matrix)
82e0af566160 Uploaded
fubar
parents:
diff changeset
528 islib = rn %in% c('librarySize','NotInBedRegions')
82e0af566160 Uploaded
fubar
parents:
diff changeset
529 LibSizes = Count_Matrix[subset(rn,islib),][1] # take first
82e0af566160 Uploaded
fubar
parents:
diff changeset
530 Count_Matrix = Count_Matrix[subset(rn,! islib),]
82e0af566160 Uploaded
fubar
parents:
diff changeset
531 group = c(rep(TreatmentName,length(TCols)), rep(ControlName,length(CCols)) ) #Build a group descriptor
82e0af566160 Uploaded
fubar
parents:
diff changeset
532 group = factor(group, levels=c(ControlName,TreatmentName))
82e0af566160 Uploaded
fubar
parents:
diff changeset
533 colnames(Count_Matrix) = paste(group,colnames(Count_Matrix),sep="_") #Relable columns
82e0af566160 Uploaded
fubar
parents:
diff changeset
534 results = edgeIt(Count_Matrix=Count_Matrix,group=group,outputfilename=outputfilename,fdrtype=fdrtype,priordf=priordf,fdrthresh=fdrthresh,
82e0af566160 Uploaded
fubar
parents:
diff changeset
535 outputdir=Out_Dir,myTitle=myTitle,libSize=c(),useNDF=useNDF,filterquantile=fQ,subjects=subjects)
82e0af566160 Uploaded
fubar
parents:
diff changeset
536 #Run the main function
82e0af566160 Uploaded
fubar
parents:
diff changeset
537 # for the log
82e0af566160 Uploaded
fubar
parents:
diff changeset
538 sessionInfo()
82e0af566160 Uploaded
fubar
parents:
diff changeset
539 ]]>
82e0af566160 Uploaded
fubar
parents:
diff changeset
540 </configfile>
82e0af566160 Uploaded
fubar
parents:
diff changeset
541 </configfiles>
82e0af566160 Uploaded
fubar
parents:
diff changeset
542 <help>
82e0af566160 Uploaded
fubar
parents:
diff changeset
543 **What it does**
82e0af566160 Uploaded
fubar
parents:
diff changeset
544
82e0af566160 Uploaded
fubar
parents:
diff changeset
545 Performs digital gene expression analysis between a treatment and control on a count matrix.
82e0af566160 Uploaded
fubar
parents:
diff changeset
546 Optionally adds a term for subject if not all samples are independent or if some other factor needs to be blocked in the design.
82e0af566160 Uploaded
fubar
parents:
diff changeset
547
82e0af566160 Uploaded
fubar
parents:
diff changeset
548 **Input**
82e0af566160 Uploaded
fubar
parents:
diff changeset
549
82e0af566160 Uploaded
fubar
parents:
diff changeset
550 A matrix consisting of non-negative integers. The matrix must have a unique header row identifiying the samples, and a unique set of row names
82e0af566160 Uploaded
fubar
parents:
diff changeset
551 as the first column. Typically the row names are gene symbols or probe id's for downstream use in GSEA and other methods.
82e0af566160 Uploaded
fubar
parents:
diff changeset
552
82e0af566160 Uploaded
fubar
parents:
diff changeset
553 If you have (eg) paired samples and wish to include a term in the GLM to account for some other factor (subject in the case of paired samples),
82e0af566160 Uploaded
fubar
parents:
diff changeset
554 put a comma separated list of indicators for every sample (whether modelled or not!) indicating (eg) the subject number or
82e0af566160 Uploaded
fubar
parents:
diff changeset
555 A list of integers, one for each subject or an empty string if samples are all independent.
82e0af566160 Uploaded
fubar
parents:
diff changeset
556 If not empty, there must be exactly as many integers in the supplied integer list as there are columns (samples) in the count matrix.
82e0af566160 Uploaded
fubar
parents:
diff changeset
557 Integers for samples that are not in the analysis *must* be present in the string as filler even if not used.
82e0af566160 Uploaded
fubar
parents:
diff changeset
558
82e0af566160 Uploaded
fubar
parents:
diff changeset
559 So if you have 2 pairs out of 6 samples, you need to put in unique integers for the unpaired ones
82e0af566160 Uploaded
fubar
parents:
diff changeset
560 eg if you had 6 samples with the first two independent but the second and third pairs each being from independent subjects. you might use
82e0af566160 Uploaded
fubar
parents:
diff changeset
561 8,9,1,1,2,2
82e0af566160 Uploaded
fubar
parents:
diff changeset
562 as subject IDs to indicate two paired samples from the same subject in columns 3/4 and 5/6
82e0af566160 Uploaded
fubar
parents:
diff changeset
563
82e0af566160 Uploaded
fubar
parents:
diff changeset
564 **Output**
82e0af566160 Uploaded
fubar
parents:
diff changeset
565
82e0af566160 Uploaded
fubar
parents:
diff changeset
566 A matrix which consists the original data and relative expression levels and some helpful plots
82e0af566160 Uploaded
fubar
parents:
diff changeset
567
82e0af566160 Uploaded
fubar
parents:
diff changeset
568 **Note on edgeR versions**
82e0af566160 Uploaded
fubar
parents:
diff changeset
569
82e0af566160 Uploaded
fubar
parents:
diff changeset
570 The edgeR authors made a small cosmetic change in the name of one important variable (from p.value to PValue)
82e0af566160 Uploaded
fubar
parents:
diff changeset
571 breaking this and all other code that assumed the old name for this variable,
82e0af566160 Uploaded
fubar
parents:
diff changeset
572 between edgeR2.4.4 and 2.4.6 (the version for R 2.14 as at the time of writing).
82e0af566160 Uploaded
fubar
parents:
diff changeset
573 This means that all code using edgeR is sensitive to the version. I think this was a very unwise thing
82e0af566160 Uploaded
fubar
parents:
diff changeset
574 to do because it wasted hours of my time to track down and will similarly cost other edgeR users dearly
82e0af566160 Uploaded
fubar
parents:
diff changeset
575 when their old scripts break. This tool currently now works with 2.4.6.
82e0af566160 Uploaded
fubar
parents:
diff changeset
576
82e0af566160 Uploaded
fubar
parents:
diff changeset
577 **Note on prior.N**
82e0af566160 Uploaded
fubar
parents:
diff changeset
578
82e0af566160 Uploaded
fubar
parents:
diff changeset
579 http://seqanswers.com/forums/showthread.php?t=5591 says:
82e0af566160 Uploaded
fubar
parents:
diff changeset
580
82e0af566160 Uploaded
fubar
parents:
diff changeset
581 *prior.n*
82e0af566160 Uploaded
fubar
parents:
diff changeset
582
82e0af566160 Uploaded
fubar
parents:
diff changeset
583 The value for prior.n determines the amount of smoothing of tagwise dispersions towards the common dispersion.
82e0af566160 Uploaded
fubar
parents:
diff changeset
584 You can think of it as like a "weight" for the common value. (It is actually the weight for the common likelihood
82e0af566160 Uploaded
fubar
parents:
diff changeset
585 in the weighted likelihood equation). The larger the value for prior.n, the more smoothing, i.e. the closer your
82e0af566160 Uploaded
fubar
parents:
diff changeset
586 tagwise dispersion estimates will be to the common dispersion. If you use a prior.n of 1, then that gives the
82e0af566160 Uploaded
fubar
parents:
diff changeset
587 common likelihood the weight of one observation.
82e0af566160 Uploaded
fubar
parents:
diff changeset
588
82e0af566160 Uploaded
fubar
parents:
diff changeset
589 In answer to your question, it is a good thing to squeeze the tagwise dispersions towards a common value,
82e0af566160 Uploaded
fubar
parents:
diff changeset
590 or else you will be using very unreliable estimates of the dispersion. I would not recommend using the value that
82e0af566160 Uploaded
fubar
parents:
diff changeset
591 you obtained from estimateSmoothing()---this is far too small and would result in virtually no moderation
82e0af566160 Uploaded
fubar
parents:
diff changeset
592 (squeezing) of the tagwise dispersions. How many samples do you have in your experiment?
82e0af566160 Uploaded
fubar
parents:
diff changeset
593 What is the experimental design? If you have few samples (less than 6) then I would suggest a prior.n of at least 10.
82e0af566160 Uploaded
fubar
parents:
diff changeset
594 If you have more samples, then the tagwise dispersion estimates will be more reliable,
82e0af566160 Uploaded
fubar
parents:
diff changeset
595 so you could consider using a smaller prior.n, although I would hesitate to use a prior.n less than 5.
82e0af566160 Uploaded
fubar
parents:
diff changeset
596
82e0af566160 Uploaded
fubar
parents:
diff changeset
597
82e0af566160 Uploaded
fubar
parents:
diff changeset
598 From Bioconductor Digest, Vol 118, Issue 5, Gordon writes:
82e0af566160 Uploaded
fubar
parents:
diff changeset
599
82e0af566160 Uploaded
fubar
parents:
diff changeset
600 Dear Dorota,
82e0af566160 Uploaded
fubar
parents:
diff changeset
601
82e0af566160 Uploaded
fubar
parents:
diff changeset
602 The important settings are prior.df and trend.
82e0af566160 Uploaded
fubar
parents:
diff changeset
603
82e0af566160 Uploaded
fubar
parents:
diff changeset
604 prior.n and prior.df are related through prior.df = prior.n * residual.df,
82e0af566160 Uploaded
fubar
parents:
diff changeset
605 and your experiment has residual.df = 36 - 12 = 24. So the old setting of
82e0af566160 Uploaded
fubar
parents:
diff changeset
606 prior.n=10 is equivalent for your data to prior.df = 240, a very large
82e0af566160 Uploaded
fubar
parents:
diff changeset
607 value. Going the other way, the new setting of prior.df=10 is equivalent
82e0af566160 Uploaded
fubar
parents:
diff changeset
608 to prior.n=10/24.
82e0af566160 Uploaded
fubar
parents:
diff changeset
609
82e0af566160 Uploaded
fubar
parents:
diff changeset
610 To recover old results with the current software you would use
82e0af566160 Uploaded
fubar
parents:
diff changeset
611
82e0af566160 Uploaded
fubar
parents:
diff changeset
612 estimateTagwiseDisp(object, prior.df=240, trend="none")
82e0af566160 Uploaded
fubar
parents:
diff changeset
613
82e0af566160 Uploaded
fubar
parents:
diff changeset
614 To get the new default from old software you would use
82e0af566160 Uploaded
fubar
parents:
diff changeset
615
82e0af566160 Uploaded
fubar
parents:
diff changeset
616 estimateTagwiseDisp(object, prior.n=10/24, trend=TRUE)
82e0af566160 Uploaded
fubar
parents:
diff changeset
617
82e0af566160 Uploaded
fubar
parents:
diff changeset
618 Actually the old trend method is equivalent to trend="loess" in the new
82e0af566160 Uploaded
fubar
parents:
diff changeset
619 software. You should use plotBCV(object) to see whether a trend is
82e0af566160 Uploaded
fubar
parents:
diff changeset
620 required.
82e0af566160 Uploaded
fubar
parents:
diff changeset
621
82e0af566160 Uploaded
fubar
parents:
diff changeset
622 Note you could also use
82e0af566160 Uploaded
fubar
parents:
diff changeset
623
82e0af566160 Uploaded
fubar
parents:
diff changeset
624 prior.n = getPriorN(object, prior.df=10)
82e0af566160 Uploaded
fubar
parents:
diff changeset
625
82e0af566160 Uploaded
fubar
parents:
diff changeset
626 to map between prior.df and prior.n.
82e0af566160 Uploaded
fubar
parents:
diff changeset
627
82e0af566160 Uploaded
fubar
parents:
diff changeset
628 </help>
82e0af566160 Uploaded
fubar
parents:
diff changeset
629
82e0af566160 Uploaded
fubar
parents:
diff changeset
630 </tool>
82e0af566160 Uploaded
fubar
parents:
diff changeset
631
82e0af566160 Uploaded
fubar
parents:
diff changeset
632