萌哥碎碎念
一直以来都想写一下下载数据的这些命令和工具,现在刚好收集了一些,可以写一整个专题。先分别写,也许之后还能出一个横评。目前规划的软件有:
- fastq-dl
- gget
- ffq
- iSeq
- kingfisher
- datasets
这里面datasets比较特殊,是NCBI的官方软件,并且主要不是用来下载原始数据的,是下载比如基因组或者获取一些NCBI上的元信息的(例如一个物种的系统分类信息,可以参考我之前的推文),因为同类别的软件比较少,所以就一起放在这个专题里吧。
今天先介绍fastq-dl。
目前没有发表文章,但是引用的话可以引用github地址: https://github.com/rpetit3/fastq-dl
安装
可以用conda一键安装:
conda install fastq-dl
当然你也可以用pip来安装:
python -m pip install fastq-dl
目前最新版是 3.0.0
。这个版本的主要更新是:
增加了忽略检查md5值的
--ignore
的选项需要3.9及以上版本的python
打印一下帮助文档,会发现参数不是很多,使用起来不太复杂。
fastq-dl --help
Usage: fastq-dl [OPTIONS]
Download FASTQ files from ENA or SRA.
╭─ Required Options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ * --accession -a TEXT ENA/SRA accession to query. (Study, Sample, Experiment, Run accession) [required] │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Download Options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --provider [ena|sra] Specify which provider (ENA or SRA) to use. [default: ena] │
│ --group-by-experiment Group Runs by experiment accession. │
│ --group-by-sample Group Runs by sample accession. │
│ --max-attempts -m INTEGER Maximum number of download attempts. [default: 10] │
│ --sra-lite Set preference to SRA Lite │
│ --only-provider Only attempt download from specified provider. │
│ --only-download-metadata Skip FASTQ downloads, and retrieve only the metadata. │
│ --ignore -I Ignore MD5 checksums for downloaded files. │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Additional Options ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --outdir -o TEXT Directory to output downloads to. [default: ./] │
│ --prefix TEXT Prefix to use for naming log files. [default: fastq] │
│ --cpus INTEGER Total cpus used for downloading from SRA. [default: 1] │
│ --force -F Overwrite existing files. │
│ --silent Only critical errors will be printed. │
│ --sleep -s INTEGER Minimum amount of time to sleep between retries (API query and download) [default: 10] │
│ --version -V Show the version and exit. │
│ --verbose -v Print debug related text. │
│ --help -h Show this message and exit. │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
场景1:下载单个SRA文件
假设我要下载的文件的SRA数据库编号是 SRR7492801
(随手搓的,搜了一下发现是人类的转录组数据,就很巧)
使用起来很简单:
fastq-dl -a SRR7492801 --prefix SRR7492801 --cpus 8
默认是去ena数据库下载, 你也可以手动用 -a
指定从sra数据库下载。
-prefix
是指定样品的metadata信息的前缀,会以一个类似于SRR7492801-run-info.tsv
的名字保存下来。
一般我会把这个文件保存下来,方便之后整理成表格,特别是发表的时候可能会用到。有这个信息,下次也不用去NCBI再挨个查这些样品到的是对照还是处理之类的信息了。
--cpus
是指定用多少个线程数来下载, 默认是1。
默认情况下fastq-dl
就会完成下载和文件md5检验的过程,确保下载的数据是完整的。而不用自己再去根据md5文件去验证,省时省力省心。
下载的速度也不错,起码我这里是的 :-)
场景二:下载一整个bioproject
有的时候我们想复现别人的文章里的分析,会遇到希望一键把这篇文章的bioproject里的所有样品都下载下来的场景,这个软件也是支持这样的操作的:
fastq-dl -a PRJDB17334 --group-by-experiment --prefix PRJDB17334
其实各个层级都是可以的哈,不管是Study, Sample, Experiment 还是 Run accession。
说到这些名词,就得介绍一下NCBI的数据存放的架构了。
NCBI的数据存放架构
这个工具是允许以多层级的方式进行下载的。那么数据在NCBI的数据库里一般有哪几级呢?
Accession Type | Prefixes | Example |
---|---|---|
BioProject | PRJEB, PRJNA, PRJDB | PRJEB42779, PRJNA480016, PRJDB14838 |
Study | ERP, DRP, SRP | ERP126685, DRP009283, SRP158268 |
BioSample | SAMD, SAME, SAMN | SAMD00258402, SAMEA7997453, SAMN06479985 |
Sample | ERS, DRS, SRS | ERS5684710, DRS259711, SRS2024210 |
Experiment | ERX, DRX, SRX | ERX5050800, DRX406443, SRX4563689 |
Run | ERR, DRR, SRR | ERR5260405, DRR421224, SRR7706354 |
如果这个项目很大,那么一个BioProject可能包含基因组、转录组、chip-seq之类的各种类别的数据,但是我们一般只需要其中的一部分。
下载的最小单位是run,也就是一个或者一对fastq(如果双端测序的话)数据。
而Experiment和run之间的关系,按照官网的介绍是:
The relationship of Experiment to Run is a 1-to-many relationship, or there can be many Run accessions associated with a single Experiment Accession (e.g. re-sequencing the same sample). Although in most cases, it is a 1-to-1 relationship, you can use --group-by-experiment to merge multiple runs associated with an Experiment accession into a single FASTQ file.
简单讲就是在NCBI的系统里,一个Experiment可能会对应着多个Run,比如有的样品测一次没测够足够的数据,后来又补测了一部分,那么这里就会有两个Run也就是两个SRA数据库编号的数据对应到一个Experiment的情况,虽然大多数时候两者都是1对1的关系。
因为软件太简单了所以似乎没有更多觉得值得说的内容了,那么如果你对这个软件的使用有疑惑欢迎在下面评论或者给我的微信公众号萌哥与生信
留言,我看到会及时回复的你哦。