本節(jié)概覽:
1.STRING數(shù)據(jù)庫基本介紹
2.STRING R語言版——STRINGdb的使用:
①STRINGdb數(shù)據(jù)庫導入 ②獲取STRING_id ③PPI繪制
④clustering分簇 ⑤富集分析 ⑥獲取蛋白互作信息
3.STRING 網(wǎng)頁版的簡單使用:
文件上傳、各選項設置、數(shù)據(jù)導出
在得到我們感興趣的基因集后嗤锉,除了對其進行GO等富集分析查看與什么重要的生物學通路相關(guān)咪奖,還可以進行PPI蛋白互作網(wǎng)絡(PPI, Protein-Protein Interaction Networks)的構(gòu)建系宫,查看這些基因之間的聯(lián)系靶壮,進而鎖定關(guān)鍵基因从诲。
關(guān)于關(guān)鍵基因种蝶、hub基因契耿,這篇文章說得很詳細:關(guān)鍵基因和hub基因(生物網(wǎng)絡角度)。
構(gòu)建PPI網(wǎng)絡一般需要使用string數(shù)據(jù)庫獲取蛋白互作信息以及進行互作網(wǎng)絡的可視化螃征。下面探究一下STRING數(shù)據(jù)庫的網(wǎng)頁和R語言版的使用:
其他數(shù)據(jù)庫的使用:
跟著Cell學作圖|9.PPI分析(GeNets數(shù)據(jù)庫)
1. STRING 數(shù)據(jù)庫基本介紹
官網(wǎng): STRING: functional protein association networks (string-db.org)
R語言版本:Bioconductor - STRINGdb
-
STRING是一個已知和預測的蛋白質(zhì)-蛋白質(zhì)相互作用的數(shù)據(jù)庫搪桂。
相互作用包括直接(物理)和間接(功能)聯(lián)系;它們源于計算預測、生物之間的知識轉(zhuǎn)移盯滚,以及其他(主要)數(shù)據(jù)庫聚合的交互作用踢械。
STRING中的相互作用有五個主要來源:基因組預測、高通量實驗魄藕、(保守的)共表達實驗内列、自動化文本挖掘、數(shù)據(jù)庫相關(guān)知識泼疑。
STRING數(shù)據(jù)庫目前涵蓋了來自5′090個物種的24′584′628個蛋白質(zhì)德绿。
2. STRING的R語言版——STRINGdb的使用
STRINGdb說明書:STRINGdb.pdf (bioconductor.org)或使用命令vignette("STRINGdb")
在本地查看說明書荷荤。查看STRINGdb的函數(shù)幫助文檔比較特殊,要用STRINGdb$help("get_graph")的形式移稳。
使用STRINGdb時蕴纳,參數(shù)species代表NCBI Taxonomy物種編碼,可在此查詢:https://cn.string-db.org/cgi/input.pl?input_page_active_form=organisms个粱,其中人為9606古毛,小鼠為10090 。
① STRINGdb數(shù)據(jù)庫導入
- 首先選擇載入的STRINGdb數(shù)據(jù)(數(shù)據(jù)庫版本都许、物種稻薇、蛋白互作得分)和之前基因差異分析得到的DEG。
STRINGdb$new設置使用最新的11.5版本數(shù)據(jù)庫胶征,物種選擇為小鼠(人9606塞椎,小鼠10090 ),蛋白互作得分閾值選擇700(默認400, 低150睛低,高700案狠,極高900,越高可信度越強)钱雷。
DEG結(jié)果中選取前100顯著差異基因用于后續(xù)分析骂铁,并將其基因名保存為gene_diff100.txt文件用于后續(xù)STRING網(wǎng)頁版的使用(特別注意write.table要設quote = F,讓字符不要帶引號 罩抗,否則后續(xù)上傳 STRING容易識別錯誤)
rm(list = ls())
options(stringsAsFactors = F)
library(tidyverse) # ggplot2 stringer dplyr tidyr readr purrr tibble forcats
library(STRINGdb) #BiocManager::install(c("STRINGdb","igraph"),ask = F,update = F)
library(igraph)
setwd("C:/Users/Lenovo/Desktop/test")
load(file = './3.DEG/test_DEG_results.Rdata')
dir.create("7.PPI")
setwd("7.PPI")
######################### 選擇STRINGdb類型 #########################
string_db <- STRINGdb$new( version="11.5", #數(shù)據(jù)庫版本拉庵。截止2022.5.24最新為11.5
species=10090, #人9606,小鼠10090
score_threshold=700, #蛋白互作的得分 默認400, 低150套蒂,高700钞支,極高900
input_directory="") #可自己導入數(shù)據(jù)
########################## 獲取DEG結(jié)果 ############################
## 篩選條件設置
log2FC_cutoff = log2(2)
pvalue_cutoff = 0.05
padj_cutoff = 0.05
## 選擇DEG
need_deg <- DEG_DESeq2[,c(2,5,6)] ; head(need_deg)
colnames(need_deg) <- c('log2FC','pvalue','padj'); head(need_deg)
need_deg$gene <- rownames(need_deg); head(need_deg) #gene symbol或ENTREZID都可
if(T){
gene_up=need_deg[with(need_deg,log2FC>log2FC_cutoff & pvalue<pvalue_cutoff & padj<padj_cutoff),]
gene_down=need_deg[with(need_deg,log2FC < -log2FC_cutoff & pvalue<pvalue_cutoff & padj<padj_cutoff),]
gene_diff=need_deg[with(need_deg,abs(log2FC)>log2FC_cutoff & pvalue<pvalue_cutoff & padj<padj_cutoff),]
}
dim(gene_up);dim(gene_down);dim(gene_diff)
dat <- gene_diff[1:100] ##這里選取前100顯著基因用于后續(xù)分析
write.table(rownames(dat),'gene_diff100.txt',row.names = F,col.names = F,quote = F) #字符不要帶引號
② 獲取STRING_id
- 使用
map
獲取基因名對應的STRING_id用于繪制string_PPI , 基因名為gene symbol或ENTREZID都可以直接對應獲取STRING_id
dat_map <- string_db$map(my_data_frame=dat,
my_data_frame_id_col_names="gene", #使用gene symbol或ENTREZID都可
removeUnmappedRows = TRUE )
hits <- dat_map$STRING_id
③ PPI蛋白互作網(wǎng)絡繪制
- 完成以上步驟后使用
plot_network
即可繪制PPI圖泣懊,還可以給PPI添加上下調(diào)信息(上調(diào)標記為紅色光環(huán)伸辟,下調(diào)標記為綠色光環(huán))
## PPI
png("string_PPI.png",units="in",width = 10,height = 10, res=400)
string_db$plot_network(hits)
dev.off()
## PPI_halo #給PPI添加上下調(diào)信息
# filter by p-value and add a color column(i.e.green for down and red for up genes)
dat_map_color <- string_db$add_diff_exp_color(subset(dat_map, pvalue<0.01),
logFcColStr="log2FC" )
payload_id <- string_db$post_payload(dat_map_color$STRING_id,
colors=dat_map_color$color)
png("string_PPI_halo.png",units="in",width = 10,height = 10, res=400)
string_db$plot_network(hits, payload_id=payload_id )
dev.off()
④ clustering分簇
- STRINGdb還能調(diào)用iGraph進行PPI的clustering分簇,
get_clusters
有這些算法可以選擇: fastgreedy(默認), walktrap, edge.betweenness馍刮,以下代碼演示了用 fastgreedy方法對PPI進行clustering,并展示前6個cluster
## iGraph clustering 互作網(wǎng)絡分簇
#algorithm: fastgreedy(默認), walktrap, edge.betweenness
clustersList <- string_db$get_clusters(string_ids = hits ,
algorithm = "fastgreedy" )
# plot first 6 clusters.
png("string_PPI_iGraph_cluster.png",units="in",width = 15,height = 10,res=400)
par(mfrow=c(2,3))
for(i in 1:6){
string_db$plot_network(clustersList[[i]])
}
dev.off()
⑤ 富集分析
- 除了以上功能窃蹋,STRINGdb還能對基因集進行富集分析卡啰,參數(shù)category指定要使用的數(shù)據(jù)庫(默認為All),其中Process, Component, Function分別對應GO的BP,CC,MF三個子集
#category: All, Process, Component, Function, Keyword, KEGG, RCTM, Pfam, SMART, InterPro
enrichment <- string_db$get_enrichment(string_ids = hits,
category = "Process" )
write.csv(enrichment,"enrichment_GO_BP.csv")
⑥ 獲取蛋白互作信息
- 最后警没,可使用
get_interactions
獲取蛋白互作信息匈辱,再轉(zhuǎn)換stringID為 gene symbol,去除重復(每個相互作用會出現(xiàn)兩次)杀迹,之后導出string_link.csv文件亡脸,可在Cytoscape中進一步進行多種可視化操作
############################## 獲取蛋白互作信息用于后續(xù)可視化 ###############3
dat_link <- string_db$get_interactions(hits)
# 轉(zhuǎn)換stringID為 gene symbol
dat_link$from <- dat_map[match(dat_link$from,dat_map$STRING_id),'gene']
dat_link$to <- dat_map[match(dat_link$to,dat_map$STRING_id),'gene']
colnames(dat_link) <- c('node1','node2','combined_score')
# 去除重復
dat_link <- dat_link %>% distinct(node1, node2, .keep_all = T)
write.csv(dat_link,'string_link.csv',row.names = F,quote = F)
3. STRING網(wǎng)頁版的簡單使用
-
登錄STRING網(wǎng)頁STRING: functional protein association networks。
在Mutiple proteins中上傳我們前面得到的gene_diff200.txt,或者直接將基因名粘貼在第一個框中浅碾,再選擇物種organism為Mus musculus大州。
點擊SEARCH,會進行匹配string中對應的蛋白垂谢,大致預覽一下確認正確后厦画,點擊CONTINUE即可得PPI圖像
- 在分析界面的Vierws選項下可以選擇多種展現(xiàn)方式,Legend選項下展現(xiàn)圖像各標記的含義滥朱;
-
Settings選項下有多項參數(shù)可以選擇根暑,例如minimum required interaction score可以選擇高可信度0.700(默認為0.400),選擇完成后點擊UPDATE即可更新圖像徙邻。
可以看到調(diào)整可信度為0.700后與之前在R中所得圖像是一致的
-
Analysis選項下有PPI網(wǎng)絡的相關(guān)節(jié)點信息與GO排嫌、KEGG等富集分析結(jié)果
-
Cluster選項下還可以對PPI網(wǎng)絡進行分簇,選擇分簇方法(如:kmeans clustering)和分簇數(shù)量(如:4)后點擊APPLY即可缰犁,不同分簇會用不同顏色標注出來
-
在Export選項下進行數(shù)據(jù)導出躏率,一般選擇下載高分辨率的PNG圖片與蛋白互作關(guān)系TSV文件(下圖黃色標記處),TSV文件用于后續(xù)在Cytoscape中進一步可視化PPI網(wǎng)絡
參考資料
STRINGdb.pdf (bioconductor.org)
用R的bioconductor里面的stringDB包來做PPI分析 | 生信菜鳥團 (bio-info-trainee.com)
RNA-seq實戰(zhàn)系列文章:
RNA-seq入門實戰(zhàn)(零):RNA-seq流程前的準備——Linux與R的環(huán)境創(chuàng)建
RNA-seq入門實戰(zhàn)(一):上游數(shù)據(jù)下載民鼓、格式轉(zhuǎn)化和質(zhì)控清洗
RNA-seq入門實戰(zhàn)(二):上游數(shù)據(jù)的比對計數(shù)——Hisat2+ featureCounts 與 Salmon
RNA-seq入門實戰(zhàn)(三):從featureCounts與Salmon輸出文件獲取counts矩陣
RNA-seq入門實戰(zhàn)(四):差異分析前的準備——數(shù)據(jù)檢查
RNA-seq入門實戰(zhàn)(五):差異分析——DESeq2 edgeR limma的使用與比較
RNA-seq入門實戰(zhàn)(六):GO薇芝、KEGG富集分析與enrichplot超全可視化攻略
RNA-seq入門實戰(zhàn)(七):GSEA——基因集富集分析
RNA-seq入門實戰(zhàn)(八):GSVA——基因集變異分析
RNA-seq入門實戰(zhàn)(九):PPI蛋白互作網(wǎng)絡構(gòu)建(上)——STRING數(shù)據(jù)庫的使用
RNA-seq入門實戰(zhàn)(十):PPI蛋白互作網(wǎng)絡構(gòu)建(下)——Cytoscape軟件的使用
RNA-seq入門實戰(zhàn)(十一):WGCNA加權(quán)基因共表達網(wǎng)絡分析——關(guān)聯(lián)基因模塊與表型