Question: Limma: Best way to analyse treatment response in patients paired pre/post treatment
0
gravatar for j.iremonger
2.1 years ago by
j.iremonger0 wrote:

Dear All,

I've searched and searched but still not confident with my LIMMA analysis here. Below is an example target file table to demonstrate the sort of samples I have (my n number is thankfully bigger than the table suggests). In the example, I have 4 patients all 4 have a disease. After completion of the study, it is seen that two of the patients responded well to the treatment (Positive Response = 1) and two did not (Positive Response = 0). Their initial pre-treatment sample is where Intervention = 0, and conversely Intervention = 1 is a post-treatment sample. I've not shown it in the table but I also have a good number of Healthy volunteers which could be used for comparisons. However, I'm of the understanding that pairing the samples can possibly add more power to my analysis, but any ideas here would be welcome. 

<caption>Example of Targets file</caption>
File Patient Intervention Treatment.Response
a.txt a naive Responder
a.txt a treated Responder
b.txt b naive Responder
b.txt b treated Responder
c.txt c naive Non_Responder
c.txt c treated Non_Responder
d.txt d naive Non_Responder
d.txt d treated Non_Responder

 

I want to make the most of the data available here and that I haven't made any incorrect assumptions or misinterpreted things. I need some help designing the contrasts. I don't know if these questions need a paired design or if I just compare the appropriate subset of arrays.

I want to investigate the differences between responders and non-responders.

  1. I'd like to know if there is any difference in expression pre-treatment. i.e. could there be a way to molecularly stratify these patients before assigning treatment?
  2. What are the differences post-treatment. i.e. differences here could be used to understand the biology underpinning the treatment response/non-response?

Below is the basic LIMMA code for this, the makeContrasts() is blank as that's the bit I'm not sure on.

design <- model.matrix(~ 0 + Intervention + Treatment.Response + Patient, data = targets)
fit <- lmFit(eset, design= design)

​contrast.matrix <- makeContrasts("", levels = design)
fit2 <- contrasts.fit(fit, contrast.matrix)
fit2 <- eBayes(fit2)
topTable(fit2)

 

 

ADD COMMENTlink modified 2.1 years ago by Gordon Smyth39k • written 2.1 years ago by j.iremonger0
Answer: Limma: Best way to analyse treatment response in patients paired pre/post treatm
2
gravatar for Gordon Smyth
2.1 years ago by
Gordon Smyth39k
Walter and Eliza Hall Institute of Medical Research, Melbourne, Australia
Gordon Smyth39k wrote:

See Section 9.7 "Multi-level experiments" in the limma User's Guide. Your experimental design is almost exactly the same as the example given in the guide.

ADD COMMENTlink modified 2.1 years ago • written 2.1 years ago by Gordon Smyth39k

Thank you Gordon, you really must hate people who fail to read the entire manual!  I do apologise, it never registered with myself that this was what I was after when first reading through.

ADD REPLYlink written 2.1 years ago by j.iremonger0

Hi Gordon,

Going through that example has got me most of the way. I'm also interested in what unique changes are present in responders when they are given treatment. Is the below contrast valid for that comparison?

makeContrasts(genes.of.interest = (Responder.treated-Responder.naive) - (Non_Responder.treated-Non_Responder.naive))

Or using the example from the LIMMA user guide (9.7)

makeContrasts(genes.of.interest = (Diseased.B-Diseased.A) - (Normal.B-Normal.A))
ADD REPLYlink written 2.1 years ago by j.iremonger0
1

Well, it depends what you mean by "unique". If you want genes that are DE for responders but not DE for non-responders, then you need to examine multiple contrasts. If you want to be strict about it, then I would do it like this:

contrast.matrix <- makeContrasts(
      Treated.vs.Naive.Responders = Responder.treated-Responder.naive,
      Treated.vs.Naive.Non_Responders = Non_Responder.treated-Non_Responder.naive,
      Responders.vs.Non_Responders = (Responder.treated-Responder.naive) - (NonResponder.treated-NonResponder.naive),
      levels = design)
fit2 <- contrasts.fit(fit, contrast.matrix)
fit2 <- eBayes(fit2)
results <- decideTests(fit2)

You want genes that are positive for the first contrast (up-regulated for responders) and zero for the second contrast (not DE for non-responders). To be strict, you should also restrict to genes that have significantly different responses in responders vs non-responders. So you want genes like this:

i <- results[,1]==1 & results[,2]==0 & results[,3]==1
topTable(fit2[i,])

That gives up-regulated genes. To get down-regulated:

i <- results[,1]==-1 & results[,2]==0 & results[,3]==-1
topTable(fit2[i,])

 

ADD REPLYlink modified 2.1 years ago • written 2.1 years ago by Gordon Smyth39k

Thanks again Gordon,

The first contrast was what I was thinking of, but I hadn't thought of comparing them like the second. I will give that a go too. 

ADD REPLYlink written 2.1 years ago by j.iremonger0
Answer: Limma: Best way to analyse treatment response in patients paired pre/post treatm
1
gravatar for James W. MacDonald
2.1 years ago by
United States
James W. MacDonald51k wrote:

There is an example for this type of experiment, but it's in the edgeR User's Guide, not the limma User's Guide. See section 3.5 in the edgeR User's Guide. Note that while limma fits a different model, as far as specifying a design and contrast matrix, both edgeR and limma are identical.

ADD COMMENTlink written 2.1 years ago by James W. MacDonald51k

Thank you James, that's exactly what I needed. Looking at the matrix design it's unlike anything I've ever made before. It would explain why this problem, which I swear should be simple, has proven so tricky to get my head around. Again, thank you very much.

ADD REPLYlink written 2.1 years ago by j.iremonger0
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 16.09
Traffic: 408 users visited in the last hour