annotate rgedgeR/rgedgeRpaired.xml @ 5:06e51c47590d draft

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