做實(shí)驗(yàn)的朋友們對這個(gè)問題應(yīng)該是很感興趣的凶伙,因?yàn)樯婕暗胶罄m(xù)能不能實(shí)驗(yàn)驗(yàn)證郭毕。
一般的做法是拿基因名或者蛋白名去查文獻(xiàn),查網(wǎng)站函荣。我知道的:uniprot
显押、PDB
、the human protein atlas
都能查到蛋白質(zhì)表達(dá)定位相關(guān)的信息傻挂。
以uniprot
為例乘碑,假設(shè)我想查詢CD79B這個(gè)基因/蛋白,網(wǎng)站輸入基因名金拒,在結(jié)果頁面的左側(cè)菜單欄兽肤,點(diǎn)擊Subcellular location
之后,蛋白的亞細(xì)胞定位就顯示出來了:
有兩個(gè)參考結(jié)果:uniprot annotation和GO annotation
兩個(gè)參考結(jié)果的意思差不多绪抛,都說的是膜蛋白
轿衔。
但是如果我把這個(gè)方法發(fā)給他,我
內(nèi)心會不安
睦疫,因?yàn)橐粋€(gè)一個(gè)查太耗時(shí)間了害驹。
所以就寫了這篇帖子,教他如何批量查詢蛤育。
先來看看最初的marker gene表格:
然后開整
# install.packages("UniprotR")
# BiocManager::install("GenomicAlignments")
library(UniprotR)
library(tidyverse)
library(org.Hs.eg.db)
markerdf=read.csv("test_marker_gene.csv",header = T) #Seurat::FindAllMarkers得到的數(shù)據(jù)框
namedf=clusterProfiler::bitr(markerdf$gene,fromType="SYMBOL", toType=c("UNIPROT"), OrgDb="org.Hs.eg.db") #會有一對多的情況
namedf$s_c=""
namedf$go_c=""
for (i in 1:nrow(namedf)) {
go_cellular_component <- GetProteinAnnontate(ProteinAccList = namedf$UNIPROT[i],columns = "go_c")
subcellular_location_res=GetSubcellular_location(ProteinAccList = namedf$UNIPROT[i])
subcellular_location_res=subcellular_location_res[,1]
namedf$go_c[i] = go_cellular_component
namedf$s_c[i] = subcellular_location_res
print(i)
}
colnames(namedf)[1]="gene"
markerdf2=markerdf%>%left_join(namedf,by = "gene")
最后的表格是這樣的:
代碼很容易宛官,使用起來應(yīng)該沒有什么難度葫松。
這種批量的方法用到的R包,UniprotR
底洗,其實(shí)是通過API的方法訪問Uniprot網(wǎng)站獲取信息腋么。
我上一次講的如何獲取kegg通路的基因列表,也是用的這類方法亥揖,涉及到的R包是KEGGREST
珊擂。
并不是每次給讀者答疑我都會寫帖子,網(wǎng)上很容易搜到答案的费变,我不想寫摧扇。
ok,這一期的答疑就到這里,祝大家生活愉快挚歧!
往期答疑
答讀者問(7):關(guān)于doublet
答讀者問(6):單細(xì)胞TPM矩陣如何分析扛稽?
答讀者問(5):提取monocle2的擬時(shí)序/坐標(biāo)重新畫圖
答讀者問(4):inferCNV的幾個(gè)問題
答讀者問(2):細(xì)胞cluster沒有聚在一起;去不去批次效應(yīng)
答讀者問(1):非模式物種找marker滑负;如何根據(jù)marker定義細(xì)胞類型