资讯动态

RNA-seq数据下载实战:SRA与fastq.gz的高效获取与转换

发布时间:2026/10/16 19:14:57 来源:尧图企业网站定制
做RNA-seq分析第一步不是读文献、不是跑比对而是把数据先下载到本地。很多教程把这一步一笔带过但真正自己跑一遍才知道卡在下载这一步的损耗精力最多。我之前在跑转录组流程时就吃过亏GEO页面明明写着数据可用结果点了半天网页下载速度只有几十KB几百个GB的数据照这个速度要下到猴年马月。后来花了一个下午把Aspera和SRA Toolkit这两个工具理顺才明白下载环节其实有一套固定的组合打法。这篇笔记是RNA-seq流程学习笔记的第二篇专门讲清楚. .sra和.fastq.gz两种数据怎么高效落地。文章内容包括两个工具的分工逻辑、安装配置、手工和批量下载的完整命令、格式转换的具体操作以及我实际操作中踩过的坑。不管你是刚接触转录组的新手还是已经跑过几条流程但下载总是碰壁的老同学这篇笔记都能让你少走不少弯路。1. 先想清楚.sra和.fastq.gz到底怎么选1.1 两种格式的来龙去脉先说一个最常见的困惑为什么有的数据是.sra有的是.fastq.gz两个都要下载吗要理解这个问题得先明白数据在服务器上是怎么存下来的。原始测序仪产出的数据是.fastq格式里面每四条一组记录一条read的序列信息和质量值。公共测序数据库拿到这些fastq文件后为了节省存储空间会把它们压缩并封装成更紧凑的.sra格式。你可以把.sra理解成一个“归档压缩包”里面装着测序原始数据而且它做了专门的二进制压缩比纯文本的fastq小很多。所以下载的时候就有两条路一条是直接拿.sra归档包回到本地再解包还原成.fastq另一条是找项目提交者额外上传的.fastq.gz省去解包这步。但要注意不是所有项目都提供了.fastq.gz很多数据集只有.sra。这就需要下载前先到数据页面把文件列表看清楚确认该项目提供哪些格式再决定用哪种策略。1.2 从项目需求反推下载策略我自己的习惯是先把目标数据集的具体文件清单拉出来看一眼再倒推该用什么方式下载。这里给出一个最简单的判断逻辑。如果你后续要跑的标准流程是fastqc 比对 定量这类常规操作建议直接下载.fastq.gz省一次格式转换的时间。如果项目页面只有.sra那就下载.sra然后用工具还原成.fastq.gz本质上也是殊途同归。判断的一个小技巧数据量的估算。.sra文件通常比对应的.fastq.gz小20%~30%所以如果磁盘紧张可以先下.sra存着做完项目再决定是否删掉归档包。如果磁盘宽裕建议转换成.fastq.gz后保留因为后续重跑分析、换比对软件、换参数都需要fastq反复从.sra转换反而更麻烦。顺带说一句这两个格式的选择还关系到后续的断点续传和完整性校验我放到后文细讲。这里先记住一个结论先查文件清单再定下载策略。2. 工具定位为什么下载这一步离不开Aspera和SRA Toolkit2.1 SRA Toolkit不只下载还帮你换格式SRA Toolkit是公共测序数据库提供的一套官方命令行工具集里面最常用的两个命令是prefetch和fastq-dump/fasterq-dump。prefetch负责把.sra文件从远程服务器拉到本地fasterq-dump负责把.sra还原成.fastq这个组合是RNA-seq下载的默认动作。为什么推荐用prefetch而不是直接在网页上点下载因为prefetch支持断点续传下载中途断了可以接着下不用从头再来。另一个原因是它本身就在为SRA数据做校验下回来的文件不容易出问题。实测下来几百个文件批量下载时prefetch的稳定性确实比浏览器下载高一个档次。SRA Toolkit里还有一个容易被忽略的命令叫vdb-config用来配置缓存目录和网络参数。很多新版本装完直接能用但如果遇到“SRA cache is not writable”之类的报错八成就是缓存路径没配好。这个我在后面的排查部分会细说。2.2 Aspera把大文件传输速度拉满的“专用通道”Aspera是另一类工具它解决的是核心痛点大文件远距离传输速度。普通的HTTP/FTP下载基于TCP协议遇到高延迟、高丢包的网络链路时窗口调整机制会让速度很难提上去。Aspera用自己的传输协议基于UDP做了深度优化专门应对高带宽长距离场景实测速度往往可以拉到几百Mbps甚至更高。你可能听说过这个词常出现在生物数据下载场景原因是测序数据动辄几十GB甚至上百GB用普通方式下载非常痛苦。Aspera在这类场景下的表现就是“快”快到你拿到密钥、跑通一次命令之后就再也不想用网页下载了。工具本身是商业软件但它在公共测序数据下载场景中提供免费通路只要下载安装Aspera Connect就能获得命令行工具ascp和对应的密钥文件。这也是为什么很多流程脚本里都会带一条ascp -QT -l 300m这样的命令它就是在用Aspera高速拉数据。2.3 两个工具怎么配合简单归纳一下两者分工SRA Toolkit负责“下载格式转换”Aspera负责“快速下载”。实操中我一般这样配合使用。如果数据量小、文件少直接用prefetch省心稳定。如果数据量大、带宽高优先用Aspera拉.sra或.fastq.gz速度优势明显。如果网络环境不太稳定优先用prefetch它有断点续传兜底Aspera虽然也有-k 1续传参数但整个文件已下载的部分不够时续传效果有限。这个选择逻辑我是在一次批量下载中确定的。当时要拉一套两百多GB的转录组数据一开始用网页下载跑了半天没下多少换成Aspera之后把速度拉满了后来又用prefetch把几个失败重试的文件补齐两边配合才把整个数据集完整落地。3. 环境准备5分钟装好两个工具并验证可用性3.1 安装与密钥定位第一次配置这两个工具时安装本身不难难的是找到Aspera的密钥文件。我以Linux环境为例讲一下标准动作。先装Aspera Connect去软件官网下载对应Linux版本的安装包。装完以后命令行工具ascp一般在安装目录的cli子目录里例如/usr/local/aspera/connect/bin/ascp。密钥文件比较隐蔽常见位置是/usr/local/aspera/connect/etc/asperaweb_id_dsa.opensshmacOS版本路径稍有不同一般在Aspera Connect.app的Contents/Resources目录里。Windows版则在安装目录的Etc文件夹下。我的建议是安装完先find一下密钥文件别凭记忆猜路径。find / -name asperaweb_id_dsa.openssh 2/dev/null找到密钥后把它复制到用户目录下方便以后调用mkdir -p ~/.aspera/connect/etc/ cp /usr/local/aspera/connect/etc/asperaweb_id_dsa.openssh ~/.aspera/connect/etc/3.2 配置和可用性验证SRA Toolkit更省事解压即用。下载对应系统版本的压缩包解压后把bin目录加入PATH即可。export PATH$PATH:/path/to/sratoolkit/bin如果希望每次登录都自动生效把这行写进~/.bashrc。配置缓存目录用vdb-configvdb-config --set /repository/user/main/public/root/data/sra_cache这个配置把SRA缓存根目录指到指定位置避免默认路径空间不足。之前我就遇到过缓存目录写满导致prefetch失败的情况提前配置可以避开。验证工具是否可用分别跑一下版本信息ascp --version prefetch --version fasterq-dump --version三条命令都能正常输出版本号环境就绪。最后提醒一句新版本SRA Toolkit首次运行时会初始化配置如果卡在“y/n”提示按y确认即可别直接CtrlC。4. 核心实操数据落地与格式转换的完整命令4.1 使用prefetch下载.sra环境准备好之后最常用的命令就是prefetch。单个文件下载很简单以示例编号SRR1234567为例prefetch --max-size 200G -O /data/raw/sra SRR1234567--max-size参数用来调高单文件大小上限默认值往往只有几十GB遇到大文件会报错。-O指定输出目录建议提前建好。下载成功后本地会得到/data/raw/sra/SRR1234567/SRR1234567.sra。这里插一句我踩过的坑prefetch默认把文件下载到home目录下的ncbi文件夹如果你没指定-O它会一直往home目录写。数据量大了以后home目录配额很容易被打爆。所以批处理脚本里一定要把-O写死。批量下载时把SRR编号按行存放在srr_list.txt里然后循环执行while read sid; do prefetch --max-size 200G -O /data/raw/sra $sid done srr_list.txt4.2 使用Aspera直接下载.sra或.fastq.gz想发挥Aspera的速度优势需要知道远程文件的完整路径。公共测序数据库的SRA文件路径遵循固定的目录结构规律是根据SRR编号逐级展开。比如SRR1234567的.sra路径是/sra/sra-instant/reads/ByRun/sra/SRR/SRR123/SRR1234567/SRR1234567.sra实测命令格式如下ascp -QT -l 300m -P 33001 \ -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh \ era-faspftp-private.ncbi.nlm.nih.gov:/sra/sra-instant/reads/ByRun/sra/SRR/SRR123/SRR1234567/SRR1234567.sra \ /data/raw/sra/解释一下参数含义-Q表示禁用流量控制-T表示不加密传输-l 300m把传输带宽限制设到300Mbps-P 33001指定端口-i指定密钥文件。前面三组参数组合在一起就是下载大数据量文件的经典姿势。下载.fastq.gz也一样只改路径后缀ascp -QT -l 300m -P 33001 \ -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh \ era-faspftp-private.ncbi.nlm.nih.gov:/sra/sra-instant/reads/ByRun/sra/SRR/SRR123/SRR1234567/SRR1234567.fastq.gz \ /data/raw/fastq/注意不是所有项目都提供.fastq.gz文件。如果ascp报错说文件不存在建议先用prefetch确认该编号是否存在再回到页面查看文件类型。4.3 将.sra转换为.fastq.gz并压缩下载回来的.sra并不能直接喂给比对软件必须还原成.fastq。旧版工具是fastq-dump新版工具推荐fasterq-dump。后者支持多线程速度提升明显而且对大文件更不容易爆内存。先定位到.sra所在目录然后执行cd /data/raw/sra/SRR1234567 fasterq-dump --split-files --threads 8 SRR1234567.sra -O /data/raw/fastq--split-files会把双端测序数据拆成_1.fastq和_2.fastq两个文件。如果忘记加这个参数双端数据会混在同一个文件里后续比对时读入的mate方向会错乱这是我见过最多的问题。fasterq-dump还原出来的是未压缩的fastq体积很大建议立刻压缩成gzpigz -p 8 /data/raw/fastq/SRR1234567_*.fastq没有pigz就用gzip只是压缩耗时更长。压缩完得到SRR1234567_1.fastq.gz和SRR1234567_2.fastq.gz这才是后续流程的标准输入格式。4.4 批量下载的实现细节真实项目中往往不是一两个文件而是几十上百个样本。批量操作要养成好习惯我给一个自己常用的脚本模板#!/bin/bash # 批量下载转换脚本 SRA_LIST$1 OUT_DIR/data/raw cd $OUT_DIR while read sid; do echo Downloading $sid prefetch --max-size 200G -O $OUT_DIR/sra $sid echo Dumping $sid fasterq-dump --split-files --threads 8 \ $OUT_DIR/sra/$sid/$sid.sra \ -O $OUT_DIR/fastq echo Compressing $sid pigz -p 8 $OUT_DIR/fastq/${sid}_*.fastq done $SRA_LIST脚本跑起来以后建议用nohup挂后台并记录日志nohup bash batch_download.sh srr_list.txt download.log 21 日志要留好后面排查哪些样本失败全靠它。还可以在脚本开头加上时间戳和当前工作目录的打印方便追溯整批任务的执行情况。5. 常见问题与排查实录5.1 典型问题速查表操作过程中最常见的问题我整理了一张速查表。症状可能原因解决方法prefetch报“SRA cache is not writable”缓存目录不存在或无写权限用vdb-config设置缓存根目录ascp报“cannot find key file”密钥路径写错find查找实际密钥位置并核对路径ascp连接成功后速度很慢带宽限制参数设置过高或网络波动把-l降到100m~200m再试fasterq-dump提示“name not found”没有加--split-files或路径写错检查文件名和输出目录下载到一半连接中断网络不稳定prefetch自动续传ascp加-k 1fastq.gz文件大小异常偏小下载不完整或压缩中断重新下载并对比页面上的md5gzip压缩时内存不足单条fastq文件过大改用pigz并控制-p线程数5.2 几个实操中特别容易踩的坑第一坑是路径里的SRR编号不匹配。有些SRR编号包含字母解析逻辑比如SRR1000001分在SRR100目录下还是SRR1000目录下要按照每三位一组的规则去拼路径。拼错路径ascp直接报错浪费大量排查时间。保险的做法是先用浏览器访问远程路径确认存在再写命令。第二坑是Aspera密钥文件权限问题。密钥文件的权限太宽松ascp会拒绝使用。我遇到过复制密钥到用户目录后忘了改权限结果一直报错。解决办法是chmod 600 ~/.aspera/connect/etc/asperaweb_id_dsa.openssh第三坑是fasterq-dump生成的临时文件占用空间。它转换大.sra时会在当前目录生成同体积的临时文件转换完成后才清理。如果磁盘只剩一半空间转换很容易被卡死。建议转换前用df -h确认磁盘剩余容量至少是.sra体积的两倍。第四坑是下载日志不看的后果。批量脚本跑完如果只看最终文件数量很容易漏掉中间失败的样本。我的习惯是下载完统计一遍每个样本的fastq大小低于平均大小一半的直接重新下载。这一步虽然繁琐但能避免后续比对时才发现某个样本数据缺失。还有一个很容易被忽略的点sra数据页面上给出的文件大小是未解压的原始文件大小还是压缩后大小要去核对一下。之前我按照页面上的大小预估磁盘结果转换完的fastq.gz比预估大了30%差点把磁盘塞爆。现在我的做法是下载前就预留两倍空间转换完后删掉.sra这样最稳妥。写到最后分享几个实在建议我自己把下载这步理顺之后最大的感受是下载策略一定要在跑流程之前定好别等比对软件报错“找不到fastq”再来补救。我现在通常先看数据规模估算磁盘和网络时间再决定走prefetch还是Aspera路线然后把下载、转换、压缩整合成一个脚本一次跑完。过程里还有一个小技巧想分享日志里如果看到某个SRR下载特别慢不妨先把它从列表里拎出来单独重试而不是让整个批次卡死。曾经有一次批量下载一个文件反复连接失败整个循环卡在那里剩下几十个样本纹丝不动。后来改成“失败自动跳过并写入单独日志”的机制批次效率明显提高。数据落地只是RNA-seq流程的起点下一篇笔记我打算接着写fastqc质量检查和trimming这一步把拿到手的fastq.gz驯成干净可用的输入文件。如果你在下载环节还遇到了别的坑欢迎评论区补上我看到了会一起整理进后续的笔记更新里。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑