This is a test version of Biostars. For the public version, visit https://www.biostars.org.
What Are Usual Logfc Values In Differential Ge Analysis?

Hello, I want compare GE from experiment A (three replicates) with experiment B (three replicates)

Here is my workflow:

library(limma) 
celFiles <- list.celfiles(path_to_cel_files,full.names=TRUE)
affyExpressionFS <- read.celfiles(celFiles)
eset <- rma(affyExpressionFS, background = TRUE, normalize = TRUE)
stress <- c(1,1,1,0,0,0) # first three replicates (case)
control <- c(0,0,0,1,1,1) # last three replicates (control)
design <- cbind(stress, control) # first term is numerator, second denominator of the ratio
fit <- lmFit(eset, design)
cont.matrix <- makeContrasts(STvsCO=stress-control, levels=design)
fit2 <- contrasts.fit(fit, cont.matrix)
fit2 <- eBayes(fit2)
tab <- topTable(fit2, adjust = "BH", confin =T , number = 1000, sort.by="logFC")

The problem is, that the highest absolute logFC value is 1.4 which seems very low. Which logFC values are normal for such comparisons?

My top candidates look like this:

ID       logFC        AveExpr        t            P.Value        adj.P.Val    B               
8047174    1.410216184    8.394967474    3.253590303    0.012932418    0.596479114    -2.705225672
8126784    1.281783565    5.991972071    3.246829585    0.013058101    0.596479114    -2.711771396

Thank you

gene-expression limma

May I ask what do you like compare in both the experiments?

If you would like to compare genes that are significantly deferentially expressed in both the experiments, you may consider filitering the data based on significance... P Value...

thats the next problem. After multiple testing correction no gene is significant.

2 answers

In extreme cases (tumors vs healthy tissue) I have seen logFC-values of 7 (both positive and negative). The fact that you do not see any significant differences between your stress and control samples possibly means that there are no big differences between your samples. Try doing a PCA on your samples and plot your samples in a 3-dimensional scatterplot where x.y and z-axis are principal component 1, principal component 2 and principal component 3 (PC1, PC2, PC3) and color the six samples by stress/control. Do you see that stress and control samples are plotted seperately from each other?

pca <- prcomp(t(exprs(eset)),scale=TRUE)

library(scatterplot3d) 
yourColors <- c("red","red","red","blue","blue","blue")
plotPCA <- scatterplot3d(pca$x[,1:3],pch=20,color = yourColors)
label.coord <- plotPCA$xyz.convert(pca$x[,1], pca$x[,2], pca$x[,3])
text(label.coord$x, label.coord$y, labels=row.names(pca$x),pos=4, cex=.5)

Thank you! They seem only partly seperated.

pca

I have changed the code to handle the problem when the variance is zero and to prevent the Error cannot rescale a constant/zero column to unit variance:

library(scatterplot3d) 
pca_matrix <- t(exprs(eset))
variances <- apply(pca_matrix, 2, var) # variance for each column
zerovar <- which(variances == 0) 
pca_matrix.2 <- pca_matrix[,-zerovar] # delete columns where variance is zero
pca <- prcomp(pca_matrix.2,scale=TRUE)
yourColors <- c("red","red","red","blue","blue","blue")
plotPCA <- scatterplot3d(pca$x[,1:3],pch=20, color = yourColors,angle=45)
label.coord <- plotPCA$xyz.convert(pca$x[,1], pca$x[,2], pca$x[,3])
text(label.coord$x, label.coord$y, labels=row.names(pca$x),pos=4, cex=.5)

Nice, some also prefer type="h" in scatterplo3d.

if you are particularly interested in checking the fold change for a particular gene of interest, then logFC. There is nothing exactly like normal logFC in my opinion and that totally depends on how does your experimental condition influence the expression and thus the fold change is inferred.

Log in to answer this question.