DESeq2 time-series data of multiple treatments with common time 0
1
0
Entering edit mode
Ting • 0
@ting-12258
Last seen 7.9 years ago

Hi all,

I'd like to use DESeq2 for treatment-specific differences over time.

Here is my colData with a common time 0 for Mock, treatment1 and treatment 2:

> as.data.frame(colData(cds))
times treatments
Control_a 00 Mock
Control_b 00 Mock
Control_c 00 Mock
Mock_03hr_a 03 Mock
Mock_03hr_b 03 Mock
Mock_03hr_c 03 Mock
Mock_06hr_a 06 Mock
Mock_06hr_b 06 Mock
Mock_06hr_c 06 Mock
Mock_12hr_a 12 Mock
Mock_12hr_b 12 Mock
Mock_12hr_c 12 Mock
treatment1_03hr_a 03 treatment1
treatment1_03hr_b 03 treatment1
treatment1_03hr_c 03 treatment1
treatment1_06hr_a 06 treatment1
treatment1_06hr_b 06 treatment1
treatment1_06hr_c 06 treatment1
treatment1_12hr_a 12 treatment1
treatment1_12hr_b 12 treatment1
treatment1_12hr_c 12 treatment1
treatment2_03hr_a 03 treatment2
treatment2_03hr_b 03 treatment2
treatment2_03hr_c 03 treatment2
treatment2_06hr_a 06 treatment2
treatment2_06hr_b 06 treatment2
treatment2_06hr_c 06 treatment2
treatment2_12hr_a 12 treatment2
treatment2_12hr_b 12 treatment2
treatment2_12hr_c 12 treatment2

When I tried this:

cds <- DESeqDataSetFromMatrix(countData = data, colData = colData, design = ~ treatments+times+treatments:times)

I got the error message:

Error in checkFullRank(modelMatrix) : the model matrix is not full rank, so the model cannot be fit as specified. One or more variables or interaction terms in the design formula are linear combinations of the others and must be removed.

I've been searching for the reasons and solutions like this post: With DESeq2 "Not full rank" Error with design ~ line + time + condition, and went through its comments. However, since my data is unpaired, using:

colData$times.nested = factor(c(rep(1,3),rep(rep(2:5,each=3),3)))

cds <- DESeqDataSetFromMatrix(countData = data, colData = colData, design = ~ treatments + times + treatments:times.nested + treatments:times)

or

mm = model.matrix(~ treatments + times + treatments:times, colData(cds))
cds = DESeq(cds, full=mm, betaPrior=FALSE)

gave me the same error.

How do I capture differentially expressed genes of each treatment vs. Mock over time with common time 0 incorporated?

 

Best regards,

Ting

deseq2 multiple time points multiple treatments • 4.2k views
ADD COMMENT
1
Entering edit mode
@mikelove
Last seen 4 days ago
United States

hi Ting,

There was a similar question posted recently, which didn't have any treatment samples at time 0. (There was also a second level of grouping in that question, but I didn't address this in my reply to the question.) Can you take a look at my answer and then see if you have further questions:

A: deseq2 multifactor timeseries help

For building the DESeqDataSet you can use a design of ~1, and then you can use matrices for the arguments 'full' (and 'reduced' if you want to perform a likelihood ratio test).

ADD COMMENT
0
Entering edit mode

Hi Michael,

With your solution, it works well now! Thank you so much for the prompt reply.

 

ADD REPLY
0
Entering edit mode

Hi Michael,

As I checked the comparisons of the analysis, it showed:

> resultsNames(cdsFull)
"Intercept" "times03" "times06"                
"times12" "times03.treatmentstreatment2" "times06.treatments treatment2"
"times12.treatments treatment2" "times01.treatmentsYeast" "times03.treatments treatment1"
"times06.treatments treatment1" "times12.treatmentstreatment1"

Does that shows there's no statistical comparisons between treatments as you said in A: deseq2 multifactor timeseries help ? Can genes with p.adj<0.05 in "times03.treatmentstreatment2" be interpreted as significant differences between treatment2 and Mock at times03 or just significant differences in treatment2 at times03 over time? If it's the latter case, is there other way to do the differential analysis between one of the treatments and Mock over time including common time 0? I once thought copy-paste the data of common time 0 to each treatment, thus the data set will be paired. But I guess this will change size factors?

Or sacrifice time 0 by removing the common time 0 and then just compare treatments over times03, times06, and times12.

ADD REPLY
0
Entering edit mode

times03.treatmentstreatment2 => treatment 2 vs mock at time 3

To compare treatment 2 vs treatment 1 at time 3, you would use the 'contrast' argument:

res <- results(dds, contrast=list("times03.treatmentstreatment2", 
                                  "times03.treatmentstreatment1")

 

 

ADD REPLY

Login before adding your answer.

Traffic: 797 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6