sce <- as.SingleCellExperiment(merged)
sce <- sce[, sce$tissue != 'AdjNormal']
reducedDim(sce, "UMAP") <- merged@reductions$umap@cell.embeddings[
colnames(sce),
]
reducedDim(sce, "PCA") <- merged@reductions$integrated.rpca@cell.embeddings[
colnames(sce),
]
milo <- Milo(sce)
traj_milo <- buildGraph(milo, k = 10, d = 30, reduced.dim = "PCA")
traj_milo <- makeNhoods(traj_milo, prop = 0.1, k = 10, d = 30, refined = TRUE)
traj_milo <- countCells(
traj_milo,
meta.data = data.frame(colData(traj_milo)),
sample = "sample_id"
)
traj_design <- data.frame(colData(traj_milo))[, c("sample_id", "tissue")]
traj_design <- distinct(traj_design)
rownames(traj_design) <- NULL
traj_design <- traj_design %>% column_to_rownames('sample_id')
traj_milo <- calcNhoodDistance(traj_milo, d = 30, reduced.dim = 'PCA')
da_results <- testNhoods(traj_milo, design = ~tissue, design.df = traj_design)
traj_milo <- buildNhoodGraph(traj_milo)
qsave(traj_milo, "outputs/Misc/spatial_milo.qs")
da_results <- annotateNhoods(
traj_milo,
da_results,
coldata_col = "domain_annotation"
)
da_results <- da_results %>%
mutate(
category = ifelse(
domain_annotation %in%
c(
"D1:Acinar1",
"D2:Acinar2",
"D3:Acinar3",
"D4:Ducts",
"D5:PanIN/GLTumor",
"D6:PDTumor"
),
"Epithelial Domains",
ifelse(
domain_annotation %in%
c(
"D7:Fibro1",
"D8:Fibro2",
"D9:Fibro3",
"D10:Fibro4",
"D11:Perivascular",
"D12:Adipose",
"D13:Endocrine",
"D14:Neural"
),
"Non-Immune Stroma Domains",
"Immune Stroma Domains"
)
)
)
da_results$domain_annotation <- factor(
da_results$domain_annotation,
levels = c(
"D1:Acinar1",
"D2:Acinar2",
"D3:Acinar3",
"D4:Ducts",
"D5:PanIN/GLTumor",
"D6:PDTumor",
"D7:Fibro1",
"D8:Fibro2",
"D9:Fibro3",
"D10:Fibro4",
"D11:Perivascular",
"D12:Adipose",
"D13:Endocrine",
"D14:Neural",
"D15:TLS",
"D16:Plasma_Cells",
"D17:Macrophages"
)
)
da_results$category <- factor(
da_results$category,
levels = c(
"Immune Stroma Domains",
"Non-Immune Stroma Domains",
"Epithelial Domains"
)
)
qsave(da_results, "../outputs/Spatial_Clustering/spatial_milo_da_results.qs")