DefaultAssay(SO_micro) <- "RNA"
module_list <- list(
Homeostatic = c(
"CX3CR1", "P2RY12", "TMEM119", "CSF1R", "HEXB", "TGFBR1"
),
DAM = c(
"APOE", "TREM2", "CTSB", "CTSD", "LGALS3", "LPL", "GPNMB", "SPP1"
),
Inflammatory_NFkB = c(
"NFKBIA", "NFKBIZ", "TNFAIP3", "IL1B", "TNF", "CCL2", "CXCL8", "CXCL10"
),
Complement = c(
"C1QA", "C1QB", "C1QC", "C3", "C4A", "C4B", "CFH", "CD74"
),
Antigen_Presentation = c(
"HLA-DRA", "HLA-DRB1", "HLA-DPA1", "HLA-DPB1", "HLA-A", "HLA-B", "HLA-C", "CD74"
),
Lysosomal_Phagosome = c(
"CTSB", "CTSD", "CTSL", "LAMP1", "LAMP2", "CD68", "TYROBP", "FCGR3A"
),
Oxidative_Stress = c(
"HMOX1", "NQO1", "SOD1", "SOD2", "GPX1", "PRDX1", "PRDX2", "TXN"
),
Mitochondrial_Stress = c(
"PINK1", "PRKN", "PARK7", "BNIP3", "BNIP3L", "SQSTM1", "OPTN"
),
Proteostasis_HSR = c(
"HSPA1A", "HSPA1B", "HSPA6", "HSPH1", "HSP90AA1", "DNAJB1", "BAG3", "HSPD1"
),
Interferon = c(
"IFIT1", "IFIT2", "IFIT3", "ISG15", "MX1", "OAS1", "STAT1", "IRF7"
)
)
for (mod_name in names(module_list)) {
genes_present <- intersect(module_list[[mod_name]], rownames(SO_micro))
if (length(genes_present) >= 2) {
SO_micro <- AddModuleScore(
SO_micro,
features = list(genes_present),
name = paste0(mod_name, "_Score"),
assay = "RNA",
verbose = FALSE
)
cat(mod_name, ": used", length(genes_present), "of", length(module_list[[mod_name]]), "genes\n")
} else {
cat(mod_name, ": skipped (fewer than 2 genes present)\n")
}
}