首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >跟着顶刊学习单细胞CD8T细功能基因集评分!

跟着顶刊学习单细胞CD8T细功能基因集评分!

原创
作者头像
生信医道
发布2025-04-10 10:56:48
发布2025-04-10 10:56:48
2340
举报
文章被收录于专栏:顶刊美图顶刊美图单细胞分享

点击这里,后台回复20250410获取示例示例数据和学习资料

前言

卡卡继续带着大家在顶刊挖图,今天学习的仍然是这篇泛癌T细胞的文章。先上图:对CD8T细胞进行功能评分并且绘制热图

e, Heat map illustrating expression of 19 curated gene signatures

across CD8+ T cell clusters. Heat map was generated based on the scaled gene

signature scores.

文章来源:

Pan-cancer T cell atlas links a cellular stress response state to immunotherapy resistance

原文章补充材料里面有用到的评分基因集,这里卡卡已经为大家下载整理好了,后台回复20250410获取CD8-markers.csv

实战

加载单细胞数据集

代码语言:r
复制
# 加载必要的库
library(Seurat)
library(tidyverse)
library(pheatmap)
library(scales) # 用于rescale函数
##这里加载自己的CD8T细胞处理好的Seurat对象即可
load("CD8_Obj.Rdata")

读取CD8T细胞功能基因集

代码语言:r
复制
# 设置输出路径
figurePath <- "./figures" # 输出图表的目录
dir.create(figurePath, showWarnings = FALSE, recursive = TRUE)
##将seurat_clusters设置为因子类型
CD8_Obj$seurat_clusters=as.factor(CD8_Obj$seurat_clusters)
Idents(CD8_Obj) <- CD8_Obj$seurat_clusters

# 读取标记基因 - 正确处理宽格式CSV
CD8_markers <- read_csv("CD8-markers.csv", skip = 1)  # 如果第一行是标题行,跳过它

# 将宽格式转换为标记基因列表
marker.list <- list()
names(marker.list[1])
for(col_name in colnames(CD8_markers)) {
  # 提取非NA的基因
  genes <- CD8_markers[[col_name]]
  genes <- genes[!is.na(genes) & genes != ""]
  
  # 替换列名中的特殊字符
  clean_name <- gsub("/", ":", col_name)
  
  # 添加到列表
  if(length(genes) > 0) {
    marker.list[[clean_name]] <- genes
  }
}

基因集评分

代码语言:r
复制
CD8_Obj <-  AddModuleScore(CD8_Obj,
                           features = marker.list,
                           ctrl = 5,
                           name = "FunctionScore")
for(i in 1:length(marker.list)){
  colnames(CD8_Obj@meta.data)[colnames(CD8_Obj@meta.data) == paste0("FunctionScore", i)] <- names(marker.list)[i]
}
Idents(CD8_Obj) <- CD8_Obj$seurat_clusters
Differentiation <- c("Naive", "Activation:Effector function", "Exhaustion")
Function <- c("TCR Signaling", "Cytotoxicity", "Cytokine:Cytokine receptor",
              "Chemokine:Chemokine receptor", "Senescence", "Anergy",
              "NFKB Signaling", "Stress response", "MAPK Signaling", "Adhesion",
              "IFN Response")
Metabolism <- c("Oxidative phosphorylation", "Glycolysis", "Fatty acid metabolism")
Apoptosis <- c("Pro-apoptosis", "Anti-apoptosis")
MarkerNameVector <- c(Differentiation, Function, Metabolism, Apoptosis)
FunctionScoreMatrix <- matrix(0,
                              ncol = length(unique(CD8_Obj$seurat_clusters)),
                              nrow = length(marker.list))
colnames(FunctionScoreMatrix) <- paste0("CD8_", 0:10)
rownames(FunctionScoreMatrix) <- MarkerNameVector
for(ci in 1:ncol(FunctionScoreMatrix)){
  for(ri in 1:nrow(FunctionScoreMatrix)){
    FunctionVec <- as_tibble(CD8_Obj@meta.data) %>% pull(MarkerNameVector[ri])
    fv <- mean(FunctionVec[CD8_Obj$seurat_clusters == levels(CD8_Obj$seurat_clusters)[ci]])
    FunctionScoreMatrix[ri, ci] <- fv
  }
}
FunctionScoreMatrix <- t(apply(FunctionScoreMatrix, 1, rescale, to=c(-1, 1)))
orderC =c(0,1,2,3,4,5,6,7,8,9,10)  # 指定因子水平的顺序 
orderC_with_prefix = paste0("CD8_", orderC)  # 将 "HCC_" 前缀添加到每个元素
FunctionScoreMatrix <- FunctionScoreMatrix[,orderC_with_prefix]

colnames(FunctionScoreMatrix) <- paste0("CD8_", 0:10)和orderC根据实际的seurat_cluster的数量进行修改

绘制热图

代码语言:r
复制
my.breaks <- c(seq(-1, 0, by=0.1), seq(0.1, 1, by=0.1))
my.colors <- c(
  colorRampPalette(colors = c("#6DCCFD", "white"))(length(my.breaks)/2),
  colorRampPalette(colors = c("white", "#FD9AA0"))(length(my.breaks)/2))
## cellType_col <- data.frame(cell.type = CD8_Obj_CellType)
## rownames(cellType_col) <- colnames(FunctionScoreMatrix)
signatureType_row <- data.frame(Signature.type = c(
  rep("Differentiation", length(Differentiation)),
  rep("Function", length(Function)),
  rep("Metabolism", length(Metabolism)),
  rep("Apoptosis", length(Apoptosis))))
rownames(signatureType_row) <- MarkerNameVector
pheatmap(FunctionScoreMatrix,
         show_colnames = T,
         show_rownames = T,
         ## annotation_col = cellType_col,
         annotation_row = signatureType_row,
         gaps_row = c(3, 14, 17),
         cluster_rows = F,
         cluster_cols = F,
         breaks = my.breaks,
         color = my.colors,
         border_color = "NA",
         fontsize = 8,
         width = 5,
         height = 3.8,
         filename = file.path(figurePath, paste0("CD8_FunctionScore_heatmap.pdf")))

后续可以进行AI修整图片,即可得到原文效果

结束语

这篇推文就到此结束,用这篇顶刊收集到的基因集对CD8T细胞功能进行评分,可以用到自己的分析当中去。

当然这里用到的CD8-markers.csv基因集卡卡已经帮大家整理好了,后台回复20250410自动回复获取!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 实战
    • 加载单细胞数据集
    • 读取CD8T细胞功能基因集
    • 基因集评分
    • 绘制热图
    • 后续可以进行AI修整图片,即可得到原文效果
  • 结束语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档