I am trying to reproduce the results of DiffBind for edgeR analysis.
A member of my research group did analysis with DiffBind and got nice results, whereas me, performing the edgeR separately could not get any results.
DiffBind was called as follows:
WNN_vs_WEN= dba.analyze(WNN_vs_WEN)
According to DiffBind protocol:
Next comes a call to edgeR ’s DGEList function. The DGEList object that results is next passed to calcNormFactors with method="TMM" and doWeighting=FALSE, returning an updated DGEList object. This is passed to estimateCommonDisp with default parameters.
My edgeR equivalent would be the following: (the manual of DiffBind is somehow really weird regarding edgeR description)
WEN -> treated, WNN -> untreated
cond = rep(c("WEN","WNN"), each=cols/2) condition <- relevel(factor(cond), ref="WNN") y =DGEList(signal,group=condition) y <- calcNormFactors(y,method="TMM",doWeighting =FALSE) y = estimateCommonDisp(y) But what is done next? In DiffBind they switch then to "If the method is DBA_EDGER_CLASSIC" and "If the method is DBA_EDGER_GLM (the default)". So, if DBA_EDGER_GLM is default, then an estimateGLMCommonDisp should be called. But we have already called estimateCommonDisp. Also, at the end they state: Finally, an exactTest ([6]) is performed, using either common or tagwise dispersion depending on the value specified for bTagwise. But exactTest does not give me adjusted p-values and a member of my group got FDRs.
Is there a manual where the steps of edgeR in DiffBind are described better?
Could you also please explain why you chose a "local" estimation of a dispersion in deseq2 analysis as default?