变异数据获取:常用数据库与下载方法归纳总结
做变异数据整合,第一步肯定是把数据拿到手。很多新手一上来就想着怎么分析,结果卡在数据下载这一步——连该去哪找、用什么工具都不知道。今天我就把这几年常用的几个数据库和下载方法捋一遍,全是实战经验。
我用得最多的几个数据库
说实话,数据库这东西不是越多越好。你搞全基因组关联分析,和做罕见病诊断,用的数据源完全不一样。我挑几个自己最常用的,给你列个清单。
| 数据库 | 内容 | 典型用途 | 更新频率 |
|---|---|---|---|
| dbSNP | SNP/小插入缺失 | 群体频率、位点注释 | 每季度 |
| ClinVar | 临床意义变异 | 致病性判读 | 每周 |
| gnomAD | 大规模人群变异 | 频率过滤、罕见变异检测 | 每半年 |
| 1000 Genomes | 全球人群单倍型 | 群体结构分析、参考面板 | 已固定 |
| COSMIC | 体细胞变异 | 肿瘤突变分析 | 每月 |
| dbVar | 结构变异 | 拷贝数变异、大片段重排 | 每月 |
上面这几个基本覆盖了90%的场景。我个人习惯先查gnomAD和ClinVar,如果做肿瘤方向再加COSMIC。嗯,这里有个坑——dbSNP和ClinVar有时候版本对不上,我建议你下载时记好版本号。
下载方法:三种主流方式
数据源清楚了,怎么拿下来?我分别讲讲wget/curl、Aspera、以及API这三种方法。每一种都有它的适用场景,别用错了。
1. 用wget或curl直接下载
最简单的方式。大部分数据库都提供FTP或HTTPS直链。我以前做单机分析时一直这么干,直到某次下gnomAD的VCF文件下了三天……
# 下载dbSNP的VCF(人以群体GRCh38)
wget -c ftp://ftp.ncbi.nih.gov/snp/latest_release/VCF/GCF_000001405.38.gz
# 或者用curl
curl -O ftp://ftp.ncbi.nih.gov/snp/latest_release/VCF/GCF_000001405.38.gz
# 解压后直接用
gunzip GCF_000001405.38.gz
缺点很明显:慢。特别是gnomAD这种几百GB的大文件,HTTP直连能让你怀疑人生。我当时用wget下gnomAD exomes的VCF,速度不到1MB/s,最后改用Aspera才解决问题。
2. Aspera:大文件下载的神器
Aspera是IBM的商用传输协议,很多数据库(像1000 Genomes、gnomAD)都用它。你需要先装个客户端:
# 安装(Ubuntu为例)
wget https://ak-delivery04-mul.dhe.ibm.com/sdfdl/v2/aspera/connect/4.1.6/ascp-cli-4.1.6.2301-linux-x86-64.sh
chmod +x ascp-cli-4.1.6.2301-linux-x86-64.sh
sudo ./ascp-cli-4.1.6.2301-linux-x86-64.sh
然后配合ascp命令下载。举个例子,下1000 Genomes的VCF:
ascp -QT -l 300M -P 33001 \
-i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh \
anonftp@ftp.1000genomes.ebi.ac.uk:vol1/ftp/release/20130502/ALL.chr1.phase3_shapeit2_mvncall_integrated_v5a.20130502.genotypes.vcf.gz \
./data/
参数说明:-QT不加磁盘缓存加速,-l 300M限制带宽,-P 33001是固定端口。我一般用300M带宽,不会把公司网打爆。有一次我忘了设限制,结果整个实验室网络都卡了……大家盯着我,尴尬。
3. API下载:精准、可控、适合自动化
如果只想下载某个基因或特定区域的数据,别搞全量VCF,用API。我写过几个脚本批量拉ClinVar和Ensembl的数据,既快又轻量。
Ensembl VEP API示例:
# 获取rs1042522的注释信息(JSON格式)
curl "https://rest.ensembl.org/vep/human/id/rs1042522?content-type=application/json" \
-H "Content-Type: application/json" | jq .
NCBI E-utilities示例:
# 查询dbSNP的RS号信息
curl "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=snp&term=rs1042522&retmode=json"
我建议你先把API返回的JSON结构看清楚,再写解析代码。不然一个字段名拼错,查半天。我曾经在ClinVar API的clinical_significance字段上踩过坑——它有多值数组,不能直接当字符串用。
下载后的校验与组织
数据下下来,千万别急着分析。第一步干什么?校验!我吃过亏:下gnomAD的VCF时网络波动,文件损坏,结果bcftools报错整整一天。
- 下载完成后,用
md5sum -c *.md5校验哈希值。 - VCF文件丢失几行,你跑完流程才发现——那就白干了。
- 我建议写个简单的脚本,自动下载+校验+解压+建立索引。
另外,我习惯用一个统一目录组织不同数据库的版本:
data/
├── dbSNP/
│ ├── b155/
│ └── b156/
├── ClinVar/
│ ├── 2024-09/
│ └── 2024-10/
├── gnomAD/
│ ├── v3.1/
│ └── v4.0/
└── 1000G/
└── phase3/
这么做的好处是,切换项目时不会搞混版本。一句话:数据管理是生物信息学的基本功,比分析算法重要得多。
知识脉络一览
我把整个变异数据获取的核心逻辑画了个图,你扫一眼就明白该怎么选了:
这个图很直观:先确定你要什么类型的数据(群体频次/临床意义/体细胞变异),然后选对应数据库,最后根据文件大小和查询精度选择下载方式。
▶ 实战建议
- 小批量区域数据:优先用API(快、省流量)。
- 全基因组数据:必须用Aspera,别用wget自虐。
- 中间大小(如单条染色体):wget分片下载也可以,记得开
-c续传。
常见问题与避坑
这几年我帮同事救过不少下载事故,总结几个高频坑:
- 版本不对齐:ClinVar的VCF引用dbSNP的RS号,但两个数据库版本不同步。我建议你下载时保持同一发布日期。
- 编码问题:Windows下的换行符(CRLF)可能导致VCF解析失败。用
dos2unix转一下。 - 权限被拒:有些数据库的FTP服务器限制并发数。我写脚本时会加
sleep 1,避免被封。 - 空间不够:gnomAD v4的全基因组VCF解压后超过2TB。记得提前规划存储。
💡 我的小技巧
建一个download.log文件,记录每次下载的URL、MD5、时间和状态。排查问题非常有用。我曾经靠这个日志发现服务器三天前挂过,数据不完整,补下及时止损。
好了,数据拿到手,目录也整理好了。接下来就该真正进入整合环节——怎么把不同来源的变异连接起来,构建知识图谱。这部分内容更多,留到后面慢慢拆。