About dataset

The data is from a paper Generation of a microglial developmental index in mice and in humans reveals a sex difference in maturation and immune reactivity Published in Glia in 2017.

Analysis

From edgR package, quasi-likelihood method is used as is recommended for bulk RNA seq as it has strict error control rate by authors. Three different types of statistical model is shown as in edgeR manual.All three are quivalent as authors mentioned.

load libraries and data

library(edgeR)
## Loading required package: limma
library(limma)
count_data <- read.csv('/Users/nishapaudel/Documents/developmental_Sal/Counts.csv', sep =',', header=T, row.names = 1)
sampleinfo <- read.csv("/Users/nishapaudel/Documents/developmental_Sal/NEW_design.txt", sep = ',', header = TRUE, row.names = 1, stringsAsFactors = TRUE)
sampleinfo
##           Sex   Age Treatment
## F_E18_1     F   E18         N
## M_E18_1     M   E18         N
## F_E18_3     F   E18         N
## M_E18_4     M   E18         N
## F_P14_1     F   P14         N
## F_P14_2     F   P14         N
## F_P14_3     F   P14         N
## F_P14_4     F   P14         N
## F_P14_5     F   P14         N
## F_P14_6     F   P14         N
## F_P14_7     F   P14         N
## F_P14_8     F   P14         N
## F_P14_9     F   P14         N
## F_P14_10    F   P14         N
## M_P4_1      M    P4         N
## F_P4_2      F    P4         N
## F_P4_3      F    P4         N
## F_P4_4      F    P4         N
## F_P60_S_1   F P60_S         S
## F_P60_S_2   F P60_S         S
## F_P60_S_3   F P60_S         S
## F_P60_S_4   F P60_S         S
## F_P60_S_5   F P60_S         S
## M_P60_S_5   M P60_S         S
## F_P60_S_7   F P60_S         S
## F_E18_2     F   E18         N
## M_E18_2     M   E18         N
## M_E18_3     M   E18         N
## M_P14_1     M   P14         N
## M_P14_2     M   P14         N
## M_P14_3     M   P14         N
## M_P14_4     M   P14         N
## M_P14_5     M   P14         N
## M_P14_6     M   P14         N
## M_P14_7     M   P14         N
## M_P14_8     M   P14         N
## M_P14_9     M   P14         N
## M_P14_10    M   P14         N
## F_P4_1      F    P4         N
## M_P4_2      M    P4         N
## M_P4_3      M    P4         N
## M_P4_4      M    P4         N
## M_P60_S_1   M P60_S         S
## M_P60_S_2   M P60_S         S
## M_P60_S_3   M P60_S         S
## M_P60_S_4   M P60_S         S
## F_P60_S_6   F P60_S         S
dim(count_data)
## [1] 21987    47

1. Nested interaction formulas

age <- paste(sampleinfo$Age)
age<- factor(age)
sex <- paste(sampleinfo$Sex)
sex <- factor(sex)
#group <- factor(paste0(sampleinfo$Sex, ".", sampleinfo$Age)).  # not grouping here although group info bringes change 
y <- DGEList(count_data, group = age)
#sampleinfo$Sex <-relevel(sampleinfo$Sex, ref="M") ## relevel
design <- model.matrix(~ 0 + sex + sex:age, data = count_data)
design
##    sexF sexM sexF:ageP14 sexM:ageP14 sexF:ageP4 sexM:ageP4 sexF:ageP60_S
## 1     1    0           0           0          0          0             0
## 2     0    1           0           0          0          0             0
## 3     1    0           0           0          0          0             0
## 4     0    1           0           0          0          0             0
## 5     1    0           1           0          0          0             0
## 6     1    0           1           0          0          0             0
## 7     1    0           1           0          0          0             0
## 8     1    0           1           0          0          0             0
## 9     1    0           1           0          0          0             0
## 10    1    0           1           0          0          0             0
## 11    1    0           1           0          0          0             0
## 12    1    0           1           0          0          0             0
## 13    1    0           1           0          0          0             0
## 14    1    0           1           0          0          0             0
## 15    0    1           0           0          0          1             0
## 16    1    0           0           0          1          0             0
## 17    1    0           0           0          1          0             0
## 18    1    0           0           0          1          0             0
## 19    1    0           0           0          0          0             1
## 20    1    0           0           0          0          0             1
## 21    1    0           0           0          0          0             1
## 22    1    0           0           0          0          0             1
## 23    1    0           0           0          0          0             1
## 24    0    1           0           0          0          0             0
## 25    1    0           0           0          0          0             1
## 26    1    0           0           0          0          0             0
## 27    0    1           0           0          0          0             0
## 28    0    1           0           0          0          0             0
## 29    0    1           0           1          0          0             0
## 30    0    1           0           1          0          0             0
## 31    0    1           0           1          0          0             0
## 32    0    1           0           1          0          0             0
## 33    0    1           0           1          0          0             0
## 34    0    1           0           1          0          0             0
## 35    0    1           0           1          0          0             0
## 36    0    1           0           1          0          0             0
## 37    0    1           0           1          0          0             0
## 38    0    1           0           1          0          0             0
## 39    1    0           0           0          1          0             0
## 40    0    1           0           0          0          1             0
## 41    0    1           0           0          0          1             0
## 42    0    1           0           0          0          1             0
## 43    0    1           0           0          0          0             0
## 44    0    1           0           0          0          0             0
## 45    0    1           0           0          0          0             0
## 46    0    1           0           0          0          0             0
## 47    1    0           0           0          0          0             1
##    sexM:ageP60_S
## 1              0
## 2              0
## 3              0
## 4              0
## 5              0
## 6              0
## 7              0
## 8              0
## 9              0
## 10             0
## 11             0
## 12             0
## 13             0
## 14             0
## 15             0
## 16             0
## 17             0
## 18             0
## 19             0
## 20             0
## 21             0
## 22             0
## 23             0
## 24             1
## 25             0
## 26             0
## 27             0
## 28             0
## 29             0
## 30             0
## 31             0
## 32             0
## 33             0
## 34             0
## 35             0
## 36             0
## 37             0
## 38             0
## 39             0
## 40             0
## 41             0
## 42             0
## 43             1
## 44             1
## 45             1
## 46             1
## 47             0
## attr(,"assign")
## [1] 1 1 2 2 2 2 2 2
## attr(,"contrasts")
## attr(,"contrasts")$sex
## [1] "contr.treatment"
## 
## attr(,"contrasts")$age
## [1] "contr.treatment"
## Make the column names of the design matrix a bit nicer to avoid syntax error on downstream analysis
colnames(design) <- c("Female_18", "Male_18", "F14", "M14","F4", "M4","FP60_S", "MP60_S" )
design
##    Female_18 Male_18 F14 M14 F4 M4 FP60_S MP60_S
## 1          1       0   0   0  0  0      0      0
## 2          0       1   0   0  0  0      0      0
## 3          1       0   0   0  0  0      0      0
## 4          0       1   0   0  0  0      0      0
## 5          1       0   1   0  0  0      0      0
## 6          1       0   1   0  0  0      0      0
## 7          1       0   1   0  0  0      0      0
## 8          1       0   1   0  0  0      0      0
## 9          1       0   1   0  0  0      0      0
## 10         1       0   1   0  0  0      0      0
## 11         1       0   1   0  0  0      0      0
## 12         1       0   1   0  0  0      0      0
## 13         1       0   1   0  0  0      0      0
## 14         1       0   1   0  0  0      0      0
## 15         0       1   0   0  0  1      0      0
## 16         1       0   0   0  1  0      0      0
## 17         1       0   0   0  1  0      0      0
## 18         1       0   0   0  1  0      0      0
## 19         1       0   0   0  0  0      1      0
## 20         1       0   0   0  0  0      1      0
## 21         1       0   0   0  0  0      1      0
## 22         1       0   0   0  0  0      1      0
## 23         1       0   0   0  0  0      1      0
## 24         0       1   0   0  0  0      0      1
## 25         1       0   0   0  0  0      1      0
## 26         1       0   0   0  0  0      0      0
## 27         0       1   0   0  0  0      0      0
## 28         0       1   0   0  0  0      0      0
## 29         0       1   0   1  0  0      0      0
## 30         0       1   0   1  0  0      0      0
## 31         0       1   0   1  0  0      0      0
## 32         0       1   0   1  0  0      0      0
## 33         0       1   0   1  0  0      0      0
## 34         0       1   0   1  0  0      0      0
## 35         0       1   0   1  0  0      0      0
## 36         0       1   0   1  0  0      0      0
## 37         0       1   0   1  0  0      0      0
## 38         0       1   0   1  0  0      0      0
## 39         1       0   0   0  1  0      0      0
## 40         0       1   0   0  0  1      0      0
## 41         0       1   0   0  0  1      0      0
## 42         0       1   0   0  0  1      0      0
## 43         0       1   0   0  0  0      0      1
## 44         0       1   0   0  0  0      0      1
## 45         0       1   0   0  0  0      0      1
## 46         0       1   0   0  0  0      0      1
## 47         1       0   0   0  0  0      1      0
## attr(,"assign")
## [1] 1 1 2 2 2 2 2 2
## attr(,"contrasts")
## attr(,"contrasts")$sex
## [1] "contr.treatment"
## 
## attr(,"contrasts")$age
## [1] "contr.treatment"
keep <- filterByExpr(y)
y <- y[keep, , keep.lib.sizes=FALSE]
dim(y)
## [1] 12687    47
y <- calcNormFactors(y, method = "TMM")
y <- estimateDisp(y, design, robust=TRUE)
plotBCV(y)

fit <- glmQLFit(y, design, robust=TRUE)
head(fit$coefficients)
##                Female_18    Male_18         F14        M14          F4
## 0610007C21Rik  -9.649899  -8.573139  0.30495788 -0.7731417  0.10982246
## 0610007L01Rik  -9.523894  -9.753471  0.23432140  0.3873157  0.15171307
## 0610007P08Rik -10.371284 -10.725698  0.09829638  0.3703886  0.43629617
## 0610007P14Rik -10.246211  -9.509971 -0.77822732 -1.7004555 -0.22895706
## 0610007P22Rik -11.034784 -10.562801 -0.70076128 -1.1134980 -0.70705971
## 0610009B22Rik -11.299802 -10.325346 -0.13066829 -1.3919716  0.03123461
##                       M4     FP60_S     MP60_S
## 0610007C21Rik -0.9817081  0.7614027 -0.7066505
## 0610007L01Rik  0.3467170  0.1958497  0.4178045
## 0610007P08Rik  0.7361828  0.2738057  0.7871490
## 0610007P14Rik -1.0241219 -0.5889876 -1.3975521
## 0610007P22Rik -1.2745151 -0.7322822 -0.9722096
## 0610009B22Rik -1.0397484  0.7532606 -0.5399468
colnames(fit)
## [1] "Female_18" "Male_18"   "F14"       "M14"       "F4"        "M4"       
## [7] "FP60_S"    "MP60_S"
con <- makeContrasts(F_18vsF14 = F14-F4, levels=design)



res <-glmQLFTest(fit, contrast =con)
summary(decideTests(res))
##        1*F14 -1*F4
## Down          1455
## NotSig        9972
## Up            1260

Result of nested model

topTags(res)
## Coefficient:  1*F14 -1*F4 
##            logFC   logCPM         F       PValue          FDR
## Spp1   -5.035268 7.844012 247.02843 3.836219e-20 4.867012e-16
## H19    -4.997640 6.646876 140.53765 1.487423e-15 7.755379e-12
## Pmp22   2.317510 8.190749 138.02876 1.833856e-15 7.755379e-12
## Upk1b   4.847007 5.019680 129.74533 1.001635e-14 3.176934e-11
## Gpnmb  -4.044672 4.010152 117.02384 3.055514e-14 7.753060e-11
## Slc1a4 -2.623980 6.339590 110.44388 7.956584e-14 1.682420e-10
## Tnc    -4.975949 6.820992 108.42287 1.704156e-13 3.088661e-10
## Gpx3   -3.291390 4.974489  99.31117 4.425430e-13 7.018179e-10
## Rrm1   -1.636694 6.262948  95.17406 8.664240e-13 1.221369e-09
## Itgax  -2.849097 4.719643  94.37119 9.893642e-13 1.255206e-09

Rrm1 -1.636694 6.262948 95.17406 8.664240e-13 1.221369e-09

2. Factorial model

library(edgeR)
library(limma)
count_data <- read.csv('/Users/nishapaudel/Documents/developmental_Sal/Counts.csv', sep =',', header=T, row.names = 1)
sampleinfo <- read.csv("/Users/nishapaudel/Documents/developmental_Sal/NEW_design.txt", sep = ',', header = TRUE, row.names = 1, stringsAsFactors = TRUE)
sampleinfo
##           Sex   Age Treatment
## F_E18_1     F   E18         N
## M_E18_1     M   E18         N
## F_E18_3     F   E18         N
## M_E18_4     M   E18         N
## F_P14_1     F   P14         N
## F_P14_2     F   P14         N
## F_P14_3     F   P14         N
## F_P14_4     F   P14         N
## F_P14_5     F   P14         N
## F_P14_6     F   P14         N
## F_P14_7     F   P14         N
## F_P14_8     F   P14         N
## F_P14_9     F   P14         N
## F_P14_10    F   P14         N
## M_P4_1      M    P4         N
## F_P4_2      F    P4         N
## F_P4_3      F    P4         N
## F_P4_4      F    P4         N
## F_P60_S_1   F P60_S         S
## F_P60_S_2   F P60_S         S
## F_P60_S_3   F P60_S         S
## F_P60_S_4   F P60_S         S
## F_P60_S_5   F P60_S         S
## M_P60_S_5   M P60_S         S
## F_P60_S_7   F P60_S         S
## F_E18_2     F   E18         N
## M_E18_2     M   E18         N
## M_E18_3     M   E18         N
## M_P14_1     M   P14         N
## M_P14_2     M   P14         N
## M_P14_3     M   P14         N
## M_P14_4     M   P14         N
## M_P14_5     M   P14         N
## M_P14_6     M   P14         N
## M_P14_7     M   P14         N
## M_P14_8     M   P14         N
## M_P14_9     M   P14         N
## M_P14_10    M   P14         N
## F_P4_1      F    P4         N
## M_P4_2      M    P4         N
## M_P4_3      M    P4         N
## M_P4_4      M    P4         N
## M_P60_S_1   M P60_S         S
## M_P60_S_2   M P60_S         S
## M_P60_S_3   M P60_S         S
## M_P60_S_4   M P60_S         S
## F_P60_S_6   F P60_S         S
dim(count_data)
## [1] 21987    47
age <- paste(sampleinfo$Age)
age<- factor(age)
sex <- paste(sampleinfo$Sex)
sex <- factor(sex)
#group <- factor(paste0(sampleinfo$Sex, ".", sampleinfo$Age)).  # not grouping here although group info bringes change 
y <- DGEList(count_data, group = age)
#sampleinfo$Sex <-relevel(sampleinfo$Sex, ref="M") ## relevel
design <- model.matrix(~ 0+ sex*age)
design
##    sexF sexM ageP14 ageP4 ageP60_S sexM:ageP14 sexM:ageP4 sexM:ageP60_S
## 1     1    0      0     0        0           0          0             0
## 2     0    1      0     0        0           0          0             0
## 3     1    0      0     0        0           0          0             0
## 4     0    1      0     0        0           0          0             0
## 5     1    0      1     0        0           0          0             0
## 6     1    0      1     0        0           0          0             0
## 7     1    0      1     0        0           0          0             0
## 8     1    0      1     0        0           0          0             0
## 9     1    0      1     0        0           0          0             0
## 10    1    0      1     0        0           0          0             0
## 11    1    0      1     0        0           0          0             0
## 12    1    0      1     0        0           0          0             0
## 13    1    0      1     0        0           0          0             0
## 14    1    0      1     0        0           0          0             0
## 15    0    1      0     1        0           0          1             0
## 16    1    0      0     1        0           0          0             0
## 17    1    0      0     1        0           0          0             0
## 18    1    0      0     1        0           0          0             0
## 19    1    0      0     0        1           0          0             0
## 20    1    0      0     0        1           0          0             0
## 21    1    0      0     0        1           0          0             0
## 22    1    0      0     0        1           0          0             0
## 23    1    0      0     0        1           0          0             0
## 24    0    1      0     0        1           0          0             1
## 25    1    0      0     0        1           0          0             0
## 26    1    0      0     0        0           0          0             0
## 27    0    1      0     0        0           0          0             0
## 28    0    1      0     0        0           0          0             0
## 29    0    1      1     0        0           1          0             0
## 30    0    1      1     0        0           1          0             0
## 31    0    1      1     0        0           1          0             0
## 32    0    1      1     0        0           1          0             0
## 33    0    1      1     0        0           1          0             0
## 34    0    1      1     0        0           1          0             0
## 35    0    1      1     0        0           1          0             0
## 36    0    1      1     0        0           1          0             0
## 37    0    1      1     0        0           1          0             0
## 38    0    1      1     0        0           1          0             0
## 39    1    0      0     1        0           0          0             0
## 40    0    1      0     1        0           0          1             0
## 41    0    1      0     1        0           0          1             0
## 42    0    1      0     1        0           0          1             0
## 43    0    1      0     0        1           0          0             1
## 44    0    1      0     0        1           0          0             1
## 45    0    1      0     0        1           0          0             1
## 46    0    1      0     0        1           0          0             1
## 47    1    0      0     0        1           0          0             0
## attr(,"assign")
## [1] 1 1 2 2 2 3 3 3
## attr(,"contrasts")
## attr(,"contrasts")$sex
## [1] "contr.treatment"
## 
## attr(,"contrasts")$age
## [1] "contr.treatment"
colnames(design) <- c("F18", "M18", "F14", "F4","FP60_S","M14", "M4", "MP60_S" )
design
##    F18 M18 F14 F4 FP60_S M14 M4 MP60_S
## 1    1   0   0  0      0   0  0      0
## 2    0   1   0  0      0   0  0      0
## 3    1   0   0  0      0   0  0      0
## 4    0   1   0  0      0   0  0      0
## 5    1   0   1  0      0   0  0      0
## 6    1   0   1  0      0   0  0      0
## 7    1   0   1  0      0   0  0      0
## 8    1   0   1  0      0   0  0      0
## 9    1   0   1  0      0   0  0      0
## 10   1   0   1  0      0   0  0      0
## 11   1   0   1  0      0   0  0      0
## 12   1   0   1  0      0   0  0      0
## 13   1   0   1  0      0   0  0      0
## 14   1   0   1  0      0   0  0      0
## 15   0   1   0  1      0   0  1      0
## 16   1   0   0  1      0   0  0      0
## 17   1   0   0  1      0   0  0      0
## 18   1   0   0  1      0   0  0      0
## 19   1   0   0  0      1   0  0      0
## 20   1   0   0  0      1   0  0      0
## 21   1   0   0  0      1   0  0      0
## 22   1   0   0  0      1   0  0      0
## 23   1   0   0  0      1   0  0      0
## 24   0   1   0  0      1   0  0      1
## 25   1   0   0  0      1   0  0      0
## 26   1   0   0  0      0   0  0      0
## 27   0   1   0  0      0   0  0      0
## 28   0   1   0  0      0   0  0      0
## 29   0   1   1  0      0   1  0      0
## 30   0   1   1  0      0   1  0      0
## 31   0   1   1  0      0   1  0      0
## 32   0   1   1  0      0   1  0      0
## 33   0   1   1  0      0   1  0      0
## 34   0   1   1  0      0   1  0      0
## 35   0   1   1  0      0   1  0      0
## 36   0   1   1  0      0   1  0      0
## 37   0   1   1  0      0   1  0      0
## 38   0   1   1  0      0   1  0      0
## 39   1   0   0  1      0   0  0      0
## 40   0   1   0  1      0   0  1      0
## 41   0   1   0  1      0   0  1      0
## 42   0   1   0  1      0   0  1      0
## 43   0   1   0  0      1   0  0      1
## 44   0   1   0  0      1   0  0      1
## 45   0   1   0  0      1   0  0      1
## 46   0   1   0  0      1   0  0      1
## 47   1   0   0  0      1   0  0      0
## attr(,"assign")
## [1] 1 1 2 2 2 3 3 3
## attr(,"contrasts")
## attr(,"contrasts")$sex
## [1] "contr.treatment"
## 
## attr(,"contrasts")$age
## [1] "contr.treatment"
keep <- filterByExpr(y)
y <- y[keep, , keep.lib.sizes=FALSE]
dim(y)
## [1] 12687    47
y <- calcNormFactors(y, method = "TMM")
y <- estimateDisp(y, design, robust=TRUE)
plotBCV(y)

fit <- glmQLFit(y, design, robust=TRUE)
head(fit$coefficients)
##                      F18        M18         F14          F4     FP60_S
## 0610007C21Rik  -9.649899  -8.573139  0.30495788  0.10982246  0.7614027
## 0610007L01Rik  -9.523894  -9.753471  0.23432140  0.15171307  0.1958497
## 0610007P08Rik -10.371284 -10.725698  0.09829638  0.43629617  0.2738057
## 0610007P14Rik -10.246211  -9.509971 -0.77822732 -0.22895706 -0.5889876
## 0610007P22Rik -11.034784 -10.562801 -0.70076128 -0.70705971 -0.7322822
## 0610009B22Rik -11.299802 -10.325346 -0.13066829  0.03123461  0.7532606
##                      M14         M4     MP60_S
## 0610007C21Rik -1.0780996 -1.0915306 -1.4680532
## 0610007L01Rik  0.1529943  0.1950039  0.2219548
## 0610007P08Rik  0.2720923  0.2998866  0.5133433
## 0610007P14Rik -0.9222282 -0.7951648 -0.8085645
## 0610007P22Rik -0.4127368 -0.5674554 -0.2399274
## 0610009B22Rik -1.2613033 -1.0709831 -1.2932074
con <- makeContrasts(F_18vsF14 = F14-F4, levels=design)
res <-glmQLFTest(fit, contrast =con)
summary(decideTests(res))
##        1*F14 -1*F4
## Down          1455
## NotSig        9972
## Up            1260
#qlf <- glmQLFTest(fit, coef=2)

Result of Factorial model

topTags(res)
## Coefficient:  1*F14 -1*F4 
##            logFC   logCPM         F       PValue          FDR
## Spp1   -5.035268 7.844012 247.02843 3.836219e-20 4.867012e-16
## H19    -4.997640 6.646876 140.53765 1.487423e-15 7.755379e-12
## Pmp22   2.317510 8.190749 138.02876 1.833856e-15 7.755379e-12
## Upk1b   4.847007 5.019680 129.74533 1.001635e-14 3.176934e-11
## Gpnmb  -4.044672 4.010152 117.02384 3.055514e-14 7.753060e-11
## Slc1a4 -2.623980 6.339590 110.44388 7.956584e-14 1.682420e-10
## Tnc    -4.975949 6.820992 108.42287 1.704156e-13 3.088661e-10
## Gpx3   -3.291390 4.974489  99.31117 4.425430e-13 7.018179e-10
## Rrm1   -1.636694 6.262948  95.17406 8.664240e-13 1.221369e-09
## Itgax  -2.849097 4.719643  94.37119 9.893642e-13 1.255206e-09

Rrm1 -1.636694 6.262948 95.17406 8.664240e-13 1.221369e-0

Result of grouping model

topTags(res)
## Coefficient:  1*F14 -1*F4 
##            logFC   logCPM         F       PValue          FDR
## Spp1   -5.035268 7.844012 247.02843 3.836219e-20 4.867012e-16
## H19    -4.997640 6.646876 140.53765 1.487423e-15 7.755379e-12
## Pmp22   2.317510 8.190749 138.02876 1.833856e-15 7.755379e-12
## Upk1b   4.847007 5.019680 129.74533 1.001635e-14 3.176934e-11
## Gpnmb  -4.044672 4.010152 117.02384 3.055514e-14 7.753060e-11
## Slc1a4 -2.623980 6.339590 110.44388 7.956584e-14 1.682420e-10
## Tnc    -4.975949 6.820992 108.42287 1.704156e-13 3.088661e-10
## Gpx3   -3.291390 4.974489  99.31117 4.425430e-13 7.018179e-10
## Rrm1   -1.636694 6.262948  95.17406 8.664240e-13 1.221369e-09
## Itgax  -2.849097 4.719643  94.37119 9.893642e-13 1.255206e-09

Rrm1 -1.636694 6.262948 95.17406 8.664240e-13 1.221369e-09

Session information

sessionInfo()
## R version 4.3.0 (2023-04-21)
## Platform: aarch64-apple-darwin20 (64-bit)
## Running under: macOS 14.0
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib 
## LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## time zone: Australia/Melbourne
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] edgeR_3.42.4 limma_3.56.2
## 
## loaded via a namespace (and not attached):
##  [1] digest_0.6.33     R6_2.5.1          fastmap_1.1.1     xfun_0.40        
##  [5] lattice_0.21-8    splines_4.3.0     cachem_1.0.8      knitr_1.43       
##  [9] htmltools_0.5.6   rmarkdown_2.24    cli_3.6.1         grid_4.3.0       
## [13] sass_0.4.7        jquerylib_0.1.4   statmod_1.5.0     compiler_4.3.0   
## [17] highr_0.10        rstudioapi_0.15.0 tools_4.3.0       evaluate_0.21    
## [21] bslib_0.5.1       Rcpp_1.0.11       yaml_2.3.7        locfit_1.5-9.8   
## [25] rlang_1.1.1       jsonlite_1.8.7
getwd()
## [1] "/Users/nishapaudel"