前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >iSeq:GSA-SRA-ENA-GEO-DDBJ 数据下载一网打尽

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

作者头像
用户1075469
发布2024-11-23 15:12:45
发布2024-11-23 15:12:45
23400
代码可运行
举报
文章被收录于专栏:科技记者科技记者
运行总次数:0
代码可运行

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

简单流程

详细流程

安装

conda 可以轻松安装 iSeq

代码语言:javascript
代码运行次数:0
复制
# 现在conda也正在追赶mamba的步伐,变得更快呢,当然还有更快的pixi
conda create -n iseq -c conda-forge -c bioconda iseq
conda activate iseq

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

使用测试

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

iSeq 使用方法

代码语言:javascript
代码运行次数:0
复制
$ 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 进行下载。

代码语言:javascript
代码运行次数:0
复制
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 的样本信息,跳过测序数据的下载。

代码语言:javascript
代码运行次数:0
复制
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 信息会被保存为

3. -g, --gzip

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

代码语言:javascript
代码运行次数:0
复制
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 格式。

代码语言:javascript
代码运行次数:0
复制
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。

代码语言:javascript
代码运行次数:0
复制
iseq -i SRR1178105 -q -t 10

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

6. -e, --merge

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

代码语言:javascript
代码运行次数:0
复制
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两种数据库。

代码语言:javascript
代码运行次数:0
复制
iseq -i SRR1178105 -d sra

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

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

8. -p, --parallel

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

代码语言:javascript
代码运行次数:0
复制
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 进行下载。

代码语言:javascript
代码运行次数:0
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微因 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
    • conda 可以轻松安装 iSeq
  • 使用测试
  • iSeq 使用方法
    • 1. -i, --input
    • 2. -m, --metadata
    • 3. -g, --gzip
    • 4. -q, --fastq
    • 5. -t, --threads
    • 6. -e, --merge
    • 7. -d, --database
    • 8. -p, --parallel
    • 9. -a, --aspera
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档