第四章 下载NA12878公开数据
说起NA12878的数据获取,我自己最初也走了不少弯路。你要知道,这个样本的数据散布在三个大平台:AWS、NCBI、GCP。每个平台的命令行工具都不一样,参数习惯也不同。说白了,没有一份清晰的搬运指南,光靠翻文档能浪费你大半天。
我个人习惯先把数据源理清楚,再选最顺手的工具。别急着开跑,先看看这张图——
4.1 三大云端数据源概览
先看个对比表,心里有个谱。我曾在一个项目里三边同时下数据,结果被不同工具的认证方式坑惨了——嗯,这就是为什么我要强调提前看好认证配置。
| 平台 | 命令行工具 | 认证方式 | 典型路径示例 |
|---|---|---|---|
| AWS S3 | aws s3 cp | IAM Keys / AWS CLI 配置 | s3://1000genomes/.../NA12878.bam |
| NCBI SRA | prefetch + fasterq-dump | 无需认证(公共数据) | SRR622475(Accession号) |
| GCP | gsutil cp | Google Cloud SDK 认证 | gs://genomics-public-data/.../NA12878.bam |
4.2 从AWS S3下载
先装好AWS CLI。我个人习惯用--no-sign-request参数,因为1000 Genomes的桶是公开的,不会触发签名验证。
# 列出桶内容(先确认你要的文件)
aws s3 ls s3://1000genomes/alignment/NA12878/ --no-sign-request
# 下载BAM文件
aws s3 cp s3://1000genomes/alignment/NA12878/NA12878.bam . --no-sign-request
# 如果网络不稳定,加个--multipart-upload,但公开桶有时候会限制
aws s3 cp s3://.../NA12878.bam . --no-sign-request --multipart-upload
小技巧: 国内访问AWS S3速度偏慢。你可以换成aws s3 sync,它会自动对比本地已有文件,断点续传。我曾经拿它下了一个60GB的BAM,中间断网两次,sync没让我重头来。
4.3 从NCBI下载
NCBI的数据主要走SRA toolkit,或者直接用wget拉fastq。我个人更推荐fastq-dump,但注意它的版本——太老的分批下载有bug。
# 先安装SRA toolkit,然后prefetch
prefetch SRR622475
# 转为fastq(双端)
fastq-dump --split-files --gzip SRR622475/SRR622475.sra
# 如果只想拿元数据,跳过下载
fastq-dump --only-metadata SRR622475
注意: NCBI的公共数据不需要Key,但大量并发下载会被限流。我记得有一次用脚本批量下100个样本,结果被ban了IP,被迫等了2小时。建议加个--max-size 1G限制,或者用ascp加速(如果机房支持)。
4.4 从GCP下载
GCP的公共数据集桶gs://genomics-public-data里放了NA12878的多个版本。先用gsutil看看有什么。
# 初始化gcloud(如果之前没弄过)
gcloud auth login
# 列出
gsutil ls gs://genomics-public-data/NA12878/
# 下载
gsutil cp gs://genomics-public-data/NA12878/NA12878.hg38.bam .
速度对比: GCP的gsutil cp天然支持并行分片,单线程就能跑满带宽。我自己测过,从GCP拉到国内阿里云,速度稳定在200Mb/s以上,比AWS S3快一倍。如果你有条件,优先考虑GCP。但注意——认证token只有一小时有效期,大文件下载别超过这个时间。
4.5 常用数据文件清单
下载前先明确你需要什么。我一般会备一个清单,避免下了一堆没用的文件。
| 文件类型 | 说明 | 典型大小 | 下载优先级 |
|---|---|---|---|
| .bam | 比对后的reads(用samtools处理) | 30~60 GB | 高 |
| .vcf.gz | 变异检测结果(VCF格式) | 0.5~2 GB | 中 |
| .fastq.gz | 原始测序reads(downstream分析) | 10~20 GB/端 | 高 |
| .cram | BAM的压缩版(节省空间) | 15~30 GB | 中 |
| .bed | 区域注释文件 | 几MB | 低 |
4.6 避坑指南
- 路径拼写坑: AWS桶名区分大小写,GCP桶名全局唯一。我曾经把
1000genomes写成1000Genomes,查了半小时才反应过来。 - 限速与并发: 默认并发数可能太大。用
aws configure set default.s3.max_concurrent_requests 10降下来。 - 校验和: 下载完建议用
md5sum或samtools quickcheck验证完整性。NCBI的prefetch偶尔会下载出坏文件,我遇到过两次。 - 临时目录: AWS和GCP的下载默认会写缓存到
/tmp,磁盘不够就失败。运行时指定TMPDIR到大数据盘。
好了,工具和命令都在手上了。接下来你就挑一个源,跑起来试试。别怕报错,命令行这东西,多试几次就会记住——嗯,我自己也是从一堆PermissionDenied和NoSuchKey里摸爬滚打出来的。