引言

高通量的原始数据通常情况下会上传到NCBISRASequence Read Archive)数据库。

常见的下载方法有1

  1. aspera 工具下载
  2. wget, curl命令直接下载
  3. NCBI官方的 SRA Toolkit 进行下载

aspera 工具配置麻烦,直接下载容易出错,所以使用SRA-Toolkit工具下载。(2024年04月27日) SRA-Toolkit工具无断点续传,所以使用srapath获得地址后使用axel下载。

过程

srapath获得地址后使用axel下载 (2024年04月27日)

本来其实SRA-Toolkit足够好用了,但是当下载的文件由2G变成20G, 一旦出现网络波动几个小时的工作量就会付之东流…

所以还是万能的下载链接好使。

大概意思如下:

sh
1
2
link=$(srapath $(sed -n "${i}p" $srr_acc_list_file))
axel -o $filename $link -k 32 &

使用 SRA-Toolkit 工具进行下载

下载 SRA-Toolkit 工具并安装

主要流程来源于官方教程及网络2-3.

官方教程链接:

02. Installing SRA Toolkit · ncbi/sra-tools Wiki · GitHub

https://github.com/ncbi/sra-tools/wiki/02.-Installing-SRA-Toolkit

CentOS为例:

  1. 下载sratoolkit.current-centos_linux64.tar.gz, 可以wget, 但推荐本地下载后传入。
  2. 传入目标文件夹,如/dev/sda1/home/tenney/app/sratoolkit/, 并在终端中进入该地址,如cd /dev/sda1/home/tenney/app/sratoolkit/, 对文件解压,tar -vxzf sratoolkit.tar.gz, 注意tar -vxzf后的内容可能产生变化,以实际为准,比如我是tar -vxzf sratoolkit.current-centos_linux64.tar.gz.
  3. 将二进制文件的路径附加到PATH环境变量中,如:export PATH=$PATH:$PWD/sratoolkit.3.0.5-centos_linux64/bin.
  4. 验证二进制文件是否可由shell找到:which fastq-dump.
  5. 测试工具包是否有效:fastq-dump --stdout -X 2 SRR390728.

永久添加环境变量可以写入~/.bashrc文件。

完整代码如下:

plaintext
1
2
3
4
5
6
7
cd /dev/sda1/home/tenney/app/sratoolkit/
wget --output-document sratoolkit.tar.gz https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/current/sratoolkit.current-centos_linux64.tar.gz
tar -vxzf sratoolkit.current-centos_linux64.tar.gz
export PATH=$PATH:$PWD/sratoolkit.3.0.5-centos_linux64/bin
which fastq-dump
# ~/app/sratoolkit/sratoolkit.3.0.5-centos_linux64/bin/fastq-dump
fastq-dump --stdout -X 2 SRR390728

prefetch 工具下载数据

提供RUNSRR/DRR/ERR检索号即可下载,如prefetch ERR009357.

也可以提供列表,以\n分隔。

plaintext
1
2
3
4
5
6
7
8
9
10
11
cat SRR_Acc_List.txt
# ERR003133
# ERR003134
# ERR003135
# ERR003136
# ERR003137
echo $(<SRR_Acc_List.txt)
# SRR12697742 SRR12697743 SRR12697759 SRR12697758 SRR12697757 SRR12697756 SRR12697751 SRR12697750 SRR12697749 SRR12697748 SRR12697741 SRR12697740
prefetch -O . $(<SRR_Acc_List.txt)
# 可以使用nohup + & 用于放入后台下载,避免关闭终端导致下载中断
# nohup prefetch -O . $(<SRR_Acc_List.txt) &

其中,-O .代表下载到当前文件夹,$(<SRR_Acc_List.txt)代表读入的列表。

Aspera的下载和安装

如果想获得更快的下载速度,就需要使用ibm-aspera软件。

Aspera——利用SRR号批量高效下载FASTQ或SRA数据 - 知乎

首先,在linux系统上,最推荐使用conda安装。

conda install -c hcc aspera-cli

如果使用全版本安装,可能会出现依赖包不匹配等问题,特别是最新版非常不推荐使用。

测试运行代码:

sh
1
2
3
ascp  -vQT -l 500m -P33001 -k 1 -i \
~/.aspera/connect/etc/asperaweb_id_dsa.openssh \
era-fasp@fasp.sra.ebi.ac.uk:/vol1/fastq/SRR122/079/SRR12207279/SRR12207279_1.fastq.gz ./

SRA数据转化为fastq文件

使用SRA-Toolkit中的fastq-dump工具将SRA数据转化为fastq文件。

转换之前需要知道我们拿到的数据是单端还是双端数据4

plaintext
1
2
3
4
5
6
7
8
# 如果返回值是4,就是单端SE;如果返回值是8,那么就是双端PE。
fastq-dump -X 1 --split-spot -Z SRR5489805.sra | wc -l

#SE数据
fastq-dump SRR15671203 -O ./

#PE数据
fastq-dump ERR009357.4 --split-3 -O ./

可以写一个批量脚本,输入文件在/data/input, 输出文件在/data/output.

plaintext
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash

# 获取当前脚本所在目录,并输出
SHELL_FOLDER=$(cd "$(dirname "$0")";pwd)
echo $SHELL_FOLDER

# 将当前脚本所在目录加上"/data/input"作为输入目录
Input_Folder=${SHELL_FOLDER}"/data/input"

Output_Folder=${SHELL_FOLDER}"/data/output"
cd $Input_Folder

export PATH=$PATH:/dev/sda1/home/tenney/app/sratoolkit/sratoolkit.3.0.5-centos_linux64/bin
while read line
do
fastq-dump $line -O $Output_Folder
done < SRR_Acc_List.txt

结论

值得注意的是,一个GSM编号是可能对应多个Run(SRR) 的,应对的方法可以是分别qc和align,最后quantification的时候考虑合并5

简单来说,PRJNA相当于是一个project,里面可以有许多experiment(SRX)以及样品(SRS),每个SRX可以有若干个Run(SRR)。你这3个Run应该分开qc和align,如果都没问题的话,最后quantification的时候可以合并。这样的好处是,如果里面有一个Run的数据不好,你可以知道并随时舍弃,而不会影响你最后的结果。

引用

  1. 下载NCBI SRA数据的最佳方法 - 知乎
  2. 02. Installing SRA Toolkit · ncbi/sra-tools Wiki · GitHub
  3. 下载NCBI的SRA数据 详细教程 - 知乎
  4. SRA数据 (2)——SRA数据处理 - 简书
  5. 为什么GEO数据库里一个样本会对应多个SRR文件? - 知乎