How to perform longitudinal analysis using EdgeR
1
0
Entering edit mode
Sabiha ▴ 20
@7f93ecd8
Last seen 23 days ago
United States

Hi,

We have airway epithelial models using 6 donors, including 4 female (two older and two younger) and 2 younger males. We've infected primary human bronchial cultures with the FLU virus. The transcriptional responses of these cultures were sequenced through RNA-seq at time intervals 6, 24, and 48 hr over 4 batches. This setup included some overlapping donors, as well as both technical and biological replicates.

We employed EdgeR, starting with filterbyexpr and then proceeding to (cpm) with TMM normalization. Using the normalized values, we determined the Fold-Changes (FC) relative to the mock (control) for each donor. Owing to the limited number of donors and the inclusion of multiple batches, we opted for calculate FC values rather than statistical methods like glmQLFit or lmFit from limma, such as t-tests or ANOVA. This approach was also intended to mitigate to some extent potential batch and gender variations. We're considering whether this methodology for deriving FC values and coupled with Difference values [to regress out extreme or noisy genes] effectively indicates differential gene expression. Simultaneously, we are also exploring if maybe one could point out that we could have enough samples to run a longitudinal analysis? At the point we are just exploring and benchmarking the feasible methods. Perhaps, we might have more donors going forward but it will take sometime. Note: We implemented batch correction using the sva packages ComBat function after normalization.

Does edgeR has a functionality or any case study to perform longitudinal analysis preferably with small number of subjects or donors? Other than these mentioned methods if you have any advise or suggestions that will be very helpful.

Thank you,

Sabiha

StatisticalMethod FoldChange edgeR RNASeq • 440 views
ADD COMMENT
1
Entering edit mode
@gordon-smyth
Last seen 13 minutes ago
WEHI, Melbourne, Australia

Longitudinal analysis (comparisons between time points) is just a standard analysis in edgeR, it does't need a special approach. edgeR is specifically designed for small numbers of samples, so the number of samples or donors doesn't appear to present a problem.

ADD COMMENT
0
Entering edit mode

Thank you Gordon Smyth This is noted.

I usually export the log normalized values from EdgeR and load into limma package due to flexibility and perform below pair-wise comparison. Is there a way either in EdgeR or limma where I could find genes both common and unique changes over the timepoints? Typically, I perform union and intersection of genes and use Venn Diagram for representation for each comparison.

library(limma)
design

## Then we estimate the correlation between measurements made on the same subject:
corfit <- duplicateCorrelation(log2cpm,design,block=Sample_metadata$Donor) 

## inter-subject correlation into the linear model fit:
fit <- lmFit(log2cpm, design, block=Sample_metadata$Donor,correlation=corfit$consensus)  #Warning message: https://support.bioconductor.org/p/129544/; https://support.bioconductor.org/p/52649/

## Now we can make any comparisons between the experimental conditions:
Cont.matrix<- makeContrasts(
  "Tp24hr_vs_Tp6hr" = Tp24hr - Tp6hr,
  "Tp48hr_vs_Tp6hr" = Tp48hr - Tp6hr,
  "Tp48hr_vs_Tp24hr" = Tp48hr - Tp24hr,
  levels=design)

## Then compute these contrasts and moderated t-tests:
fit_2 <- contrasts.fit(fit, Cont.matrix)

## linear model fit  
fit_2 <- eBayes(fit_2) 

## Extract a table of the top-ranked genes from a linear model fit.
tt <- topTable(fit_2, number=Inf, adjust="BH")

## Identify which genes are significantly differentially expressed for each contrast from a fit object 
dt <- decideTests(fit_2, method = "separate", adjust.method = "none")

write.fit(fit_2, results = dt, file="Stats_TPss.tsv", adjust = "BH", method = "separate")
ADD REPLY

Login before adding your answer.

Traffic: 610 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