iSeq:GSA-SRA-ENA-GEO-DDBJ 数据下载一网打尽

最近需要下载些公共数据,在简书上搜索到了有小伙伴介绍 iseq,测试了下效果不错,可以媲美 KingFisher,虽然还没曾正式发表(预印本),亲测效果不错,推荐。iSeq  是一个 Bash 脚本,允许您从  GSA[1]SRA[2]ENA[3]  和  DDBJ[4]  数据库下载测序数据和元数据。简单流程详细流程

安装

conda 可以轻松安装 iSeq

# 现在conda也正在追赶mamba的步伐,变得更快呢,当然还有更快的pixi
conda create -n iseq -c conda-forge -c bioconda iseq
conda activate iseq

新版本也可以从源码安装,但是这不是一般人的选择,这里就省略啦!

使用测试

速度是相当给力的,特别是瞬时速度,偶尔可以跑满宽带。当然,有少数样本会出现 md5 校验失败,反复下载也不行的,只有放弃啦!

iSeq 使用方法

$ iseq --help

Usage:
iseq -i accession [options]

Options:
Required parameter:
-i, --input TEXT accession (Project, Study, Sample, Experiment, or Run)

Optional parameters:
-m, --metadata Skip the sequencing data downloads and only fetch the metadata for the accession.
-g, --gzip Download FASTQ files in gzip format directly (*.fastq.gz).
note: if *.fastq.gz files are not available, SRA files will be downloaded and converted to *.fastq.gz files.
-q, --fastq Convert SRA files to FASTQ format.
-t, --threads INT The number of threads to use for converting SRA to FASTQ files or compressing FASTQ files (default: 8).
-e, --merge Merge multiple fastq files into one fastq file for each Experiment, the accession can't be the Run ID.
-d, --database [ena|sra] The database to download SRA files from (default: auto-detect),
note: some SRA files may not be available in the ENA database, even if you specify "ena".
-p, --parallel INT Download sequencing data in parallel, the number of connections needs to be specified, such as -p 10.
note: breakpoint continuation cannot be shared between different numbers of connections.
-a, --aspera Use Aspera to download sequencing data, only support GSA/ENA database.
-h, --help Show the help information.
-v, --version Show the script version.

1. -i, --input

输入你想下载的 accession,首先获取 accession 的 metadata,然后逐一对包含在内的 Run ID 进行下载。

iseq -i PRJNA211801

目前支持以下 5 个数据库的 6 种数据格式,支持的 accession 前缀如下:

Databases BioProject Study BioSample Sample Experiment Run
GSA PRJC CRA SAMC CRX CRR
SRA PRJNA SRP SAMN SRS SRX SRR
ENA PRJEB ERP SAME ERS ERX ERR
DDBJ PRJDB DRP SAMD DRS DRX DRR
GEO GSE GSM

其中对于来自于 GEO 数据库的两种数据格式GSE/GSM,会直接获取到与之关联的PRJNA/SAMN,然后获取到包含在内的 Run ID 并进行测序数据的下载。因此,本质上还是从 SRA 数据库中下载测序数据。

以下是一些例子:

Accession Type Prefixes Example
BioProject PRJEB, PRJNA, PRJDB, PRJC, GSE PRJEB42779, PRJNA480016, PRJDB14838, PRJCA000613, GSE122139
Study ERP, DRP, SRP, CRA ERP126685, DRP009283, SRP158268, CRA000553
BioSample SAMD, SAME, SAMN, SAMC SAMD00258402, SAMEA7997453, SAMN06479985, SAMC017083
Sample ERS, DRS, SRS, GSM ERS5684710, DRS259711, SRS2024210, GSM7417667
Experiment ERX, DRX, SRX, CRX ERX5050800, DRX406443, SRX4563689, CRX020217
Run ERR, DRR, SRR, CRR ERR5260405, DRR421224, SRR7706354, CRR311377

总之,无论你的 accession 是 6 种数据格式的哪一种,最终都会对其中包含的 Run ID 逐一下载并检查文件的 md5 值,如果 md5 值和公共数据库中的不一致,则会进行至多 3 轮的重新下载。如果在 3 次尝试内下载并校验成功,则会将文件名存入success.log中,否则,下载失败,文件名将会存入fail.log中。

2. -m, --metadata

只下载 accession 的样本信息,跳过测序数据的下载。

iseq -i PRJNA211801 -m
iseq -i CRR343031 -m

因此,无论使用不使用-m参数,accession 的样本信息都会被获取到,如果 metadata 获取不到的话,iSeq 程序会退出,不会执行后续下载。

[!NOTE] > 注意 1:如果检索的 accession 在 SRA/ENA/DDBJ/GEO 数据库中,iSeq 会首先在 ENA 数据库中进行检索,如果可以检索到样本信息,则会通过ENA API[5]下载TSV格式的 metadata,通常有 191 列。但是,有些最新在 SRA 数据库中公开的数据可能不会及时同步到 ENA 数据库中。因此,如果一旦无法在 ENA 数据库中获取到 metadata 的信息,则直接通过SRA Database Backend[6]下载CSV格式的 metadata,通常有 30 列。为了和 TSV 格式保持一致,会通过sed -i 's/,/t/g'的方式改为 TSV 格式,如何单个字段含有逗号,可能会造成列的混乱。最终,你将得到名字为${accession}.metadata.tsv的样本信息。

[!NOTE] >注意 2:如果检索的 accession 在 GSA 数据库中,iSeq 会通过 GSA 的getRunInfo[7]接口获取样本信息,下载CSV格式的 metadata,通常有 25 列,上述得到的 metadata 信息会被保存为${accession}.metadata.csv文件。为了补充更加详细的 metadata 信息,iSeq 会自动通过 GSA 的exportExcelFile[8]接口获取 accession 所属的 Project 的 metadata 信息,下载XLSX格式的 metadata,通常有 3 个 sheet,分别是Sample, Experiment, Run。最终得到的 metadata 信息会被保存为${accession}.metadata.xlsx文件。总而言之,你最终将得到名字为${accession}.metadata.csvCRA*.metadata.xlsx的样本信息。

3. -g, --gzip

直接下载 gzip 格式的 FASTQ 文件,如果不能直接下载,则会下载 SRA 文件并通过多线程分解和压缩转换为 gzip 格式。

iseq -i SRR1178105 -g

由于GSA数据库直接存储的格式大多数为gzip格式,因此,如果检索的 accession 来自于GSA数据库,无论是否使用-g 参数都可以直接下载gzip格式的 FASTQ 文件。如果 accession 来自于SRA/ENA/DDBJ/GEO数据库,那么 iSeq 会首先访问ENA数据库,如果可以直接下载gzip格式的 FASTQ 文件,则会直接下载,否则,会下载SRA文件并通过fasterq-dump工具转换为FASTQ, 然后通过pigz工具对FASTQ文件进行压缩,最终得到gzip格式的 FASTQ 文件。

4. -q, --fastq

将下载完成的 SRA 文件分解为多个未压缩的 FASTQ 格式。

iseq -i SRR1178105 -q

该参数只有在 accession 来自于SRA/ENA/DDBJ/GEO数据库,并且下载的文件为 SRA 文件时才有效。总之,SRA 文件下载完成后,iSeq 会通过fasterq-dump工具转换为FASTQ文件,除此之外,可以通过-t参数指定转换的线程数。

[!NOTE] > 注意 1-q在下载单细胞数据,尤其对于 scATAC-Seq 数据,可以很好的分解出I1, R1, R2, R3四个文件。而如果通过-g参数直接下载 FASTQ 文件,只会得到R1, R3两个文件(如:SRR13450125),这可能会导致后续数据分析时出现问题。

[!NOTE] > **注意2**:-q-g同时使用的时候,会先下载 SRA 文件,然后通过fasterq-dump工具转换为FASTQ文件,最后通过pigz压缩为 gzip 格式。并不是直接下载 gzip 格式的 FASTQ 文件,这对获取全面的单细胞数据非常有用。

5. -t, --threads

指定分解 SRA 文件为 FASTQ 文件或者压缩 FASTQ 文件的线程数,默认为 8。

iseq -i SRR1178105 -q -t 10

考虑到测序数据一般都是大文件,因此,可以通过-t参数指定分解的线程数,但是,线程数不是越多越好,因为线程数过多会导致 CPU 或者 IO 负载过高,尤其是fasterq-dump会占用大量 IO,从而影响其他任务的执行。

6. -e, --merge

将 Experiment 中的多个 FASTQ 文件合并为一个 FASTQ 文件。

iseq -i SRX003906 -e -g

虽然大多数情况下,一个 Experiment 仅包含一个 Run,但是有些测序数据中的 Experiment 中可能包含多个 Run(如SRX003906, CRX020217),因此,可以通过-e参数将 Experiment 中的多个 FASTQ 文件合并为一个 FASTQ 文件。考虑到双端测序时,fastq_1fastq_2文件需要同时合并且对应行号的序列名需要保持一致,因此,iSeq 会按照相同的顺序合并多个 FASTQ 文件。最终,对于单端测序数据会生成一个文件:SRX*.fastq.gz,对于双端测序数据会生成两个文件:SRX*_1.fastq.gzSRX*_2.fastq.gz

[!NOTE] > 注意 1:如果 accession 是 Run ID,则不能使用-e参数。目前,iSeq 支持合并 gzip 压缩和未压缩的 FASTQ 文件,对于 bam 文件和 tar.gz 文件等暂不支持合并。

[!NOTE] > 注意 2:正常情况下,一个 Experiment 仅包含一个 Run 时,相同的 Run 应该有相同的前缀。如SRR52991314_1.fq.gzSRR52991314_2.fq.gz都有相同的前缀名SRR52991314,此时,iSeq 会直接重命名为SRX*_1.fastq.gzSRX*_2.fastq.gz。但是有例外的情况,如CRX006713中包含有一个 Run 为CRR007192,但是该 Run 包含多个前缀名不同的文件,此时,iSeq 会直接重命名为SRX*_原本的文件名,如这里将直接重命名为:CRX006713_CRD015671.gzCRX006713_CRD015672.gz

7. -d, --database

指定下载 SRA 文件的数据库,支持enasra两种数据库。

iseq -i SRR1178105 -d sra

通常情况下,iSeq 默认会自动检测可用的数据库,所以不需要指定-d参数。但是,有些 SRA 文件可能在 ENA 数据库中下载速度较慢,此时可以通过-d sra强制指定从 SRA 数据库下载数据。

[!NOTE] > 注意:如果在 ENA 数据库中没有找到对应的 SRA 文件,即使指定了-d ena参数,iSeq 依旧会自动切换到 SRA 数据库进行下载。

8. -p, --parallel

开启多线程下载,需要指定下载的线程数。

iseq -i PRJNA211801 -p 10

考虑到wget在部分情况下下载速度较慢,因此,可以通过-p参数让iSeq调用axel工具进行多线程下载。

[!NOTE] > 注意 1:多线程下载的断点续传功能只能在同一个线程内有效,即如果在第一次下载时使用了-p 10参数,那么在第二次下载时也需要使用-p 10参数,否则无法实现断点续传。

[!NOTE] > 注意 2:如上,iSeq 将全程保持 10 个连接进行下载,因此在下载的过程中你将多次看到相同的Connection * finished弹出,这是因为有些连接下载完成后会立即释放,然后重新建立新的连接进行下载。

9. -a, --aspera

使用 Aspera 进行下载。

iseq -i PRJNA211801 -a -g

由于Aspera下载速度较快,因此,可以通过-a参数让iSeq调用ascp工具进行下载。可惜的是,目前仅有GSAENA数据库支持Aspera下载,NCBI SRA数据库由于广泛采用了Google CloudAWS Cloud技术以及其他原因(请看Avoid-using-ascp),暂无法使用Aspera进行下载。

推文内容来源:

  • 生信 | iSeq 超便捷!快速下载 GSA/SRA/ENA 的数据以及 metadata 信息 – 简书 ]: https://www.jianshu.com/p/7ed73f036590 
  • BioOmics/iSeq: Download sequencing data and metadata from GSA, SRA, ENA, and DDBJ databases.  https://github.com/BioOmics/iSeq 
外部链接:
[1]

GSA: https://ngdc.cncb.ac.cn/gsa/

[2]

SRA: https://www.ncbi.nlm.nih.gov/sra/

[3]

ENA: https://www.ebi.ac.uk/ena/

[4]

DDBJ: https://www.ddbj.nig.ac.jp/

[5]

!NOTE] > 注意 1:如果检索的 accession 在 SRA/ENA/DDBJ/GEO 数据库中,iSeq 会首先在 ENA 数据库中进行检索,如果可以检索到样本信息,则会通过[ENA API: https://www.ebi.ac.uk/ena/portal/api/swagger-ui/index.html

[6]

SRA Database Backend: https://trace.ncbi.nlm.nih.gov/Traces/sra-db-be/

[7]

!NOTE] >注意 2:如果检索的 accession 在 GSA 数据库中,iSeq 会通过 GSA 的[getRunInfo: https://ngdc.cncb.ac.cn/gsa/search/getRunInfo

[8]

exportExcelFile: https://ngdc.cncb.ac.cn/gsa/file/exportExcelFile


本篇文章来源于微信公众号:微因

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注