熟悉数据库的下载

2021-12-21 16:48:46 浏览数 (1)

一、生物数据库简介

生物数据的处理本质上有两条路线:其中一条是序列本身具有结构特征,那么就可以通过软件算法来实现,比如预测基因,非编码 RNA,重复序列的分析等;另一条路线是序列本身没有结构特征,只能通过与已有序列进行比对,根据已知信息来推测未知信息,比如基因功能注释,16SrRNA 物种鉴定等,常见的一个例子就是得到一条序列,需要判断序列来自于哪个物种,就只能与数据库进行比对。

生物信息中说的数据库和 IT 行业中说的数据库还有些不同。这里的数据库更像一个信息集合,而非数据管理技术。比如基因的功能,必须与已知信息去比对查找。这个类似于查字典,遇到一个词语不知道什么意思,直接去查字典,查到了就找到了,查不到就没办法了。除了基因功能,微生物分类,变异与表型关系等都属于这种,需要借助已知数据库。如果数据库查不到就没有办法了。

所以,很多生物信息分析结果要严重依赖数据库的质量。

二、生物数据库常见问题?

和生物软件一样,生物数据库也有很多可供选择,但是这同样也存在很多问题。下面我们来总结一下。

2.1 数据库过于冗余

同样一个分析,就会有很多个类似的数据库。例如 16S 的物种分类分析,就有 silva,greengene,rdp,Fungene 等几个可供选择。有时为了注释结果完整,每个库都试一遍,合并结果非常繁琐。

2.2 长时间不在更新

数据库的质量参差不齐,给用户造成很大的干扰。有一些发表之后长时间不在更新,例如ARDB 数据库,一个用于注释耐药基因的数据库,自从 2009 年发表之后已不在更新,但目前依然有很多文章在引用该数据库。

ARDB 数据库网站截图

2.3 存在误差

对于数据库的使用,我们同样还是不能过于迷信数据库,为什么呢,因为存在一个误差的问题,这就涉及到基因的同源性判断问题,也就是数据库中的精确性直接影响到比对结果的判断,例如数据库中一个基因功能标识不准确,那么与之比对的所有序列都会有问题,因此,对于数据库比对的结果还需要更进一步的验证。

依赖数据库还有一个问题,如果数据库信息错了怎么办呢,这就有很大的问题,这个错误会被无限放大,所有与之相关的注释结果全错了。这就要求我们在使用数据库的时候一定要小心,一是要注意数据库的准确性,二是,也不能完全相信数据库的结果。

2.4 相互不兼容

对于微生物物种分类,有很多的分析软件,每个软件会自建数据库索引文件,这些索引相互之间不兼容,非常麻烦,每次使用新的数据库都需要重新建立索引文件。

下表来自文章《Benchmarking Metagenomics Tools for Taxonomic Classification》

2.5 版本问题

数据库需要不断加入新的数据,或者纠正已有信息,这样就会有不同的版本。使用不同的版本最终分析的结果可能会差别很大。例如人基因组参考序列存在多个版本。而且即使是同样的序列,存储在不同数据库的命名也有很大差别,例如来自 UCSC 数据库中,一般命名为hg18,19,hg38。而在 NCBI 数据库中命名为 GRch36,37,38,GRC 是 Genome Reference Consortium 的简称,而 embl 数据库中则是 release 然后跟一个版本号,有非常多的版本,千人基因组命名为 b36,b37。

目前,广泛使用的版本是 GRCH37 和 GRCH38。2009 年,the Genome Reference Consortium (GRC)发布了第 19 版人类基因组 GRCH37,也常被称为 hg19。GRCH37 被广泛应用于数据分析。2013 年,GRC 发布了 GRCH38。但由于注释工具、数据库的不健全及升级基因组工作繁杂,时至今日,GRCH37 仍被相当程度地使用。

不同数据库采用不同的命名方式,UCSC 命名最简单,就是 hg 加数字,比如 hg18,hg19和 hg38 这些版本比较常用;NCBI 的命名更复杂一些,是 GRCH 开头,然后数字,36,37,38等。而 ENSEMBL 命名就更复杂了,只给出版本比如 52,59,61,80,81,82 等。这三种命名方式有一个对应关系。如下表所示:

2.6 数据库权威性

由于生物学问题的复杂性,与数据库比对的结果不一定就是百分之百准确的,还需要做基因的验证。例如注释得到一个基因,对一个突变机型注释,物种分类的结果等。例如通常都可以将测序序列与 NCBI 直接进行 blast 比对进行物种分类将定。但是 NCBI 物种分类数据库有给出声明。声明里有介绍到 NCBI 的物种分类数据库并不是权威的分类,只是收集用户提交的信息,结果还需进一步验证。

NCBI 物种分类数据库声明

三、如何查找生物数据库?

OXFORD Journals 在线页面包含一个常用数据库的页面。里面收集了大量生物学常用的数据库内容。数据库按照功能进行分类,可以在 http://oxfordjournals.org 找到需要的数据库。数据库按照功能进行分类。和生物软件一样,里面很多数据库都处于僵死状态,网站还在,已经很久没有更新了。

数据库列表:https://www.oxfordjournals.org/nar/database/cap/

同样和选择生物软件一样,选择生物数据库也尽量要选择引用率,使用率高的。

四、下载数据库的几种方法

4.1 数据库下载方法选择

数据库的下载比较容易,最重要的就是找到数据库的下载地址即可。

如果你想要下载数据,首先要明确三个问题。

第一:下载哪些哪种类型的文件

这些数据都到哪里去找呢,这个大家要有一些基本常识,比如参考序列一般都在三个核酸数据库,NCBI,embl,ddbj 等,ddbj 这个用的并不多。清楚每个网站都有哪些内容,比如在做 RNAseq 时需要 gtf 文件,可以到 embl 下载 gtf 格式。还有就是 ucsc 基因组浏览器网站也提供很多数据下载,另外,一些基因组序列有单独的网站提供数据下载。这些大家在平时要多注意总结。

第二:找到下载地址

登录网站之后,要能够找到数据的下载链接,其实也就是数据所在服务器里的存储位置。这个是非常重要的。现在的很多网站内容越来越多,虽然我们知道可以去 NCBI 或者 EMBL 下载物种参考基因组,但是从里面找到数据位置有时候也是比较困难的,拿 NCBI 为例,里面数据实在是太多了,各种数据库,比如你要能区分 genebank 与 refseq 的差别,才能找到数据下载链接。

另外还有一个问题就是数据的权限,有些网站数据库是完全公开的,找到链接就可以下载,比如 ncbi,embl,ucsc 这种数据库,还有一些是需要注册才能够下载的,一般还要求是教育域名的邮箱才能注册,比如 RepeatMasker 数据库,还有一些是有权限控制的,比如 TCGA数据库,需要很严格的申请流程,才能下载到 leve1 和 level2 的数据,也就是原始数据以及原始数据比对的 bam 文件,普通用户是申请不了的。还有一些数据库是收费的,只有付费用户才能够下载使用,比如 kegg 数据库等。

第三:选择合适的工具

当你千辛万苦找到数据库下载链接之后,那么接下来就可以开始下载了,选择合适的下载工具也非常重要。例如你可以直接从网页端进行下载,这其实是 http 协议下载,也可以采用ftp 进行下载,这两种方式很多时候大家都是下载到本地 windows 系统,然后在远程传输到服务器端。其实是可以直接在服务器端采用命令进行下载的,这样省去传输的步奏,也减轻了本地硬盘的反复读写消耗。

4.2 命令行下载

下载生物数据可以使用个人电脑的 windows 或者 macos 系统,然后传输到服务器上,但这样操作稍微麻烦。但有时个人计算机上具有更快的网络,也可以使用一些高速下载工具,这样可以直接下载,然后传输到服务器上。也可以使用 Linux 系统下的下载命令,直接下载到服务器里。Linux 命令行下载的工具其实有很多,系统自带 wget 和 curl 命令,也可以自行下载 axel 等命令。wget 非常方便,给定链接地址,就可以直接 wget 下载了。wget 和 curl 都支持 http,ftp 等多种协议。

代码语言:javascript复制
wget -bc ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/technical/reference/human_g1k_v37.fasta.gz

wget 常用选项参数:

-o 下载信息写入日志文件

-O 下载时重命名文件

-c 断点续传

-b 放到后台下载

-r 递归下载,用于下载整个目录

–spider 测试下载链接是否可用

-i 从文件批量下载,将下载地址写入文件

–mirror 镜像网站

-r -A 下载指定格式文件

wget 也可以直接输入账户密码访问 ftp 服务器进行下载。

加 --ftp-user 接用户名, --ftp-password 接密码,然后给定下载链接直接访问 ftp 服务器进行下载。

代码语言:javascript复制
wget 下载文件夹
wget -bc -r ftp://ftp.ncbi.nlm.nih.gov/genomes/refseq/viral

curl 的使用和 wget 类似,不过 curl 可以给出预测下载完成还剩余多少时间,并通过进度条来显示下载进度。

关于 wget 和 curl 更多功能,可以加--help 选项查看帮助文档。

4.3 ftp 下载

FTP 是 File Transfer Protocol(文件传输协议)的英文简称,相比于 http 协议,更加稳定,传输速度也更快。很多网站提供 ftp 协议的数据下载。

ncbi 的 ftp 地址为,ftp://ftp.ncbi.nlm.nih.gov/

embl 的 ftp 地址为:ftp://ftp.ensembl.org/pub/

访问 ftp 服务器需要四个元素。

第一:ftp 的地址,

第二,用户名和密码,可以匿名访问,Anonymous,也就是数据是公开的,不需要要填写。

第三,端口号,ftp 默认端口号是 21,一般也不用填写;

第四,连接工具。

其实 ftp 的地址是可以直接通过浏览器或者资源管理器进行访问的。通过浏览器访问非常不方便,不能直接下载整个文件夹,而且不能断点续传。Linux 系统可以使用 ftp 命令访问下载,但是由于 ftp 命令不支持文件夹下载,lftp 工具更加强大,下面我们直接演示一下通过lftp 工具来下载数据

代码语言:javascript复制
lftp,后面跟用户名,然后 at 符号,ftp 服务器地址。
lftp ftp://ftp.ncbi.nlm.nih.gov/
lftp anonymous@ftp.ncbi.nlm.nih.gov/blast/db
这里密码是空的,我们直接敲回车即可
ls 列出文件
>ls
>cd /blast/db
> mget swissprot.tar.gz
mirror 下载文件夹
>mirror v4
> exit

4.4 高速下载

Asprea 是一款非常神奇的工具,它可以极大的提高数据传输的效率,Asprea 是一家专门做数据传输解决方案的公司,后来被 IBM 公司收购了。Aspera 解决方案的核心是 Aspera FASP (Fast, Adaptive and Secure Protocol) 传输专利技术,它是一项突破性传输协议,利用现有广域网 (WAN) 基础架构和通用硬件,传输速度比 FTP 和 HTTP 快数百倍。FASP 提供企业级安全性、出色的可靠性以及卓越的带宽控制能力。有测试显示原本在美国国内 FTP 需要超过 10 小时才能传完的数据,现在 Aspera 只需 8.4 秒就能搞定。总之就是数据传输速度非常非常快。

目前 NCBI 以及 EBI 等机构的数据都支持 aspera 下载。首先我们来介绍一下 Aspera 的下载安装。

http://asperasoft.com/

代码语言:javascript复制
安装 aspera
wget https://download.asperasoft.com/download/sw/connect/3.9.9/ibm-aspera-connect-3.9.9.177872-linux-g2.12-64.tar.gz
tar -zxvf ibm-aspera-connect-3.9.9.177872-linux-g2.12-64.tar.gz
sh ibm-aspera-connect-3.9.9.177872-linux-g2.12-64.sh

利用 aspera 下载数据

代码语言:javascript复制
ascp -i .aspera/connect/etc/asperaweb_id_dsa.openssh --overwrite=diff -QTr -l6000m anonftp@ftp.ncbi.nlm.nih.gov:blast/db/FASTA/nt.gz . &

.aspera/connect/bin/ascp -i .aspera/connect/etc/asperaweb_id_dsa.openssh --overwrite=diff -QTr -l6000m anonftp@ftp.ncbi.nlm.nih.gov:blast/db/FASTA/nt.gz . &
blast/db/FASTA/
.aspera/connect/bin/ascp -i .aspera/connect/etc/asperaweb_id_dsa.openssh --overwrite=diff -QTr -l6000m anonftp@ftp.ncbi.nlm.nih.gov:blast/db/FASTA/nr.gz . &
.aspera/connect/bin/ascp -i .aspera/connect/etc/asperaweb_id_dsa.openssh --overwrite=diff -QTr -l6000m anonftp@ftp.ncbi.nlm.nih.gov:pub/COG/ . &
.aspera/connect/bin/ascp -i .aspera/connect/etc/asperaweb_id_dsa.openssh --overwrite=diff -QTr -l6000m anonftp@ftp.ncbi.nlm.nih.gov:blast/db/swissprot.tar.gz ./ &

注意事项:

1、aspera 只能普通用户使用,管理员无法使用;

2、aspera 会占用大量带宽,带来网络拥堵,使用时要注意;

3、使用时需要正确给出 aspera-license,在-i 后面接 license 文件,这里是asperaweb_id_dsa.openssh

4、ftp 下载时账号要写正确,ncbi 是 anonftp@ftp.ncbi.nlm.nih.gov

5、ftp 地址后面接冒号,然后是 ftp 上面文件的具体位置,不要写错了。

6、不是所有的网站都支持 Aspera 下载的,需要服务提供方购买 Aspera 服务,用户才可以使用。

4.5 批量下载序列

虽然前面介绍过 ftp 和 Aspera 下载很方便,例如下载某个物种全部的数据。但是如果想下载来自多个物种的不同基因序列,例如给定一个基因列表 list,如何下载到这些序列呢?这时就需要用到 Batchentrez。

批量下载基因序列有多种方式,例如可以通过编程实现,也可以通过固定模块例如 bioperl,biopython 等。如果不会编程,那么 batchentrez 就是最好的选择了。Entrez 是 NCBI 官方的数据检索系统,Batch Entrez 显然就是批量检索。

https://www.ncbi.nlm.nih.gov/sites/batchentrez

1、Accession number

代码语言:javascript复制
An Accession number is a unique identifier given to a sequence when it is
submitted to one of the DNA repositories (GenBank, EMBL, DDBJ). The initial
deposition of a sequence record is referred to as version 1. If the sequence is
updated, the version number is incremented, but the Accession number will remain
constant.

2、GI

代码语言:javascript复制
The GenInfo Identifier is a sequence identification number for a nucleotide
sequence. If a
nucleotide sequence changes in any w ay, a new GI number will be assigned. A separate
GI number is also assigned to each protein translation within a nucleotide sequence
record, and a new GI is assigned if the protein translation changes in any w ay.
GI sequence identifiers run parallel to the new accession.version system of sequence
identifiers (see the description of Version).

3、GeneID

代码语言:javascript复制
GeneID is a unique identifier that is assigned to a gene record in Entrez Gene.
It is an integer and is species specific. In other words, the integer assigned to
dystrophin in human is different from that in any other species. For genomes that
had been represented in LocusLink, the GeneID is the same as the LocusID. The GeneID
is reported in RefSeq records as a 'db_xref' (e.g./db_xref="GeneID:856646", in
GenBank format).

https://www.ncbi.nlm.nih.gov/genbank/acc_prefix/

第一,注意输入文件格式,ID 只能使用 accession numbers or identifiers。

第二、选择的数据库要和输入的序列 ID 相一致,不能输入的是核酸序列,下载的数据库选择蛋白的库。

第三、序列 ID 后面不要加空格,另外就是注意一下不同系统中换行符问题。

五、常用生物数据库下载

5.1 基因组下载

下面案例下载人全基因组序列,人全基因组序列分为多个版本,可以从多个站点进行下载。

1、NCBI

下载地址:ftp://ftp.ncbi.nih.gov/genomes/Homo_sapiens

http://www.ncbi.nlm.nih.gov/projects/genome/guide/human/

代码语言:javascript复制
NCBI hs37-1kg 与千人基因组计划一致
ftp://ftp-trace.ncbi.nih.gov/1000genomes/ftp/technical/reference/human_g1k_v37.fasta.gz

2、ENSEMBL

ENSEMBL 网址:http://ensemblgenomes.org/

代码语言:javascript复制
EnsEMBL primary
http://ftp.ensembl.org/pub/current_fasta/homo_sapiens/dna/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz

3、UCSC

详细文档:http://hgdownload.soe.ucsc.edu/downloads.html#hg38sequence

代码语言:javascript复制
UCSC hg19
wget http://hgdownload.soe.ucsc.edu/goldenPath/hg19/bigZips/hg19.fa.gz
UCSC hg38
wget http://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.fa.gz

5.2 其余数据库下载

nt 库:ftp.ncbi.nlm.nih.gov:/blast/db/nt*.tar.gz

NR 库: ftp.ncbi.nlm.nih.gov:/blast/db/nr*.tar.gz

COG/KOG:ftp://ftp.ncbi.nlm.nih.gov/pub/COG/

基因组数据库 ftp://ftp.ncbi.nlm.nih.gov/genomes/

质粒数据库 ftp://ftp.ncbi.nlm.nih.gov/genomes/Plasmids/

病毒基因组:ftp.ncbi.nlm.nih.gov/refseq/release/viral

Swissprot:ftp://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/swissprot.gz

物种分类数据库:ftp://ftp.ncbi.nih.gov/pub/taxonomy/

0 人点赞