单细胞测序实战:CD8T细胞功能基因集评分全流程解析

单细胞与空间转录组联合分析揭示GZMK⁺ CD8⁺ T细胞促炎机制 单细胞测序技术与空间转录组学的结合正在革新免疫微环境研究。通过10x Genomics和Visium HD平台,研究者能够同时获取细胞分子特征和空间位置信息,揭示传统bulk测序难以发现的细胞互作网络。这种多组学整合方法特别适用于解析免疫细胞与间质细胞的通讯机制,其中配体-受体分析和空间共定位算法是关键分析工具。在慢性炎症研究中,发现GZMK⁺ CD8⁺ T细胞通过旁分泌信号激活成纤维细胞,形成促炎微环境并招募中性粒细胞。这一发现不仅拓展了对T细胞功能多样性的认知,也为靶向细胞互作的免疫治疗提供了新思路。 阅读详情

1. 从零开始:为什么我们要给CD8T细胞做“功能评分”?

如果你刚刚接触单细胞测序数据分析,看到“功能基因集评分”这个词可能会有点懵。这到底是在干什么?简单来说,这就像给一群学生(CD8T细胞)做一次“综合能力测评”。我们手头有一份单细胞测序数据,里面记录了成千上万个CD8T细胞各自表达了哪些基因。但基因成千上万,我们不可能一个个去看。这时候,前辈们通过大量研究,已经总结出了一些“考题集”——也就是功能基因集。比如,一套关于“细胞毒性”的考题,里面包含了穿孔素、颗粒酶等基因;另一套关于“耗竭”的考题,则包含了PD-1、TIM-3等基因。

给细胞做功能评分,就是拿着这些“考题集”,去计算每个细胞在这些“综合科目”上的得分。得分高的细胞,说明它在这个功能上比较活跃。比如,一个细胞在“细胞毒性”基因集上得分很高,那它很可能就是一个战斗力强悍的“杀手T细胞”。这么做的巨大好处是,我们能从更高维度、更功能化的视角来理解细胞群体。不再局限于看单个基因的表达高低,而是看细胞整体的功能状态。这对于在肿瘤免疫、自身免疫病等领域,深入理解CD8T细胞亚群的特性和作用,简直是神器。

我刚开始做分析的时候,总喜欢盯着差异表达基因列表看,看得头晕眼花还得不出整体结论。后来用了基因集评分方法,一下子豁然开朗,能清晰地看到不同病人或不同治疗组之间,细胞功能状态的整体差异。今天,我就手把手带你复现一篇顶刊里的经典分析图,并把这个流程掰开揉碎了讲清楚。你会发现,从数据准备、评分计算到可视化出图,每一步都有需要注意的细节和“坑”,我会把我踩过的那些都告诉你。

2. 实战准备:搭建你的分析环境与理解数据

工欲善其事,必先利其器。在开始敲代码之前,我们需要把环境和数据都准备好。这个过程看似简单,但却是后续一切分析的基础,这里出问题,后面全白搭。

2.1 核心R包安装与加载

我们的整个分析流程将完全在R语言环境中完成,主要依赖Seurat这个单细胞分析的金牌工具包。我强烈建议你使用RStudio来操作,体验会好很多。首先,我们需要安装并加载必要的R包。如果你还没安装,可以把下面这行代码的注释去掉运行。

# 安装核心包(如果尚未安装)
# install.packages(c("Seurat", "tidyverse", "pheatmap", "scales"))

安装好后,在每个分析脚本的开头,我们都需要加载它们:

# 加载必要的库
library(Seurat)      # 单细胞分析核心
library(tidyverse)   # 数据操作和绘图,包含ggplot2、dplyr等
library(pheatmap)    # 绘制漂亮的热图
library(scales)      # 提供数据缩放函数,如rescale

这里有个小经验:tidyverse是一个“包集合”,加载它之后,你就可以用非常优雅和一致的语法(比如管道操作符 %>%)来处理数据了,效率能提升不少。pheatmap是我个人最喜欢的热图包,因为它默认出来的图就很好看,自定义选项也丰富。

2.2 理解并加载你的单细胞数据

接下来是加载数据。原始文章里用的是load(“CD8_Obj.Rdata”),这里隐藏了一个关键前提:你已经有了一个处理好的、只包含CD8T细胞的Seurat对象。什么叫“处理好的”?通常意味着你已经完成了:

  1. 数据质控:过滤了低质量细胞和过多线粒体基因的细胞。
  2. 标准化与归一化。
  3. 降维聚类:使用PCA、t-SNE或UMAP,并且已经完成了细胞聚类。
  4. 细胞类型注释:并且从中提取出了CD8T细胞亚群,保存为独立的Seurat对象。

这一步是最大的分水岭。 很多新手会卡在这里,因为他们手上的数据可能还是原始的基因表达矩阵。你需要确保你的CD8_Obj已经完成了上述基础分析。你可以通过运行 CD8_Obj 来查看对象的基本信息,确认细胞数量和基因数量是否符合预期。

# 假设你的CD8T细胞Seurat对象已经保存为Rdata文件
load(“CD8_Obj.Rdata”)
# 查看对象摘要
CD8_Obj

加载成功后,我们先做一点准备工作:确保细胞聚类信息seurat_clusters被正确地设置为因子(factor),并设为当前对象的标识(Ident)。这步很重要,因为后续我们按聚类来汇总分数时,需要它是因子类型。

# 将seurat_clusters设置为因子类型
CD8_Obj$seurat_clusters <- as.factor(CD8_Obj$seurat_clusters)
# 设置当前细胞标识为聚类ID
Idents(CD8_Obj) <- CD8_Obj$seurat_clusters

3. 核心步骤一:读取与整理功能基因集

有了细胞数据,我们还需要“考题集”——功能基因集。原始文章的作者很贴心,在补充材料里提供了他们使用的19个功能基因集。我已经帮你整理成了一个CSV文件CD8-markers.csv。这个文件是“宽格式”的,每一列代表一个功能,每一行是该功能下的基因,列名就是功能名称。

3.1 读取CSV文件并处理格式

直接读取这个文件时要注意,有时CSV第一行可能是备注,我们需要跳过。用read_csv函数(来自tidyverse)可以轻松处理。

# 设置输出图片的目录,养成好习惯
figurePath <- "./figures"
dir.create(figurePath, showWarnings = FALSE, recursive = TRUE)

# 读取标记基因CSV文件,跳过可能存在的标题行
CD8_markers <- read_csv("CD8-markers.csv", skip = 1)

现在CD8_markers是一个数据框(DataFrame)。但Seurat的评分函数AddModuleScore需要的是一个列表(list),列表的每个元素是一个字符向量(即基因名),元素的名字就是功能名称。所以我们需要进行格式转换。这里有个坑:基因集名称里有时会有“/”这样的字符,这在后续做图或命名时可能会被误解为路径,所以我们最好把它替换掉,比如换成“:”。

# 初始化一个空列表,用于存放转换后的基因集
marker.list <- list()

# 循环处理CSV的每一列(即每一个功能基因集)
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
  }
}

# 查看一下我们转换好的基因集列表的前几个
head(marker.list, 3)

运行完这段代码,marker.list就应该是一个包含19个元素的命名列表了。你可以检查一下每个元素里基因的数量,确保没有空的基因集被错误地导入。

4. 核心步骤二:使用AddModuleScore进行基因集评分

这是整个流程的技术核心。我们将使用Seurat包中的AddModuleScore函数来计算每个细胞在每个功能基因集上的“得分”。这个函数的原理是什么?我打个比方:它并不是简单地把基因集中所有基因的表达值加起来。那样的话,高表达基因多的细胞永远得分高,不公平。

AddModuleScore的做法更聪明:它会为每个功能基因集,从整个表达矩阵中随机抽取一组数量相同、表达水平分布类似的“控制基因”(由参数ctrl指定,比如5组)。然后用功能基因集的平均表达值,减去这些控制基因集的平均表达值,得到最终的分数。这样就消除了基因表达量基线的影响,分数更能反映该功能基因集相对于细胞自身背景的“特异性活跃程度”。

# 进行基因集评分,ctrl参数控制用于背景对比的随机基因集数量
CD8_Obj <- AddModuleScore(CD8_Obj,
                          features = marker.list,
                          ctrl = 5, # 通常5-100之间,需要根据数据量调整
                          name = "FunctionScore")

运行完后,新的评分结果被添加到了CD8_Obj@meta.data这个细胞的元数据表中。但是,默认的列名不太友好,是FunctionScore1, FunctionScore2……我们需要把它们换成我们熟悉的基因集名称。

# 将默认的评分列名重命名为我们基因集的实际名称
for(i in 1:length(marker.list)){
  old_name <- paste0("FunctionScore", i)
  new_name <- names(marker.list)[i]
  # 在元数据中找到旧列名,替换为新列名
  colnames(CD8_Obj@meta.data)[colnames(CD8_Obj@meta.data) == old_name] <- new_name
}

现在,你可以查看CD8_Obj@meta.data的列名,应该能看到“Naive”、“Cytotoxicity”这些功能名称已经作为新列出现了。每一行是一个细胞,每一列是这个细胞在该功能上的得分。

5. 核心步骤三:整理评分矩阵,为热图做准备

我们现在有了每个细胞的分数,但热图通常展示的是细胞群体(比如每个聚类)的平均功能状态。所以我们需要把数据“聚合”一下:计算每个细胞聚类(cluster)在每个功能基因集上的平均得分。此外,原文的热图将功能分成了四大类:分化状态、免疫功能、代谢和凋亡。我们需要按照这个逻辑来整理和排序我们的数据行。

5.1 定义功能分类与排序

首先,我们按照原文的定义,把19个功能归到四个大类里,并创建一个最终的行名顺序向量。

# 定义四个大类的具体功能(名称必须与marker.list中的完全一致)
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)

5.2 计算聚类平均得分矩阵

接下来,我们创建一个空矩阵,行是功能,列是细胞聚类,然后通过双层循环,计算每个功能在每个聚类里的平均得分。

# 获取唯一的聚类ID
cluster_ids <- levels(CD8_Obj$seurat_clusters) # 注意这里用levels,能保证因子顺序
# 创建一个空矩阵
FunctionScoreMatrix <- matrix(0,
                              ncol = length(cluster_ids),
                              nrow = length(MarkerNameVector))
# 设置行名和列名
rownames(FunctionScoreMatrix) <- MarkerNameVector
colnames(FunctionScoreMatrix) <- paste0("CD8_", cluster_ids) # 给列名加个前缀

# 双层循环,计算均值
for(ci in 1:ncol(FunctionScoreMatrix)) { # 循环每个聚类
  for(ri in 1:nrow(FunctionScoreMatrix)) { # 循环每个功能
    # 从元数据中提取所有细胞在当前功能上的得分
    score_vector <- CD8_Obj@meta.data[[ MarkerNameVector[ri] ]]
    # 计算当前聚类(ci)内细胞的平均得分
    cluster_mean_score <- mean(score_vector[CD8_Obj$seurat_clusters == cluster_ids[ci]])
    # 填入矩阵
    FunctionScoreMatrix[ri, ci] <- cluster_mean_score
  }
}

这里有个非常重要的步骤:缩放(Scaling)。 直接计算出来的平均得分,不同功能之间可能数值范围差异很大。为了在热图上公平地展示,我们需要对每一行(每个功能)的数据进行缩放,通常缩放到[-1, 1]或[0, 1]的区间。这里我们使用scales包的rescale函数,缩放到[-1, 1]。

# 对矩阵的每一行进行缩放(-1到1)
FunctionScoreMatrix <- t(apply(FunctionScoreMatrix, 1, rescale, to=c(-1, 1)))

缩放后,数值1代表该功能在该聚类中表达最强(相对于其他聚类),-1代表最弱。这样,热图的颜色对比就非常清晰了。

5.3 调整聚类顺序

有时候,我们不想按照聚类ID的数字顺序(0,1,2…)来展示,可能想根据其他知识(比如发育轨迹、细胞状态)来手动排序。这时可以预先定义一个顺序向量orderC。

# 假设我们想调整聚类顺序,例如想把CD8_5和CD8_2放到前面
orderC <- c(5, 2, 0, 1, 3, 4, 6, 7, 8, 9, 10) # 请根据你的实际聚类ID修改
orderC_with_prefix <- paste0("CD8_", orderC)

# 按照新的列顺序重排矩阵
FunctionScoreMatrix <- FunctionScoreMatrix[, orderC_with_prefix]

6. 核心步骤四:绘制发表级功能热图

数据矩阵准备好了,最后一步就是把它变成一张直观、美观、可以放进论文里的热图。我们使用pheatmap包,它能提供丰富的注释和美化选项。

6.1 准备热图注释信息

原文的热图左边有颜色条,表示功能属于哪个大类(分化、功能、代谢、凋亡)。我们需要为这个注释创建一个数据框。

# 创建行注释信息(功能大类)
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

6.2 自定义颜色与断点

默认的热图颜色可能对比不够鲜明。我们可以自定义一个从蓝到白到红的渐变色,并精细控制颜色变化的断点。这能让正值(红色)和负值(蓝色)的对比非常清晰。

# 定义颜色断点:从-1到0分成10段,从0到1分成10段
my.breaks <- c(seq(-1, 0, length.out=11), seq(0.1, 1, length.out=10))
# 定义对应的颜色:-1到0用蓝色到白色,0到1用白色到红色
my.colors <- c(
  colorRampPalette(colors = c("#6DCCFD", "white"))(10), # 蓝-白渐变
  colorRampPalette(colors = c("white", "#FD9AA0"))(10)   # 白-红渐变
)

6.3 绘制并保存热图

万事俱备,调用pheatmap函数。这里参数比较多,我解释几个关键的:

  • cluster_rows/cols = F:不对行和列进行聚类排序,保持我们预设的顺序。
  • gaps_row = c(3, 14, 17):在行方向(功能)的第3行后、第14行后、第17行后画分隔线,正好对应四个大类之间的分界。
  • border_color = “NA”:去掉每个单元格的边框,让图看起来更干净。
pheatmap(FunctionScoreMatrix,
         show_colnames = T,
         show_rownames = T,
         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,                         # 输出PDF的宽度(英寸)
         height = 3.8,                      # 输出PDF的高度(英寸)
         filename = file.path(figurePath, "CD8_FunctionScore_heatmap.pdf")) # 保存

运行完这行代码,你会在之前创建的./figures文件夹里找到一个PDF格式的热图。这张图已经非常接近发表水平了。你可以把它导入到Adobe Illustrator或Inkscape这类矢量图软件中,微调字体、图例位置,或者添加最终的图表标题,就能直接用于你的文章或报告中。

7. 避坑指南与进阶思考

走完整个流程,你应该已经成功复现了分析。但在实际项目中,我遇到过不少问题,这里分享几个最常见的“坑”和解决思路。

第一个坑:评分结果全是负值或正值不明显。 这很可能是因为ctrl参数设置不合理。ctrl太小(比如1),背景噪音控制不足;太大则可能过度校正。我的经验是,对于万级别的细胞数,从5、10、20、50开始尝试,观察评分分布的变化。也可以尝试Seurat的另一函数AddModuleScore的替代方案,如AUCell或UCell包,它们用了不同的算法,有时效果更好。

第二个坑:热图看起来“糊成一团”,没有明显模式。 这可能有两个原因。一是功能基因集本身不适合你的数据,比如用的是小鼠的基因集来分析人的数据。二是细胞聚类分得不好,或者聚类分辨率不合适,导致每个聚类内部细胞异质性仍然很大。这时需要回头检查你的聚类分析,尝试不同的分辨率重新聚类。

第三个坑:如何选择或自定义基因集? 顶刊的基因集是很好的起点,但未必完全适用于你的研究场景。你可以从MSigDB、GO、KEGG等权威数据库下载通路基因集,也可以从与你疾病相关的关键文献中收集。自己构建时,切记基因集不能太大(一般建议15-500个基因),太大容易失去特异性;也不能太小,太小容易受噪声影响。

进阶思考:评分之后做什么? 功能评分不是一个终点,而是一个强大的新起点。你可以:

  1. 比较组间差异:将病人分为应答组与非应答组,比较两组间CD8T细胞在“耗竭”评分上是否有显著差异。
  2. 关联临床指标:计算每个样本的“细胞毒性”平均分,与患者的生存时间或肿瘤负荷做相关性分析。
  3. 轨迹分析:将功能评分作为细胞的一个属性,投射到拟时序轨迹上,观察功能如何随时间动态变化。

我自己的一个项目中,就是通过功能评分发现,对免疫治疗无效的患者,其肿瘤内CD8T细胞不仅“耗竭”评分高,关键的是“细胞毒性”与“耗竭”评分呈现强烈的共高表达,这是一种功能失调的状态,而不仅仅是单纯的衰竭。这个发现仅看差异基因是很难直观得出的。所以,熟练掌握这套流程,真正理解其背后的生物信息学逻辑,能为你挖掘单细胞数据打开一扇新的大门。

CD8T细胞功能评分全攻略:从顶刊基因集到热图可视化(避坑指南) 本文详细解析了CD8T细胞功能评分的完整流程,从顶刊基因集的审慎选择与本土化改造,到使用AddModuleScore等算法进行评分计算与参数调优,最终实现出版级热图的可视化。文章重点分享了基因集构建、数据标准化、批次效应处理及多维验证等关键环节的实战技巧与避坑指南,旨在帮助研究者获得可靠且具生物学意义的分析结果。 阅读详情

相关推荐

10X单细胞基因集打分实战:AUCell、UCell、singscore三大方法保姆级教程

本文提供10X单细胞基因集打分的实战教程,详细解析AUCell、UCell和singscore三大方法的原理与应用。通过PBMC数据集演示,帮助研究人员掌握抗批次效应的基因集活性评估技术,提升单细胞转录组数据分析能力,特别适合空间转录组和细胞异质性研究。

weixin_30335575的博客 258

CellMarker 2.0数据库实战:如何用10xChromium数据快速定位肝脏T细胞marker基因?

本文详细解析了如何利用10x Genomics Chromium单细胞测序数据,结合CellMarker 2.0数据库,系统性地完成肝脏T细胞及其亚群的标志基因鉴定。通过从数据质控、初步聚类到多策略交叉验证、亚群细化及功能状态探索的全流程实战,指导研究者高效、精准地定位T细胞特异性标志物,提升单细胞注释的准确性与深度。

play7的博客 763

用AUCell发现隐藏细胞亚群:乳腺癌单细胞数据分析全流程解析

本文详细解析了如何利用AUCell方法从乳腺癌单细胞RNA测序数据中发现隐藏的细胞亚群。通过基因网络活性评分和交互式可视化工具,AUCell能够识别传统方法难以检测的功能性亚群,为理解肿瘤异质性和开发精准治疗策略提供新视角。文章涵盖从数据预处理到生物学意义转化的全流程,是乳腺癌单细胞研究的实用指南。

weixin_28235513的博客 212

单细胞文献阅读--胃癌单细胞测序揭示复杂的细胞间相互作用和可选择的T细胞衰竭轨迹

记录下最近阅读的一篇于2022年8月在Nature Communications上发表的文章"scRNA-seq of gastric tumor shows complex intercellular interaction with an alternative T cell exhaustion trajectory",记录下翻译过程,以备后期随时翻阅。 摘要胃癌(GC)的肿瘤微环境(TME)对于肿瘤控制被认为很重要,但 GC 的具体特征尚未完全理解。我们生成了来自 10 位 GC 患者的匹配肿瘤周

bio_multiomics的博客 1556

单细胞RNA测序数据去污染实战:DecontX工具的应用与优化

本文详细介绍了单细胞RNA测序数据中RNA污染的识别与处理方法,重点解析了DecontX工具的双层贝叶斯模型原理及其在去污染中的优势。通过实战案例展示了从数据准备、参数调优到结果验证的完整流程,帮助研究者有效提升单细胞数据分析的准确性。文章特别强调了contamination score的动态阈值设定策略和复杂场景下的优化方案。

weixin_42520374的博客 403

单细胞注释实战:如何用SingleR和SCINA快速搞定PBMCs细胞分群(附避坑指南)

本文详细介绍了如何使用SingleR和SCINA工具高效完成PBMCs单细胞注释,包括参考数据集选择、标记基因筛选及结果验证等关键步骤。通过双工具联合作战策略和三级注释架构,显著提升注释效率和准确性,并提供了常见问题如血小板-免疫细胞双胞体陷阱的解决方案。

weixin_30825581的博客 520

课前准备--卵巢癌突变过程驱动位点特异性免疫逃避(单细胞 + 空间 + 基因组)

课前准备--卵巢癌突变过程驱动位点特异性免疫逃避(单细胞 + 空间 + 基因组)

weixin_53637133的博客 972

如何用ROGUE值优化单细胞分群?肿瘤微环境案例详解

本文详细介绍了如何利用ROGUE值这一基于熵的客观度量标准,来量化评估单细胞测序数据中细胞簇的纯度。通过肿瘤微环境案例,文章展示了ROGUE值如何指导聚类分辨率的选择,优化细胞分群,从而更精确地揭示免疫细胞等功能亚型,提升单细胞数据分析的可靠性。

e3f4g5的博客 476

【纯生信思路】0测序0实验,“转录组+机器学习 + 单细胞”纯生信拿下5分+,换个疾病你也可以!!

今天这期内容对不追求高分的老师们来说非常友好!!“思路简单 + 超级容易复现”,绝对是大家首选的性价比之王!主角是非常常规的“转录组 + 单细胞 + 机器学习”,纯生信斩获5分+,快来看看吧!

呆猪儿的博客 2029

SAP BTP开发入门:从PaaS到CAP/UI5的30天学习路线

在云计算与数字化转型的大背景下,企业系统集成与云端扩展需求激增,传统的单点开发模式正面临深刻变革。PaaS(平台即服务)作为云原生的核心概念,将基础设施、开发环境与应用服务统一封装,为企业提供了灵活的扩展能力。SAP BTP正是SAP生态中的PaaS平台,它承载着系统集成、低代码开发、AI服务与数据管理,成为连接S/4HANA等核心业务系统与创新应用的桥梁。对于ABAP开发者而言,掌握BTP不仅是技能升级,更是应对从传统部署向云端订阅模式转型的必由之路。本文从平台基础出发,梳理BTP的核心服务与开发模型(如

weixin_31766003的博客 285

W5500 MACRAW模式实战:在ESP32上抓取并解析原始以太网数据包

本文详细介绍了如何在ESP32开发板上使用W5500芯片的MACRAW模式捕获和解析原始以太网数据包。通过硬件连接指南、代码实现示例和协议解析技巧,帮助开发者深入理解网络通信底层机制,实现网络嗅探和自定义协议开发等高级应用。

weixin_42520573的博客 418

IF 33.3+ 通过多区域单细胞测序解析肺腺癌的空间和细胞结构

在此,我们对来自5例早期LUAD和14个来自肿瘤的具有明确空间邻近性的多区域正常肺组织的186,916个细胞进行了单细胞RNA测序。与肿瘤邻近的正常组织中调节性T细胞表型增加,而细胞毒性CD8+T细胞、抗原呈递巨噬细胞和炎症树突状细胞的特征和比例则减少。D、基于计算的欧几里得距离使用转录组特征对空间样本中的3个代表性上皮细胞子集之间的层次关系进行展示,以及相应量化空间样本之间相似度水平的热图。M 展示了cDC2 C2细胞在总cDC2细胞中的比例以及在LUAD和空间正常肺组织中的分布情况的箱线图。

weixin_41368414的博客 791

【微电网优化】基于粒子群求解CHP机组、气网、电网、储热罐和电锅炉微电网优化模型附matlab代码

1 简介 我国风力发电近年发展迅速,装机容量已成为全球首位.随着风力发电在电力系统中的渗透率不断提高,我国多个地区(尤其是"三北"地区)已经面临着十分严峻的风电消纳问题,产生不容忽视的弃风问题.针对目前我国风电消纳存在的困难,本文提出粒子群优化CHP机组、气网、电网、储热罐和电锅炉微电网控制策略. 2 部分代码 Ppv=[0;0;0;0;0;0;9.86000000000000;19.0100000000000;33.1000000000000;45.0700000000000;64.7900000

qq_59747472的博客 672

单细胞转录组分析流程五(marker基因展示,AddMouduleScore与细胞比例)

在完成细胞类型注释之后,我们通常会对,进一步验证注释结果的可靠性。Marker 基因是每种细胞类型特有的高表达基因,通过可视化这些 marker,可以直观判断某个 cluster 是否表达对应细胞类型的特征,从而确认注释是否准确。

春困秋乏夏打盹,睡不醒的冬三月 1106

用扩展点为 Fiori Elements 添加自定义动作:从原理到落地的完整实践

本文介绍了如何在基于OData V4的Fiori Elements应用中通过Extension Points添加自定义Action按钮。主要内容包括: 扩展点动作与标准注解动作的区别:扩展点用于非标准前端流程、组合操作等场景,需通过extensionAPI与框架交互。 扩展点动作的插入位置:可放置在List Report表格工具栏、Object Page页眉/页脚/Section工具栏等位置,并说明了相应的manifest.json配置节点。 配置模型与处理函数契约:详细说明了press、visible/e

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 250

科研生产力革命:手把手教你打造基于大模型的Research Agent(文献调研+论文写作+思路激发)

本文介绍了如何利用Research Agent(科研智能体)提升科研效率。Research Agent能自主完成文献检索、信息整合和报告生成全流程,省去50%以上的基础工作时间。文章详细讲解了搭建运行环境的方法,包括工具准备和MetaGPT配置,并提供了两种实战方案:基础版Search-O1和专业版MetaGPT Research Agent。此外,还介绍了如何为垂直领域定制Agent,以及优化检索效果、改善报告逻辑等技巧。最后列举了学术研究、行业分析、内容创作和个人学习四大应用场景,帮助用户将AI从聊天工

LXY_LOVE36的博客 268

xCell实战指南:从TCGA数据解析肿瘤微环境中的T细胞浸润模式

本文提供了一份详细的xCell实战指南,指导如何利用TCGA数据解析肿瘤微环境中的T细胞浸润模式。文章深入剖析了xCell进行细胞类型富集分析的核心原理、数据准备的关键步骤(如基因名转换与表达量要求),并展示了从数据下载、运行分析到结果可视化和生物学解读的完整流程,帮助研究者有效评估肿瘤免疫状态,识别潜在的“热肿瘤”。

flower的专栏 462

光学传播仿真软件:SPEOS_(14).建筑物内光环境仿真

在建筑物内光环境仿真中,材料属性的定义直接影响光的传播和反射效果。SPEOS提供了丰富的材料库,但也可以自定义材料属性以满足特定需求。创建新材料选择Materials->。输入材料名称和类型。配置材料属性选择材料对象,打开属性编辑器。设置反射率、透射率、表面粗糙度和颜色。# 导入SPEOS模块# 创建新材料# 配置材料属性custom_material.set_reflectivity(0.8) # 设置反射率为0.8。

kkchenjj的博客 1251

HIV相关侵袭性B细胞淋巴瘤的单细胞免疫图谱

通过比较不同组间的细胞比例,作者发现与非HAL相比,HAL样本的CD4/CD8比率普遍较低(图4D),这主要是由于CD4+调节性T细胞(Treg)的数量显著减少所致(图4E-F)。研究人员进一步对非恶性B细胞进行亚聚类,鉴定出四种亚型:两种幼稚B细胞(B_naive1, B_naive2)和两种记忆B细胞(B_memory1, B_memory2)(图3A, B)。(图1A和补充表1)。在所有样本中,T细胞是丰度最高的免疫细胞,其次是巨噬细胞(图1G),但各类细胞的比例在不同样本间存在显著波动(图1H)。

weixin_47195452的博客 1040

【PyTorch深度学习项目实战100例目录】项目详解 + 数据集 + 完整源码

大家好,我是阿光。本专栏整理了《深度学习100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。正在更新中~ ✨。

优快云 精品推荐 10万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Cell | 大规模 单细胞图谱 揭示非小细胞肺癌抗PD-1治疗后的免疫微环境异质性

非小细胞肺癌(NSCLC)术后复发率高。新辅助免疫治疗联合化疗提高了疗效,但患者间反应差异大,其异质性机制尚不明确,急需深入了解。肿瘤免疫微环境(TIME)是免疫治疗反应的关键。单细胞测序技术有助于分析TIME,但既往研究队列小,难以全面探索患者群体层面的反应异质性。

组学之心,专注多组学/ 医学AI 领域 1281

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

NC | 单细胞分析揭示头颈部癌早期转移过程中潜在的免疫逃逸机制

显示,HNSCC中EMT并非淋巴转移的必需条件,且EMT本身呈谱系化特征,肿瘤细胞具有显著的表型可塑性,这可能是临床转移表现异质性的重要原因。②细胞类型与分布差异:通过经典标志物将细胞注释为上皮细胞(KRT7、KRT17)、唾液腺细胞(STATH)、成纤维细胞(COL1A2)、内皮细胞(PECAM)和免疫细胞(PTPRC)五大类,其中成纤维细胞进一步分为癌相关成纤维细胞(CAFs,MMP2⁺)和肌成纤维细胞(ACTA2⁺),免疫细胞细分为 T 细胞、NK 细胞、B 细胞等。

weixin_47195452的博客 546

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

文献学习:单细胞+临床+模型构建 | 一篇Molecular Cancer文献如何完整解读CDK4/6i耐药机制

近年来,随着 CDK4/6 抑制剂(CDK4/6i)联合内分泌治疗(如芳香化酶抑制剂、fulvestrant)的广泛应用,显著延长了这类患者的无进展生存期(PFS),成为临床一线标准。,通过单细胞数据可视化(UMAP、热图、GSEA等)深入揭示了 CDK4/6i 治疗反应性与耐药过程的分子特征,以下从关键图(Figure 1–5)提炼几个重点发现。通过图示解读,我们可以看出本研究逻辑严密、数据表达清晰,不仅揭示了 CDK4/6i 相关的分子机制,也建立了全链条分析框架,是值得深入学习与借鉴的经典范例。

阅读文献,记录学习笔记 1750

基因组+单细胞--多组学分析揭示复发性非小细胞肺癌的生物学机制与临床见解

基因组+单细胞--多组学分析揭示复发性非小细胞肺癌的生物学机制与临床见解

weixin_53637133的博客 808

单细胞RNA测序与机器学习解析肾癌免疫微环境

单细胞RNA测序(scRNA-seq)技术通过单细胞分辨率解析基因表达特征,已成为肿瘤微环境研究的重要工具。结合机器学习算法,能够有效处理高维单细胞数据,实现细胞亚群精确识别和分子特征解析。在生物医学领域,这种技术组合特别适用于肿瘤免疫微环境研究,如识别免疫细胞亚群、建立预后模型等。本文以肾细胞癌为例,详细介绍了从单细胞数据预处理到机器学习建模的全流程方法,包括使用SCTransform进行数据归一化、Harmony算法校正批次效应,以及XGBoost、随机森林等算法在细胞类型预测和关键基因筛选中的应用。该

diaohuyi6830的博客 366
上一篇: Python实战:利用FFT分析音频信号并可视化频谱特征
下一篇: 【Python】利用gdal.WarpOptions实现多源遥感影像智能拼接与精准裁剪
code8
博客等级 码龄17年 65粉丝 1720原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值