引用我们:Haoyu Chao,Zhuojin Li,Dijun Chen,Ming Chen,iSeq:获取公共测序数据的集成工具,生物信息学,2024;,btae641,https://doi.org/10.1093/bioinformatics/btae641
iSeq是一个 Bash 脚本,允许您从GSA 、 SRA 、 ENA和DDBJ数据库下载测序数据和元数据。请参阅 iSeq 的详细管道。这是 iSeq 的基本流程:
重要的
要使用 iSeq,您的系统必须连接到网络并支持 FTP、HTTP 和 HTTPS 协议。
-s
、 --speed
选项用于设置下载速度限制 (MB/s)(默认值:1000 MB/s)。如iseq -i SRR7706354 -s 10
sra-tools=2.11
更新为sra-tools>=2.11.0
。用于合并 FASTQ 文件的新-e
选项:添加了-e
选项,用于将每个Experiment (-e ex)
、 Sample (-e sa)
或Study (-e st)
的多个 FASTQ 文件合并为一个文件。
用于输入的新-i
选项: iSeq
现在可以接受包含多个登录号的file
作为-i fileName
的输入。
GSA 元数据下载的 API 更改:用于下载 GSA 元数据的 API 端点已从getRunInfo
更新为getRunInfoByCra
。
将结果保存到个人目录:输出结果现在将通过-o
选项保存在用户的个人目录中。
更新了 SAMC 匹配的正则表达式:SAMC 的匹配模式已从SAMC[AZ]?[0-9]+
更改为SAMC[0-9]+
。
修复一些错误
conda install bioconda::iseq
# Use the following command to check whether dependent software is installed
iseq --version
iseq -i PRJNA211801
-a
进行批量下载,使用-g
直接下载 gzip 格式的 FASTQ 文件。 iseq -i SRR_Acc_List.txt -a -g
$ iseq --help
Usage:
iseq -i accession [options]
Required option:
-i, --input [text|file] Single accession or a file containing multiple accessions.
Note: Only one accession per line in the file, all accessions must be from the same database.
Optional options:
-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 [ex|sa|st] Merge multiple fastq files into one fastq file for each Experiment, Sample or Study.
-d, --database [ena|sra] Specify the database to download SRA sequencing data (default: ena).
Note: new 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.
-s, --speed int Download speed limit (MB/s) (default: 1000 MB/s).
-o, --output text The output directory. If not exists, it will be created (default: current directory).
-h, --help Show the help information.
-v, --version Show the script version.
-i
, --input
输入要下载的材料,也可以输入包含多个材料的文件(文件中每行只能一个材料,所有材料必须来自同一个数据库)。
iseq -i PRJNA211801
首先, iSeq将检索加入的元数据,然后继续下载其中包含的每个运行。
目前支持来自以下5个数据库的6种登录格式,支持的登录前缀如下:
数据库 | 生物计划 | 学习 | 生物样本 | 样本 | 实验 | 跑步 |
---|---|---|---|---|---|---|
总务局 | PRJC | 加拿大税务局 | 山姆公司 | 克雷克斯 | CRR | |
安全研究协会 | PRJNA | 建议零售价 | 萨姆尼 | SRS | SRX | SR |
埃纳 | PRJEB | 企业资源计划 | 相同的 | 急诊室 | ERX | 犯错 |
东德巴杰 | 普吉数据库 | 数据恢复计划 | 萨德 | DRS | 不连续接收 | 减少灾害风险 |
地球轨道 | 通用电气工程师协会 | 全球移动通信系统 |
另外,对于GEO数据库中的两种数据格式( GSE/GSM
),它会直接检索关联的PRJNA/SAMN
,然后继续获取包含的Runs并下载测序数据。因此,本质上,它仍然从SRA数据库下载测序数据。
以下是一些示例:
加入类型 | 前缀 | 例子 |
---|---|---|
生物计划 | PRJEB、PRJNA、PRJDB、PRJC、GSE | PRJEB42779、PRJNA480016、PRJDB14838、PRJCA000613、GSE122139 |
学习 | ERP、DRP、SRP、CRA | ERP126685、DRP009283、SRP158268、CRA000553 |
生物样本 | SAMD、SAME、SAMN、SAMC | SAMD00258402、SAMEA7997453、SAMN06479985、SAMC017083 |
样本 | ERS、DRS、SRS、GSM | ERS5684710、DRS259711、SRS2024210、GSM7417667 |
实验 | ERX、DRX、SRX、CRX | ERX5050800、DRX406443、SRX4563689、CRX020217 |
跑步 | ERR、DRR、SRR、CRR | ERR5260405、DRR421224、SRR7706354、CRR311377 |
综上所述,无论您加入的六个选项中的数据格式如何,它最终都会下载并检查每个包含的Run的MD5值。如果MD5值与公共数据库中的MD5值不匹配,则会尝试最多三轮重新下载。如果经过三次尝试下载并验证成功,则文件名将存储在success.log
中;否则,如果下载失败,文件名将存储在fail.log
中。
-m
, --metadata
仅下载记录的样本信息,跳过测序数据的下载。
iseq -i PRJNA211801 -m
iseq -i CRR343031 -m
因此,无论是否使用-m
参数,都会获取到加入的样本信息。如果无法检索元数据, iSeq程序将退出,而不继续进行后续下载。
笔记
注1 :如果检索到的登录号在SRA/ENA/DDBJ/GEO数据库中, iSeq将首先在ENA数据库中检索。如果可以检索样本信息,它将通过 ENA API 下载TSV
格式的元数据,通常包含 191 列。但SRA数据库中最近发布的一些数据可能无法及时同步到ENA数据库。因此,如果无法从ENA数据库获取元数据, iSeq将通过SRA数据库后端直接下载CSV
格式的元数据,通常包含30列。为了保持与 TSV 格式的一致性,将使用sed -i 's/,/t/g'
将其转换为 TSV 格式。但是,如果单个字段包含逗号,则可能会导致列乱序。最终,您将获得名为${accession}.metadata.tsv
的示例信息。
笔记
注2 :如果检索到的登录信息在GSA数据库中, iSeq将通过GSA的getRunInfo接口获取样本信息,下载CSV
格式的元数据,通常包含25列。上面获得的元数据将保存为${accession}.metadata.csv
。为了补充更详细的元数据信息,iSeq 会通过 GSA 的 exportExcelFile 接口自动获取入库所属项目的元数据信息,下载XLSX
格式的元数据,一般有 3 张: Sample
、 Experiment
、 Run
。最终的元数据信息将保存为${accession}.metadata.xlsx
。总之,您最终将获得名为${accession}.metadata.csv
和CRA*.metadata.xlsx
的样本信息。
-g
, --gzip
直接下载gzip格式的FASTQ文件。如果无法直接下载,则会下载 SRA 文件并使用多线程分解和压缩将其转换为 gzip 格式。
iseq -i SRR1178105 -g
由于直接存储在GSA数据库中的数据格式大部分都是 gzip 格式,因此如果要检索的记录来自 GSA 数据库,无论是否使用-g
参数,都可以直接下载 gzip 格式的 FASTQ 文件。
如果加入来自SRA/ENA/DDBJ/GEO数据库, iSeq将首先尝试访问 ENA 数据库。如果它可以直接下载 gzip 格式的 FASTQ 文件,它就会这样做;否则,它会下载SRA文件并使用fasterq-dump
工具将其转换为FASTQ格式,然后使用pigz
工具压缩FASTQ文件,最终获得gzip格式的FASTQ文件。
提示
parallel-fastq-dump 还可以将 SRA 转换为 gzip 压缩的 FASTQ 文件,通常比fasterq-dump + pigz
快2-3 倍。但考虑到IO限制, iSeq
目前不支持parallel-fastq-dump
。
-q
, --fastq
下载SRA文件后,它们将被分解为多个未压缩的FASTQ文件。
iseq -i SRR1178105 -q
仅当加入来自SRA/ENA/DDBJ/GEO数据库且下载的文件为SRA文件时,该参数才有效。下载SRA文件后, iSeq将使用fasterq-dump
工具将其转换为FASTQ文件。此外,您可以使用-t
参数指定要转换的线程数。
笔记
注1 : -q
对于下载单细胞数据特别有用,特别是对于scATAC-Seq数据,因为它可以有效地将文件分解为四个部分: I1
, R1
, R2
, R3
。但是,如果通过-g
参数直接下载FASTQ文件,则只会获得R1
和R3
文件(例如SRR13450125),这可能会导致后续数据分析时出现问题。
笔记
注2 :当-q
和-g
一起使用时,首先会下载SRA文件,然后使用fasterq-dump
工具将其转换为FASTQ
文件,最后使用pigz
将其压缩为gzip格式。它不直接下载gzip格式的FASTQ
文件,这对于获取全面的单细胞数据非常有用。
-t
, --threads
指定用于将 SRA 文件解压缩为 FASTQ 文件或压缩 FASTQ 文件的线程数。默认值为8
。
iseq -i SRR1178105 -q -t 10
考虑到测序数据文件一般较大,可以使用-t
参数指定分解的线程数。然而,更多的线程并不一定意味着更好的性能,因为过多的线程可能会导致CPU或IO负载过高,特别是fasterq-dump
会消耗大量的IO,可能会影响其他任务的执行。根据基准评估,我们建议最大线程数为 15。
-e
, --merge
将每个实验 ( ex
)、样本 ( sa
) 或研究 ( st
) 的多个 FASTQ文件合并为一个 FASTQ文件。
iseq -i SRX003906 -g -e ex
尽管在大多数情况下,一个实验仅包含一次运行,但某些测序数据可能在一个实验中包含多个运行(例如,SRX003906、CRX020217)。因此,您可以使用-e
参数将实验中的多个 FASTQ 文件合并为一个。考虑到双端测序,需要同时合并fastq_1
和fastq_2
文件,并且相应行中的序列名称需要保持一致, iSeq将按照相同的顺序合并多个FASTQ文件。最终,对于单端测序数据,会生成单个文件SRX*.fastq.gz
,对于双端测序数据,会生成两个文件SRX*_1.fastq.gz
和SRX*_2.fastq.gz
。
笔记
注1 :如果加入的是运行ID ,则不能使用-e
参数(见下文)。目前, iSeq支持合并gzip 压缩和未压缩的 FASTQ文件,但不支持合并BAM 文件和 tar.gz文件等文件。
-e ex
:将同一实验的所有 fastq 文件合并为一个 fastq 文件。接受的加入格式: ERX, DRX, SRX, CRX
。-e sa
:将同一Sample的所有 fastq 文件合并为一个 fastq 文件。接受的加入格式: ERS, DRS, SRS, SAMC, GSM
。-e st
:将同一Study的所有fastq文件合并为一个fastq文件。接受的加入格式: ERP, DRP, SRP, CRA
。 笔记
注2 :通常,当一个实验仅包含一次运行时,相同的运行应具有相同的前缀。例如, SRR52991314_1.fq.gz
和SRR52991314_2.fq.gz
具有相同的前缀SRR52991314
。在这种情况下, iSeq会直接将它们重命名为SRX*_1.fastq.gz
和SRX*_2.fastq.gz
。但是,也有例外,例如在 CRX006713 中,运行CRR007192
包含具有不同前缀的文件。在这种情况下, iSeq会将它们重命名为SRX*_original_filename
,例如,它们将重命名为CRX006713_CRD015671.gz
和CRX006713_CRD015672.gz
。
-d
, --database
指定下载SRA文件的数据库,支持ENA和SRA数据库。
iseq -i SRR1178105 -d sra
默认情况下, iSeq会自动检测可用的数据库,因此通常不需要指定-d
参数。但是,某些 SRA 文件可能会从 ENA 数据库下载缓慢。在这种情况下,您可以通过指定-d sra
强制从 SRA 数据库下载。
笔记
注意:如果在ENA数据库中没有找到对应的 SRA 文件,即使指定了-d ena
参数, iSeq仍然会自动切换到从SRA数据库下载。
-p
, --parallel
启用多线程下载并需要指定线程数。
iseq -i PRJNA211801 -p 10
考虑到wget
在某些情况下可能会很慢,可以使用-p
参数让iSeq利用axel
工具进行多线程下载。
笔记
注1 :多线程下载的断点续传功能仅在同一线程内有效。也就是说,如果第一次下载使用了-p 10
参数,第二次下载也必须使用该参数才能实现断点下载。
笔记
注 2 :如前所述, iSeq将在整个下载过程中维持 10 个连接。因此,您将在下载过程中看到多次弹出相同的Connection * finished
。这是因为有些连接在下载完成后立即释放,然后建立新的连接进行下载。
-a
, --aspera
使用 Aspera 进行下载。
iseq -i PRJNA211801 -a -g
由于Aspera下载速度较快,因此您可以使用-a
参数指示iSeq使用ascp
工具进行下载。遗憾的是,Aspera 下载目前仅受 GSA 和 ENA 数据库支持。 NCBI SRA数据库无法使用 Aspera 进行下载,因为它主要使用 Google Cloud 和 AWS Cloud 技术以及其他原因,请参阅避免使用 ascp。
笔记
注1 :访问GSA数据库时,如果有华为云的下载链接,即使使用-a
参数, iSeq也会优先通过华为云下载。这是因为华为云提供更快、更稳定的下载速度。因此,下载GSA数据时,建议使用-a
参数。这样在无法访问华为云的情况下,通过Aspera通道下载还是比较快的。否则,您将不得不通过wget
或axel
下载,这是较慢的方法。
笔记
注2 :由于Asper
a需要密钥文件, iSeq会自动在conda
环境或~/.aspera
目录中搜索密钥文件。如果未找到密钥文件,则无法下载。
-o
, --output
输出目录。如果不存在,将创建它(默认:当前目录)。
-s
, --speed
Wget
、 AXEL
和Aspera
的下载速度限制 (MB/s)(默认:1000 MB/s)。
输出 | 描述 |
---|---|
SRA 文件 | 可以使用-q 选项转换为 FASTQ 文件 |
.元数据.tsv | 用于查询加入的元数据 |
成功日志 | 保存下载成功的SRA文件名 |
失败日志 | 保存已下载的SRA文件名失败 |
输出 | 描述 |
---|---|
GSA 文件 | 大部分是*.gz格式,也有少数是bam/tar/bz2格式 |
.元数据.csv | 用于查询加入的元数据 |
.元数据.xlsx | 项目元数据,包括 xlsx 格式的查询加入 |
成功日志 | 保存下载成功的GSA文件名 |
失败日志 | 保存已下载的GSA文件名失败 |
iSeq 的灵感来自于fastq-dl、fetchngs、pysradb、Kingfisher 。这些优秀的工具也可能非常有帮助。以下是不同软件的多重比较:
软件名称 | 程序语言 | 支持的数据库 | 支持的加入品 | 支持的格式 | 支持的方法 | 获取元数据 | MD5检查 | 可断点下载 | 并行下载 | 合并FASTQ | 跳过下载 | 可安装康达 | 网址 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
测序仪 | 壳 | GSA、SRA、ENA、DDBJ、GEO | 全部 | fq、fq.gz、sra、bam | wget、阿克塞尔、阿斯佩拉 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ? |
边缘涡轮 | C | 总务局 | 全部被否认 | fq、fq.gz、bam | 边缘涡轮下载 | ✔ | ? | ||||||
SRA 工具包 | C | SRA、ENA、DDBJ | 所有期望运行 ID 均被拒绝 | fq、fq.gz、sra | 预取 | ✔ | ✔ | ✔ | ✔ | ? | |||
enaBrowser工具 | Python | SRA、ENA、DDBJ | 除 GSA/GEO ID 之外的所有内容 | fq、fq.gz、sra | urllib、阿斯佩拉 | ✔ | ✔ | ✔ | ✔ | ✔ | ? | ||
fastq-dl | Python | SRA、ENA、DDBJ | 除 GSA/GEO ID 之外的所有内容 | fq、fq.gz、sra、sra.lite | 获取 | ✔ | ✔ | ✔ | ✔ | ✔ | ? | ||
获取 | Python | SRA、ENA、DDBJ、GEO | 除 GSA ID 外的所有内容 | fq, fq.gz | wget、aspera、预取 | ✔ | ✔ | ✔ | ✔ | ? | |||
pysradb | Python | SRA、ENA、DDBJ、GEO | 除 GSA ID 外的所有内容 | fq、fq.gz、sra、bam | 请求,阿斯佩拉 | ✔ | ✔ | ✔ | ✔ | ✔ | ? | ||
翠鸟 | Python | SRA、ENA、DDBJ | 除 GSA/GEO ID 之外的所有内容 | fq、fq.gz、sra | 卷曲、aria2c、阿斯佩拉 | ✔ | ✔ | ✔ | ✔ | ✔ | ? | ||
FFQ | Python | SRA、ENA、DDBJ、GEO | 除 GSA ID 外的所有内容 | fq、fq.gz、sra、bam | 要求 | ✔ | ✔ | ✔ | ? |
欢迎为iSeq做出贡献!如果您有任何建议、错误报告或功能请求,请在项目的 GitHub 存储库上提出问题。如果您想贡献代码,请分叉存储库,进行更改并提交拉取请求。
引用我们:https://doi.org/10.1101/2024.05.16.594538
该项目根据 MIT 许可证获得许可。