安装Toolkits,使用prefetch下载SRA数据库
SRAtool的官方教程:https://github.com/ncbi/sra-tools/wiki/08.-prefetch-and-fasterq-dump
准备
安装Toolkits
建议conda安装,命令如下。(兼容性还行,没必要新建环境)
conda install -c bioconda sra-tools
注意: 使用时记得先激活conda环境。
直接安装,请参考:SRA ToolKit (sra-tools) 的安装和使用
配置prefetch下载路径
prefetch的默认目录是配置Toolkits的路径,非常建议更改下载路径。
- 如果是conda下载,需要激活相应conda环境;如果是直接安装,
cd
到sra-toolkit的安装路径下的bin - 命令行输入
vdb-config -i --interactive-mode textual
,会有以下选项
$ vdb-config -i --interactive-mode textual
vdb-config interactive
data source
NCBI SRA: enabled (recommended) (1)
local workspaces: local file caching: enabled (recommended) (6)
Open Access Data
cached (recommended) (3)
location: '/mnt/data/xxxxx/xxxxx' (4)
To cancel and exit : Press <Enter>
To update and continue : Enter corresponding symbol and Press <Enter>
- 输入4,回车;
- 输入新路径(需要保证新路径为空),回车即可
也可以自行通过图形化界面探索其他配置vdb-config -i
。(图形界面也可以配置下载路径)
其他配置请参考:三、工具包配置
使用
prefetch下载sra
- 如果是conda下载,需要激活相应conda环境
conda activate env_name
;如果是直接安装,直接使用 - 命令行输入
prefetch SRRxxxxxx
或者prefetch SRPxxxxx
即可下载,下载数据在上面配置路径下的sra目录。
如果想下载到指定文件夹prefetch_dir,下载命令为:
prefetch SRRxxxxxx -O prefetch_dir
注意:
-
该命令不仅可以输入SRRxxxxxx,对于SRPxxxxxx,SRXxxxxxx也是可以的(会下载该ID包含的所有SRR文件)。
-
下载成功之后会得到
SRRxxxx/
的文件夹,文件夹内有一个SRRxxxxxxx.sra
文件,它就是我们的模板文件,还需要进一步操作,转化成fastq文件才能使用。 -
prefetch自动支持断点续传,若下载过程中,ctrl + c/或其他因素 打断程序运行,重新执行相同的下载命令会在原有基础上下载。
-
如果是ssh连接服务器,且ssh工具不稳定会断联(ssh断联后,prefetch命令会终止),建议使用后台下载(ssh断开后也会继续下载),后台下载命令
nohup prefetch SRXxxxxxx &
prefetch命令的详细介绍如下
prefetch -X 100G -f no -p -o SRRxxxxx.sra SRRxxxxx
# -X|--max-size <size>
# Maximum file size to download in KB (exclusive). Default: 20G
# -f|--force <yes|no|all|ALL>
# Force object download: one of: no, yes, all, ALL.
# no [default]: skip download if the object if found and complete;
# yes: download it even if it is found and is complete;
# all: ignore lock files (stale locks or it is being downloaded by another process use at your own risk!);
# ALL: ignore lock files, restart download from beginning.
# -p|--progress
# Show progress.
# -o|--output-file <FILE>
# Write file to FILE when downloading single file.
🌟提醒: 下载的文件较大可能会提示 prefetch.3.1.1 warn: Maximum file size download limit is 20GB,这时候在原有命令上加上-X 100G
即可。
解决lock exists while copying file
断点继续下载可能遇到类似下面的报错:
prefetch.3.1.1 warn: lock exists while copying file - Lock file /mnt/xxxx/data/prefetch_data/sra/SRRxxxxx.sra.lock exists: download canceled
-
如果是下载的SRPxxxxx,则不建议,按照Github的建议加上
--force all
参数。这样回导致重新下载已经下载好的SRRxxxx.sra文件。建议删除对应的.lock,.prf,.tmp文件,再重新输入之前的命令即可 -
如果是下载的SRRxxxx,则上面两种方案均可。
多文件下载
如果你的info.csv中有许多个文件,都需要下载,如图则下载示例如下
# zsh
for i in `cat ../info.csv | awk -F',' '{print $1}' | sed 1d`
prefetch -X 100G -f no -p -o $i.sra $i
# or
# bash
for i in `cat ../info.csv | awk -F',' '{print $1}' | sed 1d`; do
prefetch -X 100G -f no -p -o $i.sra $i
done
格式转换sra to fastq
常见的 sra to fastq 格式转换工具有三个:fastq-dump
, fasterq-dump
和 parallel-fastq-dump
。性能测试可见:https://zhuanlan.zhihu.com/p/591140275
fastq-dump
官方出品,初代版本,稳定可靠,但是没有多线程,性能极差(缺点:速度极慢);fasterq-dump
官方出品,在fastq-dump基础上加入了多线程,提升了数倍性能,但是输出文件不是压缩文件(缺点:不支持压缩);parallel-fastq-dump
性能最强,但是输出文件是压缩后的文件,但是非官方出品,兼容性和可靠性有待考证。(缺点:非官方出品)
个人建议用fasterq-dump
,对parallel-fastq-dump感兴趣自行搜索
fastq-dump
个人建议用
fasterq-dump
,而不是fastq-dump
,但是fastq-dump支持输出的文件就是gz压缩后的文件,省事省存储,而且兼容性最好,如果fasterq-dump出现问题,再使用fastq-dump补充。
fastq-dump常用命令如下,一般只需要修改输入输出路径即可。
fastq-dump --gzip -O . --split-3 /path_to_sra/SRRxxxxx.sra
# --gzip 直接输出fastq为压缩文件(.fastq.gz),节省空间,但是会导致运行时间较长
# -O . 指定输出文件的目录为当前目录 (.)。按实际要求修改即可。
# --split-3 参数表示如果是双端测序就自动拆分,如果是单端不受影响。下面有详细讲解
# /path_to_sra/SRRxxxxx.sra 输入文件路径
拆分参数split-XXX
这里讲解一下拆分参数split-XXX,为什么需要拆分参数?
默认情况下fastq-dump不对reads进行拆分, 对于很早之前的单端测序没有出现问题。但是对于双端测序而言,就会把原本的两条reads合并成一个,后续分析必然会出错。
常见的参数有三类,对于一个你不知道到底是单端还是双端的SRA文件,建议一律用--split-3。
- --split-spot: 将双端测序分为两份,但是都放在同一个文件中
- --split-files: 将双端测序分为两份,放在不同的文件,但是对于一方有而一方没有的reads直接丢弃
- --split-3 : 将双端测序分为两份,放在不同的文件,但是对于一方有而一方没有的reads会单独放在一个文件夹里
关于遇到的Rejected 35403447 READS because of filtering out non-biological READS
就是因为原来是SE数据,但是用--split-3当作PE数据处理,出现的问题. 看起来好像有问题,但是对后续结果分析没有太多影响。
fasterp-dump解析成fastq
fasterp-dump命令如下,一般只需要调整最下面的sra路径和-O 输出fastq文件的目录。
fasterq-dump \
-p -e 12 --split-files --include-technical\
-O . \
/mnt/data/prefetch_data/sra/SRRxxxxx.sra
#- -p:指定输出文件为 paired-end (双端) 读取。这意味着输入的 SRA 文件包含配对的读段,输出将生成两个 FASTQ 文件,分别对应每对读段中的第一条和第二条。
#- -e 12:指定使用 12 个线程进行并行处理,可以显著加快转换速度,尤其是对于大型 SRA 文件。
#- --split-3/--split-files:分割文件的方式。
#- -O .:指定输出文件的目录为当前目录 (.)。可以自己指定
# xxxx/sra/SRRxxxxxx.sra : 输入的sra文件的目录
注意:
- 对于为了cellranger分析的数据(即10x数据),必须使用
--split-files / --split-3
(split-3未测试,split-files经测试没有问题)和--include-technical
参数才能保证输出的文件为三个(如果转化后不为3个,说明转换成sra文件前就不是3个)。 - fasterq-dump没有
--gzip|--bizp2
选择,您必须在转化成fastq文件后自己再压缩。
压缩命令推荐pigz,也是支持多线程,兼容性强的工具,相关命令如下
pigz -p 8 path_to_fastq/*.fastq
# -p 8:指定使用 8 个线程进行并行处理
# -k:如果加上该参数,意味着不删除压缩前的文件
# path_to_fastq/*.fastq:要压缩的文件路径,只需要更改path_to_fastq即可,不要动*.fastq,会自动分别压缩目录下的所有.fastq文件
⚠️解决fasterq-dump 仅返回双端样本的一个文件
详细原因,请看: fasterq-dump only returns one file for a paired-end sample
原因: 对于一些10x数据,研究者上传的是.bam文件,而SRA和fastq都是通过.bam文件处理得到的,这种情况下使用SRAtoolkit从SRA向fastq转换就不会得到预期的fastq文件。
解决方法:下载原始的.bam文件,然后用bamtofastq工具,将.bam文件转换成fastq文件。
-
下载原始.bam文件,请看:BAM to gene expression matrix (UMI counts per gene per cell),10X
-
bamtofastq工具的具体方法,请看:10x单细胞转录组数据bam格式转为fastq格式
补充教程:10x官网下载pbmc3k的bam文件走定量流程
bamtofastq工具相关信息
使用Cell ranger分析单细胞数据( fastq->10x/h5ad文件)
查看我另一篇文章:使用Cell ranger分析单细胞数据(单细胞分析上游)( fastq->10x文件 / h5ad文件 )
附:基本概念
全球三大核酸序列数据库
SRA(Sequence Read Archive)、ENA(European Nucleotide Archive)和DDBJ(DNA Data Bank of Japan)是全球三大核酸序列数据库,分别由美国国家生物技术信息中心(NCBI)、欧洲生物信息研究所(EMBL-EBI)和日本DNA数据库中心(DDBJ)维护。它们共同收录了全球范围内的核酸测序数据,包括基因组、转录组、宏基因组等。它们之间的数据是实时同步的,所以可以在任意一个数据库中下载数据。
每个数据库的特点(Gemini给出):
- SRA:由NCBI维护,是世界上最大的核酸序列存档,其中的数据则是通过压缩后以.sra文件格式来保存的,SRA数据库可以用于搜索和展示SRA项目数据,包括SRA主页和 Entrez system。SRA提供了强大的搜索功能,用户可以根据不同的实验条件、物种、测序平台等进行检索。
- ENA:由EMBL-EBI维护,是欧洲主要的核酸序列数据库,界面相对于SRA更友好,对于有数据需求的研究人员来说,ENA数据库最诱人的点应该是可以直接下载fastq (.gz)文件。ENA不仅提供序列数据,还提供丰富的注释信息,例如基因功能、蛋白质结构等。
- DDBJ:由日本DNA数据库中心维护,是亚洲最大的核酸序列数据库。DDBJ主要收录来自日本的核酸序列数据。
总结: EBI数据库界面友好且能够直接下载fq文件。而NCBI则需要先下载sra文件,然后再转换成fq文件,但是使用官方的Toolkits工具也挺易用。
或者可以直接使用sra-explorer,它是一个为了让SRA更易检索、更易下载的网页端应用。
SRA数据库的名词概念
SRA 与 Trace 最大的区别是将实验数据与 metadata(元数据)分离。metadata 是指与测序实验及其实验样品相关的数据,如实验目的、实验设计、测序平台、样本数据(物种,菌株,个体表型等)。metadata可以分为以下几类:
SRP(项目 Project)—>SRS(样本 Sample)—>SRX(数据产生 Experiment)—>SRR(数据本身)
-
Study / Project
accession number 以 DRP,SRP,ERP 开头, 表示的是一个特定目的的研究课题,可以包含多个研究机构和研究类型等。study 包含了项目的所有 metadata,并有一个 NCBI 和 EBI 共同承认的项目编号(universal project id)【以PRJ开头!!】,一个 study 可以包含多个实验(experiment)。
Submission
一个 study 的数据,可以分多次递交至 SRA 数据库。比如在一个项目启动前期,就可以把 study,experiment 的数据递交上去,随着项目的进展,逐批递交 run 数据。study 等同于项目,submission 等同于批次的概念。 -
Sample
accession number 以 DRS,SRS,ERS 开头,表示的是样品信息。样本信息可以包括物种信息、菌株(品系) 信息、家系信息、表型数据、临床数据,组织类型等。可以通过Trace来查询。 -
Experiment
accession number 以 DRX,SRX,ERX 开头, 表示一个实验记载的实验设计(Design),实验平台(Platform)和结果处理(processing)三部分信息。实验是 SRA 数据库的最基本单元,一个实验信息可以同时包含多个结果集(run)。 -
Run
accession number 以 DRR,SRR,ERR 开头, 一个 Run 包括测序序列及质量数据。