Hi,
I'm using DiffBind for many of my ChIPseq analyses and recently asked myself, if the "concentration" that is given as output of dba.report() is normalized or not. In the reference manual it is written that this number is the mean (log) reads across all samples of the specific group.
1) Are you referring to log2 or log10?
2) Were these values generated using the normalization method specified in dba.count()? (I'm using DBA_SCORE_TMM_READS_FULL because we have no input available)
Would be great if somebody could give me a feedback. Thanks!
Thanks, I knew I could count on you to respond quickly :P
Sorry to dredge up this post years later, but does this mean that there is no other modification to the raw read counts aside from the log2 normalization-- that is, if "conc_group1" is reported as 5 by dba.report() for a given peak, that there are 2^5 total reads mapping to this peak?
Asking because I am comparing several groups with one another and running into an issue where for a given peak, "group A vs group B: conc_group1" != "group C v group A: conc_group2". I'm trying to figure out why this might be, since I had thought "A vs B: conc_group1" should = "C vs A: conc_group2" = log2(reads mapping to peak for all samples in group A)... but maybe I'm missing something.
Hope this question makes sense!
As I understand it, you have two contrasts that share one group of samples. You expect the concentrations reported for the shared group to be the same in both contrasts, but they are no equal. Is that correct?
My first question is what version of
DiffBind
are you using? And how exactly did you set up the contrasts? In older versions [and in the current version if you setdesign=FALSE
indba.contrast()
], each contrast uses a distinct model and is normalized separately, so any normalized results will be different (ifbNormalized=TRUE
, as is done by default). However non-normalized concentrations should be the same (modified only by takinglog2()
).I am using DiffBind version 2.16.2, so not the most recent. I am setting up the contrasts and analysis using:
db_obj <- dba.contrast(db_obj, categories=DBA_CONDITION, minMembers=2)
db_obj <- dba.analyze(db_obj, method=DBA_ALL_METHODS)
and I am viewing the results of each contrast through
dba.report(db_obj, method=DBA_DESEQ2, contrast=contrast, th=1, bCalled=TRUE)
.I think I get it now-- since bNormalized is True by default, dba.report() is reporting the separately normalized scores for each contrast (so in my case, the RLE normalized values because DeSeq2 uses RLE normalization by default), instead of the log2 normalized raw counts, correct?
Yes. You can get the raw counts by setting
bNormalized=FALSE
when callingdba.report()
.In the more recent version, by default a single model is for all the contrasts, and normalization factors are calculated using all the data, so the normalized counts should be the same when the same sample groups are used in different contrasts.