[BioC] DiffBind time course

Rory Stark Rory.Stark at cruk.cam.ac.uk
Tue Sep 9 17:20:52 CEST 2014

You can get the binding matrix after the call to dba.count, but you should
make sure to set the "score" to either DBA_SCORE_READS or
DBA_SCORE_READS_MINUS. If you've already counted and don't want to do it
again, you can change the score and then retrieve the binding matrix:

> DBA = dba.count(DBA,peaks=NULL,score=DBA_SCORE_READS)
> bindingMatrix = dba.peakset(DBA, bRetrieve=TRUE)

This will return the binding matrix as a GRanges object, with the read
counts in the metadata. It may be easier to work with a dataframe:

> bindingMatrix = dba.peakset(DBA, bRetrieve=TRUE, DataType=DBA_DATA_FRAME)

In which case the count matrix is:

> counts = bindingMatrix[,4:ncol(bindingMatrix)]

As for retrieving the actual edgeR and DESeq object, the final section int
he vignette describes where they are after a call to dba.analyze().


On 09/09/2014 15:29, "Enrico Ferrero" <enricoferrero86 at gmail.com> wrote:

>Hi Rory,
>Many thanks for the explanation. At first sight, using a blocking
>factor should probably do the job - I hadn't though about it.
>For future reference, how and at what step I can extract the binding
>matrix or edgeR/DESeq2 objects to continue the analysis with those
>On 9 September 2014 14:43, Rory Stark <Rory.Stark at cruk.cam.ac.uk> wrote:
>> Hello Enrico-
>> You can do some more advanced modelling using DiffBind, but to really
>> the full power of the GLMs, you probably want to extract the binding
>> matrix and/or the edgeR/DESEq2 objects and run the appropriate RNA-seq
>> package directly.
>> Within DiffBind, you can use the "block" parameter in dba.contrast to
>> indicate the metadata field that has the timepoint. So if the
>> sample/control distinction is indicated as the Treatment and the
>> info is in the Condition, you can say:
>>> DBA = dba.contrast(DBA,categories=DBA_TREATMENT, block=DBA_CONDITION)
>>> DBA = dba.analyze(DBA) # for default edgeR analysis
>> This will model the data as [~Condition + Treatment] and give you the
>> effects of the treatment consistent across timepoints. There are other
>> models you may want to fit, (eg [~Condition * Treatment]); for this you
>> would need to run edgeR (or DESeq/DESeq2) independently -- their
>> respective vignettes give examples of analyzing time series data.
>> -Rory
>> On 09/08/2014 12:02, Enrico Ferrero <enricoferrero86 at gmail.com>  wrote:
>>>Message: 1
>>>Date: Mon, 8 Sep 2014 12:01:57 +0100
>>>From: Enrico Ferrero <enricoferrero86 at gmail.com>
>>>To: "bioconductor at r-project.org" <bioconductor at r-project.org>
>>>Subject: [BioC] DiffBind time course
>>><CAO22HXcAQM_61p7uH4KSKkM13yFn5G5hp7fZS32+cBGTNnpzDw at mail.gmail.com>
>>>Content-Type: text/plain; charset=UTF-8
>>>Is there a way to use DiffBind to analyse time course data?
>>>I have sample and control replicates at five different time points and
>>>I would like to know which sites show differential binding over time.
>>>At the moment I'm doing multiple pairwise comparisons (i.e: sample at
>>>24h vs control at 24h) and I'm trying to understand if it's possible
>>>at all and, if yes, what parameters I should pass to dba.contrast()
>>>and dba.analyze().
>>>Enrico Ferrero
>Enrico Ferrero

More information about the Bioconductor mailing list