Inconsistent result in edgeR
1
0
Entering edit mode
@0c4f4d18
Last seen 7 weeks ago
Japan

When I conducted a differential gene expression analysis by using edgeR, I ran into a weird result.

I performed the following commands.

> library( edgeR )
> library( dplyr )
> a01 <- read.table( "a01.txt", sep = ",", header = T, row.names = 1 )
> a02 <- read.table( "a02.txt", sep = ",", header = T, row.names = 1 )
> a03 <- read.table( "a03.txt", sep = ",", header = T, row.names = 1 )
> a07 <- read.table( "a07.txt", sep = ",", header = T, row.names = 1 )
> a08 <- read.table( "a08.txt", sep = ",", header = T, row.names = 1 )
> a12 <- read.table( "a12.txt", sep = ",", header = T, row.names = 1 )
> counts <- inner_join( x = a01, y = a02, by = "gene" )
> counts <- inner_join( x = counts, y = a03, by = "gene" )
> counts <- inner_join( x = counts, y = a07, by = "gene" )
> counts <- inner_join( x = counts, y = a08, by = "gene" )
> counts <- inner_join( x = counts, y = a12, by = "gene" )
> rownames( counts ) <- counts$gene
> count <- as.matrix( counts[,c( "a01", "a02," "a03", "a07", "a08", "a12" )] )
> group <- factor( c( "vehicle", "vehicle", "vehicle", "iron", "iron", "iron" ) )
> d <- DGEList( counts = count, group = group )
> keep <- filterByExpr( d, group = group )
> d <- d[keep,,keep.lib.sizes = FALSE]
> d <- calcNormFactors( d )
> d <- estimateCommonDisp( d )
> d <- estimateTagwiseDisp( d )
> result <- exactTest( d )

Since I am interested in the difference in gene expression levels of the gene TFH1 between groups, I checked expression levels and the result of TFH1.

> d$counts["FTH1",]
a01    a02     a03     a07     a08     a12
2554  2554   1890   5158   4247   3944
> summary( decideTests( result ) )
             vehicle-iron
Down                 1752
NotSig               8246
Up                   1741
> result$table["FTH1",]
            logFC               logCPM             PValue
FTH1     0.403533             9.811439       0.0006505899

Even though expression levels of TFH1 seem to be higher in iron than in vehicle, why the logFC is positive, which means TFH1 is down-regulated in iron? Please let me know if my command is not correct.

> sessionInfo( )
R version 4.4.0 (2024-04-24)
Platform: aarch64-apple-darwin20
Running under: macOS Ventura 13.6.7

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRblas.0.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.0

locale:
[1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8

time zone: Asia/Tokyo
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] dplyr_1.1.4  edgeR_4.3.14 limma_3.61.9

loaded via a namespace (and not attached):
 [1] utf8_1.2.4       R6_2.5.1         tidyselect_1.2.1 lattice_0.22-6  
 [5] magrittr_2.0.3   glue_1.7.0       tibble_3.2.1     pkgconfig_2.0.3 
 [9] generics_0.1.3   lifecycle_1.0.4  cli_3.6.3        fansi_1.0.6     
[13] grid_4.4.0       vctrs_0.6.5      statmod_1.5.0    compiler_4.4.0  
[17] tools_4.4.0      pillar_1.9.0     locfit_1.5-9.10  rlang_1.1.4
edgeR • 289 views
ADD COMMENT
1
Entering edit mode
Yunshun Chen ▴ 870
@yunshun-chen-5451
Last seen 26 days ago
Australia

You don't compare gene expression by raw counts. Use something like CPM (count-per-million) at least.

ADD COMMENT
0
Entering edit mode

Thank you so much! I understand the result after calculating CPMs.

ADD REPLY

Login before adding your answer.

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