答读者问(8):如何批量查询marker基因(对应的蛋白)会不会在膜上表达?
做实验的朋友们对这个问题应该是很感兴趣的,因为涉及到后续能不能实验验证。
一般的做法是拿基因名或者蛋白名去查文献,查网站。我知道的:uniprot
、PDB
、the human protein atlas
都能查到蛋白质表达定位相关的信息。
以uniprot
为例,假设我想查询CD79B这个基因/蛋白,网站输入基因名,在结果页面的左侧菜单栏,点击Subcellular location
之后,蛋白的亚细胞定位就显示出来了:
有两个参考结果:uniprot annotation和GO annotation
两个参考结果的意思差不多,都说的是膜蛋白
。
但是如果我把这个方法发给他,我
内心会不安
,因为一个一个查太耗时间了。
所以就写了这篇帖子,教他如何批量查询。
先来看看最初的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得到的数据框
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")
最后的表格是这样的:
代码很容易,使用起来应该没有什么难度。
这种批量的方法用到的R包,UniprotR
,其实是通过API的方法访问Uniprot网站获取信息。
我上一次讲的如何获取kegg通路的基因列表,也是用的这类方法,涉及到的R包是KEGGREST
。
并不是每次给读者答疑我都会写帖子,网上很容易搜到答案的,我不想写。
ok,这一期的答疑就到这里,祝大家生活愉快!
往期答疑
答读者问(7):关于doublet
答读者问(6):单细胞TPM矩阵如何分析?
答读者问(5):提取monocle2的拟时序/坐标重新画图
答读者问(4):inferCNV的几个问题
答读者问(2):细胞cluster没有聚在一起;去不去批次效应
答读者问(1):非模式物种找marker;如何根据marker定义细胞类型
共有 0 条评论