变异数据获取:常用数据库与下载方法归纳总结

做变异数据整合,第一步肯定是把数据拿到手。很多新手一上来就想着怎么分析,结果卡在数据下载这一步——连该去哪找、用什么工具都不知道。今天我就把这几年常用的几个数据库和下载方法捋一遍,全是实战经验。

我用得最多的几个数据库

说实话,数据库这东西不是越多越好。你搞全基因组关联分析,和做罕见病诊断,用的数据源完全不一样。我挑几个自己最常用的,给你列个清单。

数据库 内容 典型用途 更新频率
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/

这么做的好处是,切换项目时不会搞混版本。一句话:数据管理是生物信息学的基本功,比分析算法重要得多。

知识脉络一览

我把整个变异数据获取的核心逻辑画了个图,你扫一眼就明白该怎么选了:

变异数据获取路径 变异数据源 群体变异频次 临床意义数据 体细胞/结构变异 dbSNP / 1000 Genomes gnomAD ClinVar COSMIC dbVar 三种下载手段 wget / curl 直接HTTP/FTP Aspera (ascp) 大文件高速传输 RESTful API 精准按需查询 VCF / VCF.gz 文件 JSON / 其他格式 VCF变异知识图谱

这个图很直观:先确定你要什么类型的数据(群体频次/临床意义/体细胞变异),然后选对应数据库,最后根据文件大小和查询精度选择下载方式。

▶ 实战建议

  • 小批量区域数据:优先用API(快、省流量)。
  • 全基因组数据:必须用Aspera,别用wget自虐。
  • 中间大小(如单条染色体):wget分片下载也可以,记得开-c续传。

常见问题与避坑

这几年我帮同事救过不少下载事故,总结几个高频坑:

  • 版本不对齐:ClinVar的VCF引用dbSNP的RS号,但两个数据库版本不同步。我建议你下载时保持同一发布日期。
  • 编码问题:Windows下的换行符(CRLF)可能导致VCF解析失败。用dos2unix转一下。
  • 权限被拒:有些数据库的FTP服务器限制并发数。我写脚本时会加sleep 1,避免被封。
  • 空间不够:gnomAD v4的全基因组VCF解压后超过2TB。记得提前规划存储。

💡 我的小技巧

建一个download.log文件,记录每次下载的URL、MD5、时间和状态。排查问题非常有用。我曾经靠这个日志发现服务器三天前挂过,数据不完整,补下及时止损。

好了,数据拿到手,目录也整理好了。接下来就该真正进入整合环节——怎么把不同来源的变异连接起来,构建知识图谱。这部分内容更多,留到后面慢慢拆。