最近需要下载些公共数据,在简书上搜索到了有小伙伴介绍 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.csv和CRA*.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_1和fastq_2文件需要同时合并且对应行号的序列名需要保持一致,因此,iSeq 会按照相同的顺序合并多个 FASTQ 文件。最终,对于单端测序数据会生成一个文件:SRX*.fastq.gz,对于双端测序数据会生成两个文件:SRX*_1.fastq.gz和SRX*_2.fastq.gz。
[!NOTE] > 注意 1:如果 accession 是 Run ID,则不能使用
-e参数。目前,iSeq 支持合并 gzip 压缩和未压缩的 FASTQ 文件,对于 bam 文件和 tar.gz 文件等暂不支持合并。
[!NOTE] > 注意 2:正常情况下,一个 Experiment 仅包含一个 Run 时,相同的 Run 应该有相同的前缀。如
SRR52991314_1.fq.gz和SRR52991314_2.fq.gz都有相同的前缀名SRR52991314,此时,iSeq 会直接重命名为SRX*_1.fastq.gz和SRX*_2.fastq.gz。但是有例外的情况,如CRX006713中包含有一个 Run 为CRR007192,但是该 Run 包含多个前缀名不同的文件,此时,iSeq 会直接重命名为SRX*_原本的文件名,如这里将直接重命名为:CRX006713_CRD015671.gz和CRX006713_CRD015672.gz。
7. -d, --database
指定下载 SRA 文件的数据库,支持ena和sra两种数据库。
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工具进行下载。可惜的是,目前仅有GSA和ENA数据库支持Aspera下载,NCBI SRA数据库由于广泛采用了Google Cloud 和 AWS 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
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
本篇文章来源于微信公众号:微因