## R codes using R 4.1.1
# DESeq2 ver 1.34.0

library("DESeq2")
setwd("/Users/hitoshitsujimoto/Desktop/Mg_project/STe/")
countData <- as.matrix(read.csv("./gene_count_matrix.csv", row.names="gene_id"))
colData <- read.csv("PHENO_DATA.csv", row.names=1)

## Validation step ##
all(rownames(colData) %in% colnames(countData))
cD <-countData[, rownames(colData)]
all(rownames(colData)==colnames(cD))

dds <- DESeqDataSetFromMatrix(countData = cD, colData = colData, design = ~ treatment)
# "treatment" is the column values of "treatment column" in PHENO_DATA.csv which contains timepoint values

dds <- DESeq(dds)
res <- results(dds)
vsd <- rld(dds, blind=FALSE)

# PCA plot with two parameters #
# timepoint and day
library(ggplot2)
pcaData <- plotPCA(rld, intgroup=c("timepoint", "day"), returnData=TRUE)
## y axis reverse to plot clockwise (start at top)
ggplot(pcaData, aes(PC1, PC2, color=timepoint, shape=day)) + 
  geom_point(size=3) + 
  xlab(paste0("PC1: ", percentVar[1], "% variance")) + 
  ylab(paste0("PC2: ", percentVar[2], "%variance")) + 
  scale_y_reverse() + 
  coord_fixed()

# DGE tables
# other timepoints to Mg0 (NBF)
Mg1Mg0 <- results(dds, contrast=c('treatment','Mg1','Mg0'))
Mg4Mg0 <- results(dds, contrast=c('treatment','Mg4','Mg0'))
Mg6Mg0 <- results(dds, contrast=c('treatment','Mg6','Mg0'))
Mg8Mg0 <- results(dds, contrast=c('treatment','Mg8','Mg0'))
Mg12Mg0 <- results(dds, contrast=c('treatment','Mg12','Mg0'))
Mg18Mg0 <- results(dds, contrast=c('treatment','Mg18','Mg0'))
Mg24Mg0 <- results(dds, contrast=c('treatment','Mg24','Mg0'))
Mg36Mg0 <- results(dds, contrast=c('treatment','Mg36','Mg0'))
Mg48Mg0 <- results(dds, contrast=c('treatment','Mg48','Mg0'))
Mg72Mg0 <- results(dds, contrast=c('treatment','Mg72','Mg0'))
# neighboring timepoints
Mg4_1 <- results(dds, contrast=c('treatment','Mg4','Mg1'))
Mg6_4 <- results(dds, contrast=c('treatment','Mg6','Mg4'))
Mg8_6 <- results(dds, contrast=c('treatment','Mg8','Mg6'))
Mg12_8 <- results(dds, contrast=c('treatment','Mg12','Mg8'))
Mg18_12 <- results(dds, contrast=c('treatment','Mg18','Mg12'))
Mg24_18 <- results(dds, contrast=c('treatment','Mg24','Mg18'))
Mg36_24 <- results(dds, contrast=c('treatment','Mg36','Mg24'))
Mg48_36 <- results(dds, contrast=c('treatment','Mg48','Mg36'))
Mg72_48 <- results(dds, contrast=c('treatment','Mg72','Mg48'))

#export results table
write.table(as.data.frame(Mg1Mg0), sep='\t', file="Mg1vMg0.txt")
write.table(as.data.frame(Mg4Mg0), sep='\t', file="Mg4vMg0.txt")
write.table(as.data.frame(Mg6Mg0), sep='\t', file="Mg6vMg0.txt")
write.table(as.data.frame(Mg8Mg0), sep='\t', file="Mg8vMg0.txt")
write.table(as.data.frame(Mg12Mg0), sep='\t', file="Mg12vMg0.txt")
write.table(as.data.frame(Mg18Mg0), sep='\t', file="Mg18vMg0.txt")
write.table(as.data.frame(Mg24Mg0), sep='\t', file="Mg24vMg0.txt")
write.table(as.data.frame(Mg36Mg0), sep='\t', file="Mg36vMg0.txt")
write.table(as.data.frame(Mg48Mg0), sep='\t', file="Mg48vMg0.txt")
write.table(as.data.frame(Mg72Mg0), sep='\t', file="Mg72vMg0.txt")
write.table(as.data.frame(Mg4_1), sep='\t', file="Mg4_1.txt")
write.table(as.data.frame(Mg6_4), sep='\t', file="Mg6_4.txt")
write.table(as.data.frame(Mg8_6), sep='\t', file="Mg8_6.txt")
write.table(as.data.frame(Mg12_8), sep='\t', file="Mg12_8.txt")
write.table(as.data.frame(Mg18_12), sep='\t', file="Mg18_12.txt")
write.table(as.data.frame(Mg24_18), sep='\t', file="Mg24_18.txt")
write.table(as.data.frame(Mg36_24), sep='\t', file="Mg36_24.txt")
write.table(as.data.frame(Mg48_36), sep='\t', file="Mg48_36.txt")
write.table(as.data.frame(Mg72_48), sep='\t', file="Mg72_48.txt")

# To export normalized counts (cpm)
normcounts <- counts(dds, normalized=T)
write.table(normcounts, file="MgSTe_cpm.txt", sep="\t", quote=FALSE,)
