原始数据下载专题 | datasets——基因与基因组数据查询和获取的NCBI官方解决方案

背景

原始数据下载专题到最后一个工具啦,前面介绍的很多工具都是下载原始的测序数据的,而这个则不同,它是NCBI官方推出的用于查询和获取基因、基因组数据的工具。

NCBI的官方工具大家有印象的可能是Entrez,但是今天要介绍的这个datasets是一套新的更现代化的工具:

简单介绍Entrez

EntrezNCBI的综合搜索和检索系统,涵盖多个数据库,如PubMed、基因、核酸序列和蛋白质序列等。它允许用户通过固定的URL语法进行搜索、链接和检索操作。这些工具使研究人员能够以编程方式自动访问NCBI的各种数据库。

简单介绍Datasets

Datasets是NCBI推出的现代化工具,旨在简化基因组、分类和基因信息的访问和下载。它提供了一个统一的入口,用户可以通过Web界面命令行界面获取所需的数据集。NCBI已宣布,Datasets将取代传统的Genome和Assembly资源,提供更流畅的用户体验。

安装

conda一键完成:

conda install ncbi-datasets-cli

这个工具还在活跃的开发中,基本上半个月就更新一个小版本,目前最新版是16.39.0

如果你直接搜索datasets,那个是huggingface旗下的用于机器学习模型训练的数据集,跟咱们今天介绍的不是一个东西,要分清楚哦。

使用

datasets主要的三个子程序分别是:

  • summary: 打印包含基因、基因组、分类学或病毒元数据的数据报告
  • download:以zip压缩包形式下载一个基因、基因组或者病毒的数据集
  • rehydrate:解除冻结已下载的冻结数据集
Data Retrieval Commands
  summary     Print a data report containing gene, genome, taxonomy or virus metadata
  download    Download a gene, genome or virus dataset as a zip file
  rehydrate   Rehydrate a downloaded, dehydrated dataset

前两个功能大家应该好理解,我解释一下第三个rehydrate:

在NCBI的datasets命令行工具中,rehydrate命令用于处理之前下载的“脱水”数据集。

当您使用datasets download命令并添加--dehydrated标志下载数据集时,系统会创建一个包含元数据和数据文件位置的压缩包,但不包含实际的数据文件。

这种方法适用于需要下载大量数据的情况,因为初始下载的文件较小,便于传输和管理。

下载并解压缩该压缩包后,您可以使用rehydrate命令根据元数据中的文件位置下载实际的数据文件,从而“重新填充”数据集。这种两步下载过程提高了大规模数据集的下载效率和灵活性。

下载这个功能比较常用咱们先来使用这个。
下载一共能下载四个方面的内容:

  • gene:下载一个基因的蛋白质和DNA序列
  • genome:下载一个基因组的组装注释数据
  • taxonomy:根据进化分类下载数据,例如taxon human,sars-cov-2
  • virus: 下载病毒相关的数据

场景1:下载基因组数据

基因组文件下载

在大多数的生信分析的准备工作里都有要下载基因组这一步,以前都是打开网页不断地查询之后复制链接地址然后下载,现在直接一行命令就可以完成了。

genome这个子程序里,又分为通过taxon或者accession来下载。

例如官方给的案例:

datasets download genome accession GCF_000001405.40 --chromosomes X,Y --include genome,gff3,rna
datasets download genome taxon "bos taurus" --dehydrated
datasets download genome taxon human --assembly-level chromosome,complete --dehydrated
datasets download genome taxon mouse --search C57BL/6J --search "Broad Institute" --dehydrated

taxon途径下载一下拟南芥Arabidopsis thaliana)的基因组文件。

datasets可以不仅仅是把参考基因组文件下了,还把一整套的基因组注释文件也一起下载下来:

datasets download genome taxon  "Arabidopsis thaliana" --reference --include genome,gff3,gtf,rna,cds,protein --filename Arabidopsis.genome.zip
  • 如果不指定--filename则默认会使用ncbi_dataset.zip作为输出的文件名。
  • --reference用于指定NCBI官方打了reference标记的版本,也就是官方认定的参考基因组版本,如果不加这个参数,默认会下载所有的基因组版本。
  • --include用于指定要下载的内容,genome,gff3,gtf,rna,cds,protein,gbff,seq-report都是可选的,默认是仅下载genome
  • 像一些常见的物种有nickname,例如humanmouse就可以不用写拉丁名直接用常用名词下载了。

下载一个物种的所有基因组组装版本

当涉及到大量数据下载的时候就可以用--dehydrated这个参数先脱水, 也就是先获取信息,然后再rehydrate下载想要的信息。

datasets download genome taxon "Arabidopsis thaliana" --dehydrated --filename Arabidopsis.genome.all.zip

下载下来之后解压开,有文件里有一个叫ncbi_dataset/fetch.txt,这个文件大概长这样:

https://api.ncbi.nlm.nih.gov/datasets/fetch_h/R2V0UmVtb3RlRGF0YWZpbGU/eNqTyuRKz0tOytROKymw0tdPT83Lz00t1k_MydF3d3bUNzAwAGJDfXNjUxA_3gAEDIE8PaP4EEfPIEMDPUOcEvFg0zKT9dLyEvXSqwwYLRgBs5Ud6A        0            data/GCA_000001735.2/GCA_000001735.2_TAIR10.1_genomic.fna
https://api.ncbi.nlm.nih.gov/datasets/fetch_h/R2V0UmVtb3RlRGF0YWZpbGU/eNqTyuXKzktOytROKymw0tdPT83Lz00t1k_MydF3d3bUNzAw0DcyNNQ3MjcF8eOBfCAXyNMzjHcM9gWzywzxSMWDTcxM1kvLS9RLrzJgtGAEADJ9Hx4       0            data/GCA_000211275.1/GCA_000211275.1_ASM21127v1_genomic.fna

看起来是一个三列的文件,第一列是要下载的文件的URL地址,第二列是个文件大小,显示为0,这可能表示文件大小未知或未指定。

第三列表示文件在本地存储时的路径。
我把前两行的内容代替掉整个fetch.txt文件,然后运行下面这个

datasets rehydrate --directory .
萌哥吐槽时间:

它这个功能有点傻,是自动匹配*/ncbi_dataset/fetch.txt这样一个地址的,如果重命名了文件夹就找不到了,会报下载失败。

也不能在上面的命令里指定datasets rehydrate --directory ncbi_dataset/,因为它会去找ncbi_dataset/ncbi_dataset/fetch.txt这样的一个地址然后告诉你找不到这个地址而下载失败。不够智能啊。

下载下来的文件会存放在./ncbi_dataset/data以各自的accession id命名的文件夹里。

场景2:下载基因数据

可以用以下的方式下载gene数据

datasets download gene gene-id 672
datasets download gene symbol brca1 --taxon "mus musculus"
datasets download gene accession NP_000483.3
datasets download gene gene-id 2778 --fasta-filter NC_000020.11,NM_001077490.3,NP_001070958.1

gene支持下面这四种方式:

  • gene-id: 是一串纯数字,例如著名的人类的tp53基因7157
  • symbol:基因的名称,比如brca1tp53
  • accession:基因的NCBI编号
  • taxon:NCBI的Taxonomy ID,拉丁名或者是常用名。

有的时候做进化树,会使用到特定的基因,比如酵母(saccharomyces cerevisiae)的RPO21基因。

这个基因的gene id851415,而RPO21则是Official SymbolYDL140C是这个基因的Locus tag(不支持这个关键字)。
但是我尝试了几次:

datasets download gene symbol rpo21
datasets download gene symbol RPO21 #试了试大写

得到的结果都是

Error: No genes found that match selection
Use datasets download gene symbol  --help for detailed help about a command.

看起来这个symbol的功能可能目前只适用于人类的Official Symbol,感觉可以去提一个issue。

Symbol下载tp53倒是非常丝滑

datasets download gene symbol tp53 --ortholog all --filename tp53.zip
  • --ortholog是把所有物种中含有这个symbol的基因都下载下来。感觉很适合用在做系统发育树的分析上。

gene-id的方法去下载数据倒是很容易。

datasets download gene gene-id 851415 --filename RPO21.zip

下载下来的压缩文件默认情况下会同时包含DNA序列和蛋白质序列。

如果你想下载时同时包含5' UTR或者3' UTR的信息,也可以也可以用--include来指定。

萌哥碎碎念

也没想到自己真能把这个系列写完,之后可能还想再更新一个大道至简的原始数据下载方法,介绍一下https://sra-explorer.info/ 这个工具结合wget或者curl或者axel的下载方式作为这个专题的收尾,然后再整理成一个大合集推文方便大家横向比较。

接下来距离我毕业大概还有五百多天,一半年,说长不长说短不短,要开始转变重心从咔咔分析数据到开始学习如何写文章了。我也收集了一些关于如何写学术论文的文章,到时候可以分享读文献笔记作为一个“从零开始学习学术论文写作”的专题给大家。总的框架是输入,模仿,输出,大家敬请期待哈。

说起来似乎是明白写公众号的意义了,其实还是主要是服务我自己,除非你是广告主来约投放,那么可以为了你写东西,否则绝大多数的内容都是为我自己服务的。当然包括给粉丝回答问题修复bug这也是一种为我服务。写推文的过程也是我自己整理学习和内化的一个过程,挺好。

版权声明:
作者:zhangchen
链接:https://www.techfm.club/p/180845.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>