免疫组库基础分析15:利用 NAIR 包探索疾病表型或治疗相关的 TCR/BCR 簇
在免疫组库测序AIRR-Seq研究中我们常常不只关心单个 TCR/BCR 序列更希望找到与疾病状态、治疗响应或临床结局显著相关的一组相似免疫受体序列也就是免疫受体簇。NAIR 包提供了一套完整流程能从批量bulk)免疫组库样本数据中系统性挖掘这类具有生物学意义的关联簇。本文将完整介绍这一分析流程从关联序列筛选、相似克隆识别到全局网络构建与聚类分析。一、引言当我们拥有多份批量适应性免疫受体库测序bulk -AIRR-Seq样本时可以借助 NAIR 包研究与二分类变量相关的 TCR/BCR 簇。这里的二分类变量可以是疾病 / 健康、治疗组 / 对照组、预后良好 / 不良等。整个分析的核心思路是先找到组间差异显著的序列再扩展到与之相似的序列克隆最后构建网络并划分簇得到最终的关联簇。分析流程概览识别关联序列根据二分类变量将研究对象分为两组使用费希尔精确检验筛选出在两组间频率存在统计学显著差异的 TCR/BCR 序列。识别与关联序列相似的克隆对每个关联序列设定序列相似度阈值例如氨基酸差异不超过 1 个定义其 “邻域序列”并从所有样本中找出属于这些邻域的克隆。构建关联克隆的全局网络将上一步筛选出的所有克隆整合为一个全局网络通过聚类分析将网络划分为不同簇这些簇即为与目标表型相关的关联簇。后续分析与可视化在网络图中标记聚类编号、单独分析感兴趣的特定簇、绘制不同分组的着色方案等。二、安装并加载 NAIR 包首先安装并加载分析所需的核心包这是所有步骤的基础。install.packages(NAIR)library(NAIR)三、模拟演示数据为了清晰展示整个流程我们先构建一套模拟数据完全贴合真实研究的数据结构。set.seed(42)library(NAIR)data_dir- getwd()dir_input_samples- file.path(data_dir,input_samples)dir.create(dir_input_samples, showWarningsFALSE)n_control- n_treatment-15n_samples- n_control n_treatment sample_size-30base_seqs- c(CASSGAYEQYF,CSVDLGKGNNEQFF,CASSIEGQLSTDTQYF,CASSEEGQLSTDTQYF,CASSPEGQLSTDTQYF,RASSLAGNTEAFF,CASSHRGTDTQYF,CASDAGVFQPQHF)pgen_c- matrix(rep(c(rep(1,5), rep(30,3)),timesn_control), nrown_control, byrowTRUE)pgen_t- matrix(rep(c(1,1, rep(1/3,3), rep(2,3)),timesn_treatment), nrown_treatment, byrowTRUE)pgen- rbind(pgen_c, pgen_t)simulateToyData(samplesn_samples, sample_sizesample_size, prefix_length1, prefix_charsc(,), prefix_probscbind(rep(1, n_samples), rep(0, n_samples)), affixesbase_seqs, affix_probspgen, num_edits0, output_dirdir_input_samples, no_returnTRUE)group_labels- c(rep(control, n_control), rep(treatment, n_treatment))input_files- file.path(dir_input_samples,paste0(Sample,1:n_samples,.rds))length(input_files)四、步骤 1寻找关联序列第一步核心筛选两组间分布差异显著的受体序列使用findAssociatedSeqs()函数完成。根据二分类变量将研究对象分为两组使用费希尔精确检验筛选出在两组间频率存在统计学显著差异的 TCR/BCR 序列。associated_seqs- findAssociatedSeqs(file_listinput_files, input_typerds, group_idsgroup_labels, seq_colCloneSeq, min_seq_lengthNULL, drop_matchesNULL, min_sample_membershipNULL, pval_cutoff0.1)结果如下在后续的处理步骤中只需要关注并使用 ReceptorSeq 这一列的数据五、步骤 2查找关联克隆基于关联序列找到所有相似的克隆构建序列邻域数据集dir_nbds- file.path(data_dir,assoc_seq_nbds)findAssociatedClones(file_listinput_files, input_typerds, group_idsgroup_labels, seq_colCloneSeq, assoc_seqsassociated_seqs$ReceptorSeq, min_seq_lengthNULL, drop_matchesNULL, output_dirdir_nbds)结果如下one_nbd- readRDS(list.files(dir_nbds, full.namesTRUE)[[1]])head(one_nbd)六、步骤 3构建关联簇的全局网络整合所有相似克隆构建全局网络并划分关联簇这是核心分析步骤。nbd_files- list.files(dir_nbds, full.namesTRUE)all_clusters- buildAssociatedClusterNetwork(file_listnbd_files, seq_colCloneSeq, size_nodes_by1.5, print_plotsTRUE)names(all_clusters)head(all_clusters$node_data)head(all_clusters$cluster_data)七、步骤 4附加分析与可视化对网络结果进行精细化分析提升结果的实用性和可读性。all_clusters- addPlots(all_clusters, color_nodes_byAssocSeq, color_titleNeighborhood Sequence, size_nodes_by1.5, print_plotsTRUE)all_clusters- labelClusters(all_clusters, size10)all_clusters$plots[[1]]buildNet(dataall_clusters$node_data[all_clusters$node_data$cluster_id2,], seq_colCloneSeq, color_nodes_byc(CloneSeq,SampleID), color_schemec(plasma,turbo), size_nodes_by3, plot_titleCluster 2, print_plotsTRUE)八、结果保存将所有分析结果保存方便后续论文写作与数据复用。saveRDS(all_clusters,final_cluster_network.rds)write.csv(all_clusters$cluster_data,cluster_statistics.csv, row.namesFALSE)write.csv(all_clusters$node_data,node_information.csv, row.namesFALSE)注意事项步骤参数名称作用建议关注点Step 1group_ids定义样本分组必须准确错一位结果全错。Step 1pval_cutoff设定显著性门槛根据数据量调整多重检验时可能需要更严格。Step 2nbd_radius定义“相似”范围设为 0 只找完全相同的序列设为 1 找突变体。Step 3cluster_fun选择聚类算法默认算法通常可用若聚类效果不好可尝试更换。Step 3color_nodes_by可视化着色调试时可尝试不同值如SampleID以排查数据问题。

相关新闻

AI内容一键导出PDF:Markdown中转与自动化打印完整指南

AI内容一键导出PDF:Markdown中转与自动化打印完整指南

1. 从对话到PDF:为什么导出这件事比想象中更折腾用AI辅助写作的人多半都经历过这个场景:跟模型来回聊了十几轮,终于把一份方案、一份报告或者一份教程打磨到自己满意的程度,结果到了要交付的环节,卡住了。复制粘贴到Wo…

2026/10/12 5:26:12 阅读更多 →
企业落地通用智能体:能力边界、风险与灰度路径

企业落地通用智能体:能力边界、风险与灰度路径

最近两个月,我频繁被同一个问题找上门:Gemini Agent这种通用智能体都标榜“给个目标就能干活”了,我们企业是不是也该上一个?来问我的有技术负责人,也有业务部门负责人,大家眼睛里都闪着光,仿佛…

2026/10/12 5:26:12 阅读更多 →
基于Qt/C++的工业边缘计算网关开发实战:从架构到量产

基于Qt/C++的工业边缘计算网关开发实战:从架构到量产

车间里32台设备的数据孤岛问题,是我去年接到的一个典型改造需求。现场有西门子200smart PLC、三台变频器、十几路温湿度传感器、几块多功能电能表,协议五花八门——Modbus RTU有的走串口、有的走TCP,S7协议还得单独处理。传统的做法是每台设备…

2026/10/12 5:26:12 阅读更多 →

最新新闻

有害气体控制洁净工程的底层逻辑:从过滤到吸附,从压差到监测

有害气体控制洁净工程的底层逻辑:从过滤到吸附,从压差到监测

空气里最危险的不是脏,而是失控:有害气体控制洁净工程的底层逻辑干了这么多年洁净工程,我越来越觉得“洁净”这个词会误导人。很多人一听到洁净室,想到的就是无尘、高等级过滤、白大褂和干干净净的地板,下意识把“颗粒…

2026/10/12 6:03:33 阅读更多 →
Pygame乒乓球游戏开发实战:从游戏循环到碰撞检测的完整指南

Pygame乒乓球游戏开发实战:从游戏循环到碰撞检测的完整指南

简介:游戏循环是几乎所有实时游戏的心跳,它决定了每一帧里输入、更新与渲染的执行顺序。碰撞检测则负责回答“物体是否重叠”这个基本问题,而引擎中那些微妙的物理手感,往往源于对碰撞响应和状态管理的精细控制。乒乓球游戏恰好是…

2026/10/12 6:03:33 阅读更多 →
栈的压入、弹出序列判定算法详解:辅助栈模拟与 Java 实现(YCBlogs 剑指 Offer 系列)

栈的压入、弹出序列判定算法详解:辅助栈模拟与 Java 实现(YCBlogs 剑指 Offer 系列)

教程技术博客文档 【免费下载链接】YCBlogs 技术博客笔记大汇总,包括Java基础,线程,并发,数据结构;Android技术博客等等;常用设计模式;常见的算法;网络协议知识点;部分fl…

2026/10/12 6:03:33 阅读更多 →
C# TCP服务器与客户端双向通信:骨架搭建与避坑指南

C# TCP服务器与客户端双向通信:骨架搭建与避坑指南

简介:这是一份面向C#网络编程初学者的TCP通信示例工程,目标是用一个程序实现TCP客户端与服务器之间的互发消息,并支持在客户端界面点击按钮弹出服务器界面。资源围绕System.Net命名空间下的TcpListener与TcpClient展开,覆盖端口绑…

2026/10/12 6:03:32 阅读更多 →
CodeIgniter 4.7.4 安全与稳定性更新详解:四个安全公告与十余项缺陷修复

CodeIgniter 4.7.4 安全与稳定性更新详解:四个安全公告与十余项缺陷修复

后端Web框架 【免费下载链接】CodeIgniter4 Open Source PHP Framework (originally from EllisLab) 项目地址: https://gitcode.com/gh_mirrors/co/CodeIgniter4 点击查看 免费下载 CodeIgniter 4.7.4(2026 年 7 月 7 日发布)是一次以安全加…

2026/10/12 6:03:32 阅读更多 →
Tortoise-ORM 与 Sanic 集成实战:register_tortoise 生命周期管理全解析

Tortoise-ORM 与 Sanic 集成实战:register_tortoise 生命周期管理全解析

数据库后端 【免费下载链接】tortoise-orm Familiar asyncio ORM for python, built with relations in mind 项目地址: https://gitcode.com/gh_mirrors/to/tortoise-orm 点击查看 免费下载 本文以 Tortoise-ORM 仓库中 Sanic 集成示例 为主线,系统讲解…

2026/10/12 6:02:32 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →