安装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的路径,非常建议更改下载路径

  1. 如果是conda下载,需要激活相应conda环境;如果是直接安装,cd到sra-toolkit的安装路径下的bin
  2. 命令行输入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>

  1. 输入4,回车;
  2. 输入新路径(需要保证新路径为空),回车即可

也可以自行通过图形化界面探索其他配置vdb-config -i。(图形界面也可以配置下载路径)

其他配置请参考:三、工具包配置

使用

prefetch下载sra

  1. 如果是conda下载,需要激活相应conda环境conda activate env_name;如果是直接安装,直接使用
  2. 命令行输入prefetch SRRxxxxxx或者prefetch SRPxxxxx即可下载,下载数据在上面配置路径下的sra目录。

如果想下载到指定文件夹prefetch_dir,下载命令为:prefetch SRRxxxxxx -O prefetch_dir

注意:

  1. 该命令不仅可以输入SRRxxxxxx,对于SRPxxxxxx,SRXxxxxxx也是可以的(会下载该ID包含的所有SRR文件)。

  2. 下载成功之后会得到SRRxxxx/的文件夹,文件夹内有一个SRRxxxxxxx.sra文件,它就是我们的模板文件,还需要进一步操作,转化成fastq文件才能使用。

  3. prefetch自动支持断点续传,若下载过程中,ctrl + c/或其他因素 打断程序运行,重新执行相同的下载命令会在原有基础上下载。

  4. 如果是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-dumpfasterq-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文件的目录

注意:

  1. 对于为了cellranger分析的数据(即10x数据),必须使用 --split-files / --split-3(split-3未测试,split-files经测试没有问题)--include-technical参数才能保证输出的文件为三个(如果转化后不为3个,说明转换成sra文件前就不是3个)。
  2. 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文件。

bamtofastq工具相关信息

  1. 下载地址
  2. 教程: Converting 10x Genomics BAM Files to FASTQ

使用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 包括测序序列及质量数据。

posted @ 2024-08-13 20:21  kingwzun  阅读(1285)  评论(0编辑  收藏  举报