library(DESeq2)
Counts <- read.delim("count_table.csv", header = TRUE, row.names = 1, sep = ",")
Counts <- Counts[which(rowSums(Counts) > 0),]
condition <- factor(c("C","C","C","C", "S","S","S","S"))
coldata <- data.frame(row.names = colnames(Counts), condition)
dds <- DESeqDataSetFromMatrix(countData = Counts, colData = coldata, design = ~condition)
dds <- DESeq(dds)
res <- results(dds, contrast = c("condition", "S", "C"))
res <- na.omit(res)
res <- res[res$baseMean > 50,]
res
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("org.Hs.eg.db") #org.Mm.eg.db for mouse


if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("clusterProfiler")


if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("AnnotationDbi")
library(org.Hs.eg.db)
library(clusterProfiler)
res <- res[order(-res$stat),]
res
gene_list <- res$stat
names(gene_list) <- rownames(res)
gene_list
gse <- gseGO(gene_list,
             ont = "BP",
             keyType = "ENSEMBL",
             OrgDb = "org.Hs.eg.db",
             eps = 1e-300)
as.data.frame(gse)
fit <- gseaplot(gse, geneSetID = 1)

png("gsea.png", res = 250, width = 2000, height = 1300)
print(fit)
dev.off()

fit
LS0tCnRpdGxlOiAiR1NFQSBwbG90IHVzaW5nIERFU2VxMiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkoREVTZXEyKQpDb3VudHMgPC0gcmVhZC5kZWxpbSgiY291bnRfdGFibGUuY3N2IiwgaGVhZGVyID0gVFJVRSwgcm93Lm5hbWVzID0gMSwgc2VwID0gIiwiKQpDb3VudHMgPC0gQ291bnRzW3doaWNoKHJvd1N1bXMoQ291bnRzKSA+IDApLF0KY29uZGl0aW9uIDwtIGZhY3RvcihjKCJDIiwiQyIsIkMiLCJDIiwgIlMiLCJTIiwiUyIsIlMiKSkKY29sZGF0YSA8LSBkYXRhLmZyYW1lKHJvdy5uYW1lcyA9IGNvbG5hbWVzKENvdW50cyksIGNvbmRpdGlvbikKZGRzIDwtIERFU2VxRGF0YVNldEZyb21NYXRyaXgoY291bnREYXRhID0gQ291bnRzLCBjb2xEYXRhID0gY29sZGF0YSwgZGVzaWduID0gfmNvbmRpdGlvbikKZGRzIDwtIERFU2VxKGRkcykKcmVzIDwtIHJlc3VsdHMoZGRzLCBjb250cmFzdCA9IGMoImNvbmRpdGlvbiIsICJTIiwgIkMiKSkKcmVzIDwtIG5hLm9taXQocmVzKQpyZXMgPC0gcmVzW3JlcyRiYXNlTWVhbiA+IDUwLF0KYGBgCgpgYGB7cn0KcmVzCmBgYAoKCmBgYHtyfQppZiAoIXJlcXVpcmVOYW1lc3BhY2UoIkJpb2NNYW5hZ2VyIiwgcXVpZXRseSA9IFRSVUUpKQogICAgaW5zdGFsbC5wYWNrYWdlcygiQmlvY01hbmFnZXIiKQoKQmlvY01hbmFnZXI6Omluc3RhbGwoIm9yZy5Icy5lZy5kYiIpICNvcmcuTW0uZWcuZGIgZm9yIG1vdXNlCgoKaWYgKCFyZXF1aXJlKCJCaW9jTWFuYWdlciIsIHF1aWV0bHkgPSBUUlVFKSkKICAgIGluc3RhbGwucGFja2FnZXMoIkJpb2NNYW5hZ2VyIikKCkJpb2NNYW5hZ2VyOjppbnN0YWxsKCJjbHVzdGVyUHJvZmlsZXIiKQoKCmlmICghcmVxdWlyZSgiQmlvY01hbmFnZXIiLCBxdWlldGx5ID0gVFJVRSkpCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJCaW9jTWFuYWdlciIpCgpCaW9jTWFuYWdlcjo6aW5zdGFsbCgiQW5ub3RhdGlvbkRiaSIpCmBgYAoKCmBgYHtyfQpsaWJyYXJ5KG9yZy5Icy5lZy5kYikKbGlicmFyeShjbHVzdGVyUHJvZmlsZXIpCmBgYAoKCgoKYGBge3J9CnJlcyA8LSByZXNbb3JkZXIoLXJlcyRzdGF0KSxdCnJlcwpgYGAKCmBgYHtyfQpnZW5lX2xpc3QgPC0gcmVzJHN0YXQKbmFtZXMoZ2VuZV9saXN0KSA8LSByb3duYW1lcyhyZXMpCmdlbmVfbGlzdApgYGAKCgoKYGBge3J9CmdzZSA8LSBnc2VHTyhnZW5lX2xpc3QsCiAgICAgICAgICAgICBvbnQgPSAiQlAiLAogICAgICAgICAgICAga2V5VHlwZSA9ICJFTlNFTUJMIiwKICAgICAgICAgICAgIE9yZ0RiID0gIm9yZy5Icy5lZy5kYiIsCiAgICAgICAgICAgICBlcHMgPSAxZS0zMDApCmBgYAoKYGBge3J9CmFzLmRhdGEuZnJhbWUoZ3NlKQpgYGAKCgpgYGB7cn0KZml0IDwtIGdzZWFwbG90KGdzZSwgZ2VuZVNldElEID0gMSkKCnBuZygiZ3NlYS5wbmciLCByZXMgPSAyNTAsIHdpZHRoID0gMjAwMCwgaGVpZ2h0ID0gMTMwMCkKcHJpbnQoZml0KQpkZXYub2ZmKCkKCmZpdApgYGAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo=