ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

STRING数据库PPI分析全流程:从差异基因到Hub基因的实操指南

STRING数据库PPI分析全流程:从差异基因到Hub基因的实操指南 拿到测序的差异基因列表之后很多人第一件事就是丢进GO/KEGG做富集分析这没错但我一直建议先做一步PPI网络分析再回来做功能富集。为什么因为基因从来不是孤立工作的蛋白之间的相互作用关系能直观反映哪些基因真正处在调控枢纽位置也能帮你从几十上百个候选基因里快速圈出最有价值的少数靶点。而做PPI分析时我用的最多、也最推荐给初级生信用户入门的工具就是STRING数据库。STRINGSearch Tool for the Retrieval of Interacting Genes/Proteins是目前覆盖面最广、更新最及时、操作门槛最低的蛋白质相互作用数据库。这篇内容我按自己实际跑项目的经验把从选型、检索、参数调整到结果解读和数据导出的完整链路一次讲透顺带把那些你在官方教程里看不到的坑都指出来。适合刚接触生信分析、手头正好有一批测序差异基因想往下走的人也适合想规范自己分析流程的老手。1. 为什么偏偏选中STRINGPPI网络分析的第一步选型1.1 拿到差异基因后先理一理关系比先跑富集更划算我的常规分析管线大概是这样的差异表达基因筛选完成之后先看它们的蛋白产物之间是否存在已知的相互作用关系把有关系的基因挑出来构建网络然后才去做功能富集。这个顺序的逻辑在于富集分析回答的是这些基因参与了哪些通路或功能而PPI回答的是这些基因的产物之间有没有物理或功能上的联系。如果一群基因在同一个通路里富集但它们对应的蛋白彼此之间根本没有相互作用那你就要怀疑这个富集结果是不是仅仅因为基因数量大造成的统计假象。反过来如果十几个基因在网络里形成了明显的交互簇哪怕富集分析不显著这个模块本身也值得深挖。所以PPI分析不是锦上添花而是帮你做第一道物理过滤。1.2 相互作用数据库那么多为什么默认开STRING行业里做蛋白质相互作用的数据库不少BioGRID、IntAct、HPRD、MINT这些各有侧重。BioGRID偏重酵母双杂交和亲和纯化等实验数据数据质量高但覆盖面窄IntAct由EBI维护注释规范但很多非模式物种的数据量少得可怜HPRD只覆盖人类而且维护基本停滞了。STRING能在实际操作里胜出靠的是三件事第一是覆盖面。到2024年STRING已经收录了超过14000个物种的蛋白质相互作用信息不管是人类、小鼠、大鼠这些模式生物还是水稻、玉米、斑马鱼甚至微生物你都能找到足够多的数据支撑。第二是多源证据整合。STRING不是只收实验数据它把基因邻域、基因融合、系统发育谱、共表达、文本挖掘、实验数据、数据库注释七类证据全部整合在一起算出一个综合得分。这个设计思路对非模式生物尤其友好——很多物种没有足够的湿实验数据但通过同源映射和基因组上下文也能给出合理预测。第三是够傻瓜。整个操作界面不需要写代码输入基因列表、选物种、点检索就能出图但同时也提供了API和R包进阶用户可以通过脚本批量调用。从零基础到高手都能用上。我用过BioGRID做过一次对比同样一批基因BioGRID返回的原始互作关系确实更硬但网络的稀疏程度让人崩溃大部分基因是离散节点根本没法分析网络拓扑。STRINIG虽然包含不少预测边但配合置信度过滤以后反而能给出更连贯、更可解释的网络结构。2. STRING里到底存了哪些证据数据来源与置信度体系的底层逻辑2.1 七类证据来源各有各的脾气理解STRING的条目格式之前你得先明白它说的相互作用是什么意思。跟有些人想的不一样STRING里的边不只是蛋白物理结合它更广义地表示两个蛋白之间存在功能关联。这个设计是刻意的因为物理互作数据太少如果只看物理互作网络会碎成一地。具体来说STRING的证据来源分七类证据类别数据性质适用场景实验数据Experiment酵母双杂交、亲和纯化、交联质谱等湿实验验证的物理互作可信度最高但覆盖率低数据库注释Database从其他权威通路/复合物数据库导入的注释互作像Reactome、SGD等来源可靠性高共表达Co-expression基因在不同条件下的转录水平变化模式相似适合找功能关联不代表物理结合基因邻域Neighborhood原核生物中相邻基因往往共转录、功能相关主要贡献给细菌古菌类物种基因融合Gene Fusion两个基因在其他物种中融合成一个基因暗示功能耦合对真核生物也有一定参考价值系统发育谱Co-occurrence两个基因在不同物种中同时出现/缺失的模式相似用于跨物种保守性推断文本挖掘Textmining自动从PubMed摘要中统计基因名共现频率覆盖广但噪音也多这里必须多说一句文本挖掘。它是最容易误导新人的证据类型。两个基因只要在大量文献摘要里同时被提到分数就会上去但这完全可能是这两个基因经常作为一个通路的成员被并列列出而不是真的存在直接互作。所以你在看结果时不要被全蓝色的文本挖掘边带偏。我自己的习惯是过滤条件里默认会降低textmining的权重如果文章对互作证据要求比较高我会只保留experiments和databases两类边来做一次敏感性分析。两边结果对得上心里才踏实。2.2 combined score是怎么算出来的STRING给每个互作对node pair算一个combined score范围从0到1。这个分数不是简单取七类证据的最大值或平均值而是用了一种类似朴素贝叶斯整合的框架先基于已知的参考数据集给每类证据算一个似然比再假设各证据相对独立把多类证据的优势概率相乘起来。当然内部实现比我说的复杂得多而且不同物种打分基准会有差异。但对用户来说只需要记住一个关键结论分数越接近1代表支持这条边的证据越多、越强。0.9以上的边通常意味着有多个独立来源佐证。官方建议和绝大多数文献使用的分级是这样的Low confidence: 0.15Medium confidence: 0.40High confidence: 0.70Highest confidence: 0.90我实际用下来的体会是做人类肿瘤相关分析时0.4和0.7之间拉出来的网络规模能差出一倍。0.15基本没法看全是边0.9又太严格小基因列表的网络会变得稀稀拉拉。一般建议先跑0.4看全貌再切到0.7找核心边。2.3 同一物种内比较才有意义特别提醒不同物种之间的combined score不能直接横向比较。因为参考数据集不同、同源映射范围不同一个细菌的0.7跟人类的0.7代表的证据强度不完全一样。还有模式生物的分数整体会比非模式生物更高因为实验数据多。你跟审稿人汇报的时候也建议明确写清楚用的是哪个物种版本、哪个置信度阈值。3. 从基因列表到相互作用网络一次完整的检索流程3.1 打开页面、选对物种别在这里翻车访问STRING官网string-db.org首页就是一个大的搜索框上面会让你选物种。物种选择这一步特别容易被忽略。很多人输入基因名之后发现结果为空九成是物种选错了。比如说你输入TP53选成小鼠Mus musculus其实也有这个基因但如果输入的是BRCA1小鼠这个物种也认可当你的列表里混入了一些人类特异或者命名差异较大的基因时系统就会直接丢掉一部分输入项回来一个不完整的网络。你还以为是数据库坏了。我常用的物种taxonomy ID如下直接填会比下拉搜索更快物种拉丁名Taxonomy ID人类Homo sapiens9606小鼠Mus musculus10090大鼠Rattus norvegicus10116斑马鱼Danio rerio7955果蝇Drosophila melanogaster7227线虫Caenorhabditis elegans6239酵母Saccharomyces cerevisiae4932拟南芥Arabidopsis thaliana3702水稻Oryza sativa45303.2 输入基因列表一次粘贴几十个基因很常见物种选好之后把基因列表粘贴到输入框一行一个或者用回车分隔。支持输入的对象类型比较多gene symbols最常见的Ensembl基因ID、RefSeq转录本ID、UniProt accession这些也都行。不过如果你混着不同类型的ID输入识别率可能受影响建议统一转成gene symbol。举个例子我之前处理过一批食管癌的差异基因手头有TP53、EGFR、AKT1、MYC、CDH1、VEGFA、PTEN、JAK2、STAT3、MDM2这十个基因输入方式就是直接粘贴TP53 EGFR AKT1 MYC CDH1 VEGFA PTEN JAK2 STAT3 MDM2点SEARCH之后系统会先做一个ID映射。如果你看到Some symbols could not be mapped先别急着往下走点进详情看看到底是哪几个基因没被识别通常原因包括基因别名不在默认识别范围、列表里混入了mRNA名字、或者拼写里有多余空格。3.3 检索结果概览四大区块要分清检索完成之后你会进入一个结果页面这个页面信息密度比较高新用户容易迷路。我把它拆成几个区块Networks区居中的大画布展示PPI网络这才是你要看的主视图。Summary区在上方或者侧边列出本次输入识别的蛋白数量、网络节点数、边数、PPI enrichment p-value等统计量。Predictions区展示对某些尚未验证基因的功能预测一般分析不怎么看。工具栏区包括视图切换、设置、分析、导出等入口。先把整体过一遍接下来最好立刻做两件事把置信度调到合适档位再切换到不同的视图模式检查边的合理性。4. 网络视图里的那些参数不调明白等于白做4.1 Network TypeFull Network 和 Physical Subnetwork 的区别这个选项在Settings面板里默认是Full network。直观理解Full network包含所有的功能关联边范围宽Physical subnetwork则只保留存在物理结合证据的边范围窄也更严格。什么时候用Physical如果你的研究聚焦在蛋白复合物、信号传导直接结合这种分子机制层面那就选它。但如果你只是拿PPI做基因筛选和模块发现我建议用Full network因为它能保留更多功能关联线索网络更连贯Hub基因的辨识度更高。4.2 Confidence Score选多少合适跟你输入基因数挂钩这个参数是影响网络形态最巨大的旋钮。我给的实操建议分场景少于20个基因建议用Medium confidence0.4做探索再切到High0.7看核心骨架。20~100个基因直接High0.7起步必要时升到Highest0.9来限制网络规模。超过100个基因这种情况直接跑全部互作边会让网络变成毛线团建议先做一轮差异筛选把基因池压缩到100以内再用High及以上阈值。记住一个反直觉的规律置信度阈值越高网络越干净但Hub基因的度值也会整体降低因为很多次要边被删掉了。你用最高阈值找到的核心基因不一定就是真正的功能枢纽还需要结合后面说的富集分析来交叉验证。4.3 Max Interactors控制第一层和第二层的邻居数量这个参数是三哥三兄弟里最容易被忽略的。当你只输入几个种子基因时STRING默认会展示与这些种子有直接互作的first shell基因。如果设置first shell数量较多比如50网络里会涌进一大批虽然不是你的输入但跟种子互作强烈的辅助节点。你看图的时候要明白网络里那些没有外框或者标记不同的节点可能就是扩展进来的节点不是你的原始基因。它们的功能是帮助你在更大的上下文中看种子基因的位置但如果抓得太远网络会越来越大核心信息反而被稀释。供参考的调法种子基因在10~20个时first shell设到5~10second shell设0差不多够用。如果你是想做模块聚类可以适当放宽到20让网络更完整。4.4 三种显示视图evidence、confidence、molecular actionSTRING在视图切换里提供了多个显示模式新手往往只停留在默认的confidence view其实另外两个信息量也很大。Evidence view每条边按照证据类别着色蓝色是textmining粉红是experiments紫色是databases绿色是gene neighborhood红色是gene fusions黑色是co-expression等等。颜色越杂说明这条边的证据来源越多越值得相信。我构建网络图给合作者看的时候经常用evidence view给他们解释边的可信度。Confidence view边粗细代表combined score高低这是默认模式适合展示网络整体结构。Molecular action view用箭头和线条形状表示激活、抑制、结合、反应、催化等分子之间的作用类型。做通路机制解释的时候很好用但不适合大网络。4.5 节点的隐藏信息点击才能看到蛋白细节网络上的每个节点都可以点击。点开之后右侧会弹出该蛋白的详细信息名字、别名、物种、序列长度、注释以及它和其他蛋白的互作详情列表。这里有一个很实用的隐藏功能你可以查看某个特定蛋白在数据库里的一度邻居列表它帮你在不做全网络分析的情况下单独看某一个目的基因的互作圈。我有时拿到一个陌生基因就会先单独搜它看它的邻居和富集通路形成第一印象。5. 结果解读从网络统计到Hub基因再到功能富集5.1 Summary里的p-value是什么意思能不能用在结果页的Summary区域有几个数字一眼就要看到number of nodes、number of edges、expected number of edges、PPI enrichment p-value。这里p-value的红利是它不是在检验你某个生物学假设而是回答一个问题——你输入的这批基因之间观察到的互作边数是否显著多于从基因组中随机抽取等量基因所能预期的边数。如果p值小于0.05说明你输入的不是一团随机的基因它们之间确实存在超出预期的功能关联。我自己的解读习惯是如果p值非常小比如10^-16以下跟你输入的样本规模有关也可能跟你这批基因本身来自某个知名通路有关这反而侧面验证了你的差异基因筛选是有生物学意义的。5.2 网络拓扑参数度、介数、Hub识别这是一张网络上大家最喜欢的东西——找Hub基因。Hub基因的概念不复杂在网络里拥有较多连线的节点往往就是调控网络的核心枢纽。分析可以从两种途径入手一是直接在STRING页面上肉眼观察度值高的节点在图里面会特别突出二是把网络导出到Cytoscape用NetworkAnalyzer工具精确计算度Degree、介数中心性Betweenness Centrality、接近中心性Closeness Centrality等指标。举例来说之前我处理一组10个食管癌基因时肉眼和计算都指向TP53和AKT1是两个大Hub。TP53的度值最高因为大量互作都汇聚到它那里这符合p53在DNA损伤响应中作为中心节点的认知。AKT1则像一个桥梁把生长因子信号跟下游mTOR、JAK-STAT串起来。这两个基因如果同时出现在你的差异列表里基本可以优先作为功能实验的候选靶点。需要提醒的是Hub基因不一定是最重要的基因它也可能是被研究得最充分的基因尤其对文本挖掘证据依赖度高的物种这种偏差更明显。所以我会把Hub列表跟差异倍数、表达丰度做交集让计算证据和表达证据互相印证。5.3 Clustering把网络切成模块当网络节点超过30个之后整体解读就变得困难这时候需要按模块拆开看。STRING自带聚类功能在Analysis里有一个Clustering选项基于K-means算法把网络划分成若干模块。切换聚类数的时候要观察模块之间的边界是否清晰如果某个模块里的基因功能高度一致比如全是细胞周期相关基因这个模块就很值得写进文章。我的使用习惯是先用默认聚类数跑一遍然后结合每个模块的GO/KEGG富集结果判断模块的生物学主题。有些模块的主题会非常清楚比如DNA修复免疫应答代谢通路这种富集主题和模块一一对应的情况是生信文章里最标准的放图素材。5.4 内建富集分析不导出也能填充文章图表STRING其实内置了GO包括BP、MF、CC三个子类和KEGG通路的富集分析。只要你的网络建立起来点Analysis按钮系统自动对网络里的全部基因做功能富集不需要再单独把基因列表拷到另一个工具里。这个结果在文章里的呈现方式很多样可以直接截取表格数据也可以下载SVG矢量图作为补充材料。不过坦率地说STRING的富集分析在选项丰富性和可定制性上不如专门的富集分析工具比如DAVID、Metascape、clusterProfiler我一般把它当快速结果用最终投稿图表会用更严谨的富集工具出图。6. 导出与下游联动接上Cytoscape和富集分析才算闭环6.1 导出格式怎么选PNG展示、SVG投稿、TSV做深化分析STRING的导出按钮在页面底部或者工具栏。格式主要有PNG、SVG、PDF、TSV和PS等。我的使用习惯是快速汇报直接截屏或导出PNG反正只是思路展示。论文投稿导出SVG再用Illustrator或Inkscape做微调改节点颜色、标签字号、标注Hub基因。SVG是矢量图无限放大不糊期刊基本都接受。数据深挖导出TSV表格这个文件包含所有互作边的具体信息node1、node2、combined score、evidence渠道等。后续做拓扑分析、子网络提取、跟其他组学数据融合都从这个TSV开始。导出TSV的时候文件大小跟网络规模成正比。如果你的基因列表有几百个基因TSV可能上万行Excel打开会很慢建议直接交给R或者Python处理。6.2 Cytoscape联动的标准操作流程Cytoscape是做PPN可视化和拓扑分析的标配。把STRING的内容搬到Cytoscape有现成的接法STRING官网提供Cytoscape的插件或者直接让你下载一个包含网络信息的TSV之后导入Cytoscape即可。具体操作大致是在STRING页面选择File然后Export下载network dataTSV格式然后在Cytoscape里File - Import - Network from File选择该TSV文件注意在导入向导里把source node和target node列指定好combined score列为边的权重。导入成功之后用NetworkAnalyzer计算拓扑参数再根据度值设置节点大小和颜色梯度。如果跑的是大网络我会在导入前先做一次过滤只保留combined score 0.7的边不然Cytoscape会卡顿得让你怀疑人生。6.3 用R和Python做批量化和自定义分析字符串官方提供了API同时也有成熟的R包STRINGdb和Python客户端。R包是我个人在批量处理多个基因列表时的首选。下面这段是提取某物种指定基因集的网络并导出边列表的R代码比较有代表性library(STRINGdb) # 创建STRINGdb对象指定物种为人类(9606) string_db - STRINGdb$new(version 12.0, species 9606, score_threshold 400) # 读入你的基因列表 genes - read.table(my_genes.txt, header FALSE)$V1 # 基因ID映射 mapped - string_db$map(data.frame(gene genes), gene, removeUnmappedRows TRUE) # 获取网络图 graph - string_db$get_graph() # 提取子网络 subgraph - igraph::induced_subgraph(graph, vids mapped$STRING_id) # 导出边列表 edge_list - igraph::as_data_frame(subgraph, what edges) write.csv(edge_list, ppi_edges.csv, row.names FALSE)注意score_threshold参数是400对应combined score 0.4因为STRINGdb内部用的是0到1000的整数值。Python端的思路一样用requests包调API或者用networkx做后续分析都很顺手。如果只是单次小规模分析没必要绕道编程网页端完全够用。6.4 和功能富集工具的衔接顺序我整理了一套对外输出比较标准的衔接顺序供参考STRING搜索得到PPI网络导出TSV。用Cytoscape做可视化和拓扑参数计算。把原始差异基因列表同时交给Metascape或DAVID做GO/KEGG富集。把Hub基因列表和富集通路结果做交叉找出既在网络中处于枢纽位置、又落在重要通路里的基因这部分基因作为后续湿实验的首选对象。7. 实际使用中容易踩的坑与排查思路7.1 坑1物种选错导致的结果空荡荡用户反馈最集中的问题就是我输入基因了怎么网络是空的。排第一的原因永远只有一个物种选错。你把人类基因符号输入到小鼠物种里虽然大部分同源基因名一样能匹配上但部分基因命名差异大、或者数据库里对应的直系同源还没收录就会导致识别率下降。更离谱的是有人在做植物分析时忘了把默认物种通常是Homo sapiens切过去结果全盘尽弃。排查思路很直接看Summary里Your input到底成功映射了多少个蛋白。如果映射数显著少于基因总数回退检查物种。7.2 坑2基因别名导致输入不识别或误匹配基因命名是生物信息学里永恒的痛。同一个基因在不同文献里有不同别名比如VEGFA也被写作VEGF-ACDKN2A也叫p16、ARF、INK4a。STRING的默认识别对常用别名有收录但不是所有别名都能100%覆盖。我的处理办法是批量基因列表提交前先用一个ID转换工具比如bioDBnet、g:Profiler或者Ensembl BioMart把输入统一成官方gene symbol再粘贴进STRING能把识别率从85%左右提升到95%以上。剩下的那5%不要硬追直接把无法映射的基因排除并备注说明即可。7.3 坑3输入基因数量太多网络变成毛线团有次我输入了800个差异基因结果是浏览器直接卡死页面渲染缓冲区完全打不开网络。后来学乖了超过200个基因就不太适合直接跑STRING页面端全图建议按以下策略处理用基因列表先做一轮GO富集挑出有意义通路里的核心基因通常压缩到50个以内。或者用网络社区的划分方法先基于PPI把所有基因分成模块然后再挑出你要关注的模块做细图。也可以利用STRING的batch search方式只让它计算蛋白-蛋白相互作用的边列表不做全图可视化结果再导入Cytoscape分模块画图。7.4 坑4边太多、textmining权重过高导致网络不可信我在前面提过文本挖掘边的噪音问题。具体场景举例如果输入列表里有CXCL8和TNF它们会在大量炎症相关文献里共现combined score可能高达0.8以上但这两个蛋白是否直接结合并没有多少生化证据。如果文章数据要求严格做敏感性分析时请把textmining的着色边单独剔除或者直接用evidence view人工检查主要边的证据来源比例。另外当你审稿的时候看到别人文章里放了一张密密麻麻的STRING网络图也要先问一句这个网络的置信度阈值是什么textmining边占了多少这不是吹毛求疵而是负责任的数据解读习惯。7.5 坑5结果被版本更迭影响STRING数据库几乎每隔一年就出一个大版本每次更新都会调整部分物种的蛋白质组版本、基因注释和互作数据。你今天导出的TSV跟半年前导出的同一基因集TSV边的数量和得分可能不同。所以做课题时记得在方法部分写清楚数据库版本号和检索日期。这跟写代码记录环境依赖版本是同一个道理。你也不想等论文修回的时候审稿人让你重新跑一次结果发现网络结构全变了。7.6 坑6把STRING当成唯一证据最后说个心态问题。STRING本质上是整合预测性质的数据库它的边来自多个证据通道但predictive edge终究不等于验证过的直接互作。如果你的研究结论是某两个蛋白直接结合那STRING的结果只能作为线索最终还需要CO-IP、pull-down、荧光素酶报告基因等湿实验去验证。生信分析帮你缩小范围、提供方向但代替不了生物学验证。8. 我的实操感悟把参数和取舍得当回事我自己用STRING跑了快六年最大的感受是这个工具表面看起来很简单——粘贴、点选、出图但真正让它为你所用的关键是你对参数和证据来源有清醒的认识。每次着手一个新项目我拿到差异基因列表以后除了把基因输入进去还会顺手记下这次分析用到的物种ID、置信度阈值、网络类型、数据版本。这看起来是小事但在写方法部分时帮了大忙——期刊越来越要求信息透明一个完整的检索策略描述比你事后猜参数要省心得多。另外一个小技巧做网络图给合作者或者论文用的时候记得把Hub基因的标签调大、加粗用颜色区分原始输入基因和扩展基因。审稿人一眼能看出模块和核心节点比你放一张密密麻麻的灰色毛线团要有说服力得多。如果你目前正手头有一批基因不知道从哪下手我的建议很直接先去STRING把它跑一遍看网络形态找几个Hub再做富集这样比你直接闷头跑一大圈工具到最后再回头补网络要高效得多。数据库链接、物种ID、置信度阈值、输入基因列表准备好这四样东西你离一张真正能支撑你生物学故事的PPI网络图就只剩五分钟的操作了。
返回列表