1. 从基因列表到蛋白互作网络:STRING数据库实战入门
当你拿到一份长长的差异表达基因列表,看着几十上百个基因名,是不是感觉有点无从下手?别担心,这几乎是每个做转录组分析的朋友都会遇到的“甜蜜的烦恼”。基因不是孤立工作的,它们编码的蛋白质就像社会中的个体,通过复杂的“社交网络”相互联系、协作,共同完成生命活动。蛋白质-蛋白质相互作用(PPI)分析,就是帮你解开这个社交网络图谱的关键钥匙。
我刚开始做数据分析的时候,也对着基因列表发过愁。直到学会了用STRING数据库,整个分析思路才豁然开朗。简单来说,STRING是一个收录了海量已知和预测的蛋白质互作信息的公共数据库。它就像一个全球蛋白质的“社交关系档案库”,你只需要把感兴趣的基因(或它们对应的蛋白质)名单给它,它就能告诉你:这些蛋白质之间谁和谁认识(有相互作用),以及它们关系的“铁不铁”(互作的可信度得分)。这对于从系统层面理解你的差异基因集在干什么、哪些是处于调控核心的“关键先生”,有着不可替代的作用。
在实际项目中,我通常会在完成差异表达分析、功能富集分析(GO、KEGG)之后,紧接着进行PPI网络分析。这能帮你从一堆看似散乱的基因中,拎出那些处于网络枢纽位置的核心基因,这些基因往往是后续实验验证(比如敲除、过表达)的优先候选。而且,一个直观、美观的网络图放在文章里,也是提升图表质量和故事逻辑性的利器。下面,我就手把手带你走一遍完整的流程,从数据准备、数据库查询到高级可视化,我会把每个步骤的细节和踩过的坑都分享出来,保证你能用自己的数据复现出来。
2. STRING数据库深度解析与数据准备
2.1 理解STRING数据库的核心参数
STRING用起来不难,但要想用好,得先明白它背后的几个关键参数,这直接决定了你构建的网络的质量和可信度。首先是最重要的 score_threshold,也就是互作得分阈值。STRING会给每一对互作关系一个综合评分(combined score),这个分数综合了实验证据、数据库记录、文本挖掘和计算预测等多种来源的可信度。分数范围是0到1000,分数越高,互作关系越可靠。
在创建STRINGdb对象时,你需要设定这个阈值。原始文章里用了默认的400,这是一个比较宽松的起点。在我的经验里,如果你分析的基因数量不多(比如小于50),想看到一个更紧密、更核心的网络,可以把阈值调到700甚至更高,这样留下的都是高置信度的互作关系,网络会更简洁,核心节点更突出。反之,如果你的基因集很大,或者你是在做探索性分析,不想错过任何潜在联系,可以暂时用400或更低的值先跑一遍看看全景。记住,这个阈值后续可以随时调整并重新筛选,非常灵活。
另一个关键参数是 species,即物种ID。人类是9606,小鼠是10090。这个一定要核对清楚,不然映射会失败。STRING支持非常多物种,如果不确定,可以去STRING官网查询。对于数据库没有直接收录的物种(比如一些非模式动植物),也别慌。STRING提供了基于同源性的预测功能。你可以通过BLAST比对,找到你的目标基因在模式生物(如人类、小鼠)中的同源基因,然后利用同源基因的互作关系来间接构建网络。虽然这是预测性的,但对于缺乏直接数据的研究领域,这依然是极其宝贵的线索。
2.2 准备你的基因列表并完成ID映射
数据分析的第一步总是数据准备。你的基因列表很可能是一系列基因符号(Gene Symbol),比如“TP53”、“EGFR”。但STRING数据库内部主要使用它自己的STRING ID或者常见的标准ID(如Entrez ID)来进行精确匹配。因此,我们需要将基因符号转换为STRING认可的ID。
这里我用一个实际的例子来演示。假设我手头有一个名为my_genes的向量,里面装着一些基因符号。我们首先用clusterProfiler包的bitr函数进行ID转换。这一步非常关键,因为基因别名、旧版符号等问题可能导致映射失败。
# 加载必要的R包
library(tidyverse)
library(clusterProfiler)
library(org.Hs.eg.db) # 如果是小鼠,则用 org.Mm.eg.db
library(STRINGdb)
library(igraph)
library(ggraph)
# 假设这是你的差异基因列表(基因符号)
my_genes <- c("TP53", "BRCA1", "EGFR", "AKT1", "MYC", "CDKN1A", "MDM2", "PTEN")
# 将Gene Symbol转换为Entrez ID
gene_df <- data.frame(SYMBOL = my_genes)
mapped_genes <- bit


4857

被折叠的 条评论
为什么被折叠?



