当前位置: 首页 > news >正文

跨物种对比的人类特异性基因挖掘

在理解了细胞类型的演化关系后,下一步通常是挖掘那些在人类中表达显著上调、而在其他物种(包括非人灵长类和啮齿类)中表达较低的基因。

1. 核心逻辑:全物种动态比对策略

为了避免筛选出的基因在小鼠中也高表达(即避免“灵长类特异性下调”基因),我们采用全物种严谨比对逻辑:

  • 动态比对:自动识别数据中除 Human 以外的所有物种。
  • 绝对占优:要求 对所有 个参考物种同时成立。
  • 稳健排序:计算人类与各物种差异的最小值,以此作为特异性评分进行排序。

2. 人类绝对特异性基因挖掘函数

library(Seurat)library(ComplexHeatmap)library(circlize)#' 挖掘人类绝对特异性基因 (全物种动态比对版)#' @param obj 跨物种整合的 Seurat 对象#' @param target_cell_type 目标细胞类型名称#' @param celltype_col meta.data 中细胞类型所在的列名#' @param species_col meta.data 中物种信息所在的列名#' @param lfc_threshold LogFC 差异阈值,默认 0.5#' @param min_expression 人类中的最小表达量阈值FindHumanSpecificGenes_Strict<-function(obj,target_cell_type,celltype_col="cell_type",species_col="species",lfc_threshold=0.5,min_expression=0.1){message(paste0(">>> 正在启动全物种比对,挖掘 [",target_cell_type,"] 的人类特异基因..."))# 1. 动态提取特定细胞类型 (使用 [[ ]] 访问软编码参数)cells_to_keep<-colnames(obj)[obj@meta.data[[celltype_col]]==target_cell_type]if(length(cells_to_keep)==0)stop("未找到指定细胞类型。")sub_obj<-subset(obj,cells=cells_to_keep)# 2. 计算伪大块均值 (Pseudo-bulk)avg_data<-AverageExpression(sub_obj,group.by=species_col,assay="RNA",slot="data")$RNAif(!"Human"%in%colnames(avg_data))stop("数据中未检测到 'Human' 分组。")# 3. 动态计算 Human 与所有其他物种的差异other_species<-setdiff(colnames(avg_data),"Human")message(paste(">>> 正在比对 Human 与:",paste(other_species,collapse=", ")))# 对每一个物种,计算 Human - Speciesdiff_list<-lapply(other_species,function(sp){return(avg_data[,"Human"]-avg_data[,sp])})# 4. 严谨筛选条件:Human 必须大于【所有】其他物种# 使用 Reduce 确保基因在所有对比中都满足阈值is_human_spec<-Reduce(`&`,lapply(diff_list,function(d)d>lfc_threshold))expressed_in_human<-avg_data[,"Human"]>min_expression target_genes<-rownames(avg_data)[is_human_spec&expressed_in_human]# 5. 稳健排序:取 Human 与其他物种间“最小差异值”# 这样排在前面的基因在所有对比中都是绝对高表达min_diffs<-apply(as.matrix(do.call(cbind,diff_list)),1,min)target_genes<-target_genes[order(min_diffs[target_genes],decreasing=TRUE)]message(paste(">>> 筛选完成,共找到",length(target_genes),"个绝对特异基因。"))return(target_genes)}

3. 配套可视化:演化轨迹热图

该函数支持按照预设的演化轴顺序排列物种,并自动进行 Z-score 标准化。

#' 绘制人类特异性进化热图 (全参数版)PlotEvolutionHeatmap<-function(obj,target_cell_type,features,celltype_col="cell_type",species_col="species"){# 1. 提取数据并计算均值cells_to_keep<-colnames(obj)[obj@meta.data[[celltype_col]]==target_cell_type]sub_obj<-subset(obj,cells=cells_to_keep)avg_mat<-AverageExpression(sub_obj,group.by=species_col,assay="RNA",slot="data")$RNA# 2. 准备绘图矩阵:自动适配进化顺序ideal_order<-c("Mouse","Marmoset","Macaque","Human")plot_species<-intersect(ideal_order,colnames(avg_mat))# 截取有效基因valid_features<-intersect(features,rownames(avg_mat))plot_mat<-avg_mat[valid_features,plot_species,drop=FALSE]# 3. Z-score 标准化 (Row-scale)plot_mat_scaled<-t(scale(t(plot_mat)))# 4. 绘制热图Heatmap(plot_mat_scaled,name="Z-score",cluster_columns=FALSE,# 保持演化轴顺序cluster_rows=FALSE,# 保持特异性分值排序show_row_names=TRUE,col=colorRamp2(c(-1.5,0,1.5),c("#4575b4","white","#d73027")),column_title=paste0("Absolute Human Specificity: ",target_cell_type),row_names_gp=gpar(fontsize=8),column_names_rot=45)}

4. 实战示例

# 1. 在指定列名下挖掘 MLI1 细胞的人类特异基因hs_genes<-FindHumanSpecificGenes_Strict(seurat_obj,target_cell_type="MLI1",celltype_col="celltype.V1",species_col="species_std")# 2. 展示前 50 个基因的跨物种演化模式PlotEvolutionHeatmap(seurat_obj,target_cell_type="MLI1",features=head(hs_genes,50),celltype_col="celltype.V1",species_col="species_std")


http://www.jsqmd.com/news/808158/

相关文章:

  • 012、传感器概述:IMU、磁力计、气压计、GPS
  • EDA工程师的智慧:从设计工具哲学到工程实践中的金句启示
  • 2026年成都水刀配件全品类采购指南:从超高压增压总成到易损件一站式解决方案 - 优质企业观察收录
  • 2026年成都水刀配件厂家深度横评:力好机械一站式供应方案 - 优质企业观察收录
  • 五分钟在单片机开发环境中配置Taotoken的curl调用示例
  • YOLO26车辆品牌识别 汽车logo检测 图像视频推理 汽车品牌Logo识别技术
  • 从开发到上线:程序员必须知道的5个知识产权与标准‘雷区’
  • 终极指南:如何用 ArchivePasswordTestTool 免费恢复遗忘的压缩包密码
  • 2026年中国九大商用音乐授权平台全景指南 - 拾光而行
  • 高分子材料流变特性研究选毛细管流变仪供应商,精准模拟材料高温熔融加工工况 - 品牌推荐大师
  • 重新定义经典:植物大战僵尸PC版的无限可能
  • 一芯FC1178BC/FC1179主控U盘量产工具实战与疑难解析
  • 霸州办公椅定制哪家好? - 中媒介
  • 河北铝塑板色彩哪家专业? - 中媒介
  • 别再傻傻分不清!Windows下CH343的VCP驱动和系统自带CDC驱动,到底该用哪个?
  • 武汉闲置包包回收报价,收的顶上门鉴定实时估价 - 奢侈品回收测评
  • Perplexity实时学术检索能力全解析(2024Q2实验室级压测数据曝光)
  • OctoSuite终极指南:10个技巧让GitHub数据分析效率翻倍
  • 别再死记硬背了!用Keil MDK和STM32CubeMX搞定嵌入式期末考(附重点解析)
  • 从零到一:基于Ubuntu部署企业级Asterisk VoIP服务器
  • 别再买成品了!手把手教你用0.5mm漆包线DIY高频空芯电感(附计算软件和脱漆技巧)
  • 真实的“五七”空战:原来如此
  • 大语言模型与图神经网络融合:实现复杂推理的三种范式与实践
  • 避坑指南:Linux下pthread_mutex锁用错了属性?递归锁、检错锁、自适应锁实战解析
  • ComfyUI-Impact-Pack:解锁AI图像增强的专业级解决方案
  • 车窗夹持力测试仪/天窗防夹力测试仪优质供应商推荐:2026实力榜,知名品牌+代理商+服务网络全解析 - 品牌推荐大师1
  • 2026年成都水刀配件厂家精选指南|力好机械超高压增压总成与易损件一站式采购 - 优质企业观察收录
  • Umi-CUT:告别繁琐!3步搞定批量图片黑边清理与智能裁剪
  • 别再为模型单位发愁了!手把手教你用Ansys CFX和Fluent缩放网格(附ICEM小技巧)
  • 手机号逆向查询QQ号:终极快速查询完整教程