I agree with Gord's answer, but wanted to elaborate a bit.
The difference is most likely the normalization step. edgeR
uses the TMM method which relies on a core of sites that don't systematically change their binding affinities. While this assumption of usually true for RNA-seq, there are many ChIP-seq experiments where one sample group has a completely different binding profile than the other sample group. Often, in one condition there is very little binding, but in the other condition much additional binding has been induced. For example, when we ChIP for the estrogen receptor ER, we sometimes use a control where the cells have been deprived of estrogen, the ligand required for binding. Comparing any of these samples to ones that include estrogen will violate the assumption behind TMM. As a result, the edgeR
analysis will "over-normalize", driving the code of fold changes to zero. As a result, fewer of the sites appear to be differentially bound -- and in many cases, the sign of the fold change will even be flipped.
You can see if this is what is going on in your data by following Gord's suggestion of looking at the MA plots. Specifically, look at three versions of the MA plots:
> par(mfrow=c(2,2))
> dba.plotMA(myDBA,bNormalized=FALSE)
> dba.plotMA(myDBA,method=DBA_DESEQ2)
> dba.plotMA(myDBA,method=DBA_EDGER)
If this is a normalization issue, you should see that in the first, non-normalized plot, most of the fold changes are either above or below the line. Often the Y axis is asymmetric as well (extending to a higher magnitude in one direction). In the second (DESeq2
) plot, there may be a small shift toward the zero line, but the one-sided trend is maintained.
In the third (edgeR
) plot, if the points are more centered around the zero line, with a more equal balance of sites with positive and negative fold changes, this shows the data have been "over-normalized" (really, just improperly normalized). You should not trust the edgeR
analysis in this case. This is the reason we changed the default analysis method in DiffBind
from edgeR
to DESeq2
.
Cheers-
Rory