File size: 3,612 Bytes
4cdf52a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
adult.inte$maintype_sample <- paste(adult.inte$Maintype, adult.inte$sample, sep = "|")
library(dplyr)
table(adult.inte$sample)
adult.inte$sample <- recode(adult.inte$sample, 
                            "rAAV_MOCK" = "control_PFC", 
                            "RV_MOCK" = "Control_V1")
Idents(adult.inte) <- 'maintype_sample'

#build the tree
adult.inte<- BuildClusterTree(object = adult.inte, dims=1:10)
phy <- Tool(object = adult.inte, slot = 'BuildClusterTree')
p5<-plot(phy)
p5
unique(adult.inte$maintype_sample)

#MetaNeighbor
library(SingleCellExperiment)
library(MetaNeighbor)

# 创建 colData
new_colData <- data.frame(
  study_id = adult.inte$sample,
  cell_type = adult.inte$Maintype # 确保 row.names 对齐
)
new_colData$study_id <- as.character(new_colData$study_id)
new_colData$study_id[which(new_colData$study_id %in% c("Control_V1","RV_infected"))] <- "VISp"
new_colData$study_id[which(new_colData$study_id %in% c("control_PFC","rAAV_infected"))] <- "PFC"

dat <- SingleCellExperiment(adult.inte@assays$integrated@data,
  colData = new_colData
)
var_genes <- VariableFeatures(adult.inte)  # 替换为实际的高变基因获取方式
# 运行 MetaNeighbor
celltype_NV = MetaNeighborUS(
  var_genes = var_genes, 
  dat = dat, # 确保 dat 是矩阵
  study_id = dat$study_id,
  cell_type = dat$cell_type,
  fast_version = TRUE
)

library(pheatmap)
pheatmap(celltype_NV, cluster_rows=T, cluster_cols=F, display_numbers=T)

cor_inter<-celltype_NV[grep('VISp|PFC',rownames(celltype_NV),value = T),
                       grep('VISp|PFC',rownames(celltype_NV),value = T)]
p<-pheatmap(cor_inter, cluster_rows=T, cluster_cols=T, display_numbers=T,fontsize_number = 5,silent = T)
cluster_order <- rownames(cor_inter)[p$tree_row$order] 

pheatmap(cor_inter, cluster_rows=T, cluster_cols=T, display_numbers=T, 
         fontsize_number=5, fontsize_row=8, fontsize_col=8)
p5<-pheatmap(cor_inter[cluster_order, cluster_order], 
         cluster_rows=F, cluster_cols=F, display_numbers=T, fontsize_number=5)

cluster_order<-c("PFC|Pvalb" ,"VISp|Pvalb","PFC|Vip/Lamp5","VISp|Vip/Lamp5","PFC|Sst" ,"VISp|Sst",
                 "PFC|Microglia","VISp|Microglia","PFC|Oligo"  ,"VISp|Oligo","PFC|Astro","VISp|Astro",
                  "VISp|L2/3IT" ,"PFC|L2/3IT","VISp|L4/5IT", "PFC|L4/5IT","PFC|L6IT","VISp|L6IT" , "VISp|L5ET","PFC|L5ET","PFC|L6CT", "VISp|L6CT","PFC|L5NP","VISp|L5NP") 
ggsave("H:/Project1_RV Receptor Projection/FIG1.皮层单细胞RV rAAV感染数据分析/p5_MetaNeighbor.pdf", 
       plot = p5, width =8, height = 8, dpi = 300)




# 提取所有共有细胞类型(PFC和VISp共有的类型)
common_types <- sub("PFC\\|", "", grep("PFC\\|", rownames(cor_inter), value = TRUE))
common_types <- common_types[common_types %in% sub("VISp\\|", "", grep("VISp\\|", rownames(cor_inter), value = TRUE))]

# 提取PFC与VISp同类型细胞的相似性得分(单向即可,因矩阵对称)
scores <- sapply(common_types, function(type) {
  cor_inter[paste0("PFC|", type), paste0("VISp|", type)]
})

# 输出所有配对得分
print(data.frame(CellType = common_types, AUROC = scores))

# 计算平均相似性得分(假设理想情况下应接近1)
mean_score <- mean(scores)
cat(sprintf("\nMean AUROC between matched cell types: %.2f\n", mean_score))

# 显著性检验:判断得分是否显著高于随机预期(假设随机预期为0.5)
t_test_result <- t.test(scores, mu = 0.5, alternative = "greater")
cat(sprintf("t-test p-value vs. random expectation (0.5): %.1e\n", t_test_result$p.value))