NCBI的GeneRIF数据库总结了已发表的文章来注释基因的功能,可以找到基因的绝大部分功能信息,帮助我们筛选候选基因。(最全面的信息肯定需要自己慢慢挖掘,但是对于我来说,这个数据库就够够的了
少数基因功能的查找:直接在NCBI网站上的Gene database进行中搜索
image.png下拉找到GeneRIF,点击see all GeneRIFs
image.png点击Send to可以导出该基因的所有信息
image.png批量下载
得到基因信息:
setwd("~/wangzh/批量爬取NCBI基因注释数据")
rm(list=ls())
library(clusterProfiler)
library(RCurl)
library(stringr)
# 读入基因列表:
library(readr)
test_genes <- read_csv("test_genes.csv")
基因信息
image.png
names(test_genes)[2] <-"gene"#对数据框的列名进行重命名
test_genes =sapply(strsplit(test_genes$gene,":precursor"),"[",1)#"["代表提取,1代表第一个字符串
test_genes =paste0("MIR",test_genes)
class(test_genes)
image.png
# 将gene symbol转为entrze ID
genes <- bitr(test_genes, fromType="SYMBOL", toType="ENTREZID", OrgDb="org.Hs.eg.db")
genes$NCBI_url <- paste("https://www.ncbi.nlm.nih.gov/gene/",genes$ENTREZID,sep="")
genes=as.matrix(genes)
write.table(genes,file="genes.txt",sep="\t",quote=F,col.names=F)
genes.txt的内容
image.png
R和Linux中写个简单的脚本就可以批量提取所有候选基因的GeneRIFs信息了,GeneRIFs信息网址如下:https://ftp.ncbi.nlm.nih.gov/gene/GeneRIF/
首先找到包含GeneRIF所有信息的文件(generifs_basic.gz),下载完成后先将它解压
脚本如下:
#Linux上
cd 批量爬取NCBI基因注释数据
source activate rna-seq
wget -c https://ftp.ncbi.nlm.nih.gov/gene/GeneRIF/generifs_basic.gz
gunzip generifs_basic.gz
less generifs_basic
wc -l generifs_basic ##查看一下有多少列
generifs_basic数据太大,R读出来的格式不正确(默认以空格键读取,所以句子会被拆成一个个的单词)
通过查看entrze ID,发现与第二列的Gene ID值对应。
awk '{print $3}' genes.txt > gene_id
less gene_id
cat gene_id | while read line; do grep $line generifs_basic >> genefir; done
多次使用>>不会覆盖原文件,多次使用>会覆盖原文件,这里我只跑了一次代码,所以>>和>都可以。
当然了,最后把所有的基因名称添加上去。我比较笨,使用Excel操作的,先把所有的Gene ID值提出来放入一个新的Excel,然后使用替换的方法将名称手动替换(有些基因:
724028 MIR658
100302119 MIR1538
100302168 MIR1257
693196 MIR611
没有功能注释,所以找不到,这时候需要自己重新看文献或选择其他办法,反正我就报告老师,看看他咋处理!!!)genefir文件的Gene ID列前(后)插入新的列,将基因的名称复制到新的列。按照列升序排列,发现有些Gene ID不属于我寻找的范围(可能是由于PubMed ID (PMID) list列中的数字与ENTREZID重合了),确定后删除不需要的行。
最后得到的数据
参考:一个通过文献注释基因功能的数据库【Gene RIF】
推荐一个批量从NCBI下载资源的链接:Harvesting Data From NCBI
批量下载资源还需要了解APIs
网友评论