1. 初识NCBI SRA与prefetch工具
如果你正在处理高通量测序数据,NCBI的SRA(Sequence Read Archive)数据库绝对是你绕不开的资源库。这里存储了海量的公开测序数据,从基因组测序到转录组分析,几乎涵盖了所有主流研究领域的数据。但问题来了——当你找到需要的SRA编号后,如何高效地把这些数据下载到本地?
传统浏览器下载在面对几十GB的大文件时经常力不从心,这时候就需要祭出我们今天的主角:sratoolkit中的prefetch工具。这个命令行工具专为批量下载SRA数据设计,支持断点续传、多线程下载等实用功能。我去年处理一个包含300+样本的项目时,就是靠它稳定下载了总计4TB的数据。
prefetch的工作原理很有意思:它不像常规下载工具那样直接拉取整个文件,而是采用分块下载策略。当网络中断时,已下载的块会被保留,下次运行命令时会自动跳过已完成部分。这种机制特别适合不稳定的网络环境,我在跨国数据传输时深有体会——即使中途断了十几次,最终也能完整获取数据。
2. 从零开始配置sratoolkit环境
2.1 安装sratoolkit
首先需要获取sratoolkit软件包。以Ubuntu系统为例,打开终端执行以下命令:
# 下载最新版工具包(注意替换版本号) wget https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/current/sratoolkit.current-ubuntu64.tar.gz # 解压压缩包 tar -xvzf sratoolkit.current-ubuntu64.tar.gz # 添加环境变量(假设解压到/home/user目录) echo 'export PATH=$PATH:/home/user/sratoolkit.3.0.7-ubuntu64/bin' >> ~/.bashrc source ~/.bashrc验证安装是否成功:
prefetch --version2.2 交互式配置下载路径
安装完成后别急着下载,先运行这个关键命令:
vdb-config --interactive你会看到一个蓝色界面的配置窗口。用方向键导航到"CACHE"选项,这里有两个关键设置:
- Repository:默认下载目录(建议设置为大容量存储位置)
- User Public Repository:用户自定义缓存路径
我通常会在NAS存储上专门创建/sra_cache目录作为仓库路径。配置完成后按字母键S保存,按Q退出。
小技巧:如果后续需要更改路径,重新运行上述命令即可。配置信息会保存在~/.ncbi目录下。
3. prefetch实战下载技巧
3.1 基础下载命令
假设我们要下载SRR1234567这个样本:
prefetch SRR1234567下载完成后,你会在配置的仓库路径下发现一个SRR1234567目录,里面包含.sra数据文件和相关索引。
3.2 处理大文件下载
当遇到超过20GB的大文件时(比如某些全基因组数据),需要解除默认大小限制:
prefetch SRR7890123 --max-size 100G参数说明:
--max-size:可接受单位为K/M/G/T,例如:--max-size 50G表示50GB限制--max-size u表示无限制(慎用)
3.3 批量下载实战
当需要下载几十个样本时,可以创建accession列表文件(如sra_list.txt):
SRR1234567 SRR2345678 SRR3456789然后使用--option-file参数批量下载:
prefetch --option-file sra_list.txt我在处理癌症基因组项目时,曾用这个方法一次性下载了85个样本,总大小约7TB。建议搭配nohup使用避免终端中断:
nohup prefetch --option-file sra_list.txt > download.log 2>&1 &4. 常见问题排查指南
4.1 锁文件错误处理
有时会遇到这样的报错:
Cannot obtain lock on file [...].lock这是因为上次下载异常终止导致的。解决方法很简单:
- 删除报错提示的.lock文件
- 重新运行prefetch命令
4.2 磁盘空间不足
prefetch在下载过程中需要额外空间处理临时文件。如果遇到空间报错,可以:
- 使用
df -h检查磁盘使用情况 - 通过
vdb-config -i更改缓存路径到更大容量的磁盘 - 清理旧数据:
rm -rf ~/.ncbi/public/sra/*
4.3 网络连接问题
对于国内用户,可能会遇到连接NCBI服务器缓慢的情况。可以尝试:
- 在网络状况较好的时段下载(如凌晨)
- 使用
--transport参数尝试不同传输协议:prefetch SRR1234567 --transport http
5. 数据转换与后续处理
虽然本文重点在下载,但提一下常用的格式转换命令。下载后的.sra文件可以通过fasterq-dump转换为fastq格式:
fasterq-dump SRR1234567 --split-files -O ./fastq_output重要参数说明:
--split-files:分离双端测序数据-O:指定输出目录-e:线程数(建议设为CPU核心数的70%)
转换完成后,可以考虑使用pigz进行并行压缩:
pigz -p 8 *.fastq记得检查生成的文件完整性:
ls -lh ./fastq_output这套组合拳下来,从数据下载到预处理就形成了完整工作流。上周我刚用这个方法处理了单细胞转录组数据,从SRP123456项目下载的200个样本转换只用了不到3小时。