如何利用efetch从NCBI中批量下载数据?


假设我要从NCBI中下载全部水稻的mRNA序列,如何实施?

找序列

第一步,肯定是找到相关序列。

我从ncbi taxonomy进入,搜索oryza。因为要搜索mRNA核酸序列,从此选择nucleotide,点击Go:
image.png

注意,如果你真正想要的是哪些序列。比如,稻属中可能野生稻之类的并非你想要的。这时就要用oryza sativa搜索,或者从oryza中选择合适的。
image.png

进一步在左侧栏中选择mRNA,此时出现在Search details中的关键字组合就是我们的过滤筛选条件,注意不是搜索框中关键字,否则你下载的将是未过滤的。
image.png

下序列

找到序列之后,就可以下载序列。通常我们利用NCBI网页中的Send to来进行下载。
image.png
但是这种方法很不稳定,经常会掉线,下载的序列很可能不完整,并不适合大批量序列的下载。

这时,Entrez Direct就派上用场了。其中三个常见的命令:

  • esearch:对进行Entrez检索。
  • efilter:对esearch的检索结果进行过滤
  • efetch:对上面两个操作的结果进行抓取(下载)

比如以上示例,我们可以用Search details中的关键字组合来进行下载。

esearch -db nucleotide -query 'txid4530[Organism:exp] AND biomol_mrna[PROP]' | efetch -format fasta >all_oryza_mRNA.fasta

从速度来看,还不如网页直接下载。但因为是命名行,可放在后台慢慢下载。相对更为稳定。

Entrez Direct的功能很强大,文献、结构、基因、表达等数据都可下载。BioPerl和BioPython都有相应的用法,感兴趣时可以慢慢摸索。

官网命令行:
https://www.ncbi.nlm.nih.gov/books/NBK179288/#chapter6.Sequence_Records

批量下载NCBI数据的利器——Entrez Direct
Python Entrez.efetch方法代码示例

posted @ 2021-08-06 00:02  生物信息与育种  阅读(898)  评论(0编辑  收藏  举报