Entering edit mode
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
Thank you so much! I understand the result after calculating CPMs.