工欲善其事,必先利其器
kingfisher是由昆士兰科技大学微生物组研究中心的 Ben J. Woodcroft 教授开发的一款专门用于高通量测序数据下载的工具。
- Github网址:https://github.com/wwood/kingfisher-download
1简要用途:
一行代码下载原始数据
- Kingfisher 是一个快速灵活的程序,用于从公共数据库(ENA、NCBI、SRA、Amazon AWS 和 Google Cloud)获取序列文件及其元数据注释。其输入可以是一个或多个“Run" accession(例如DRR001970),或一个 BioProject accessions(例如PRJNA621514或SRP260223)。它有两种主要模式:
get
模式用于下载序列数据,annotate
模式用于下载元数据。 - 在
get
子命令中,Kingfisher 会从一系列冗余源下载数据,直到其中一个有效。然后,下载的数据根据需要转换为SRA/FASTQ/FASTA/GZIP 文件格式。下载和提取阶段通常比使用NCBI的SRA工具包更快。特别是,如果从ENA下载,意味着直接下载的是 FASTQ文件,因此不需要提取步骤。
2如何安装
一般我们推荐是conda安装
代码语言:javascript复制conda create -n kingfisher python=3.8
conda activate kingfisher
conda install -c bioconda kingfisher
3最小化使用
get 模式 ——下载并选择转换序列数据
代码语言:javascript复制##下载整个Bioproject
kingfisher get -p PRJNA486534 -m ena-ascp ena-ftp prefetch aws-http 1>down_prjan486534.log 2>&1
##下载单个样本
kingfisher get -r SRR14615558 -m ena-ascp ena-ftp prefetch aws-http --download-threads 10 1>down.log 2>&1
##下载多个样本
kingfisher get --run-identifiers-list SRR_list.csv -m ena-ascp ena-ftp prefetch --download-threads 10 --check-md5sums 1>down_srr_list.log 2>&1
-p :批量下载BioProject IDs 中的所有数据
-m :指定下载源 ena-ascp、ena-ftp、prefetch、aws-http、aws-cp、gcp-cp 等
-r :下载某个确定的SRA数据
--run-identifiers-list :SRR样本列表文件,单列SRR号
--download-threads -t : 指定线程数
extract 模式——转换 .sra文件格式
代码语言:javascript复制##调用16个线程将 `.sra` 文件转换为 fastq文件
kingfisher extract --sra ERR1739691.sra -t 16 -f fastq.gz
-t :线程数
annotate 模式 —— 获取元数据表
默认是标准输出,当然也可以指定输出到文件
代码语言:javascript复制kingfisher annotate -r SRR11181996
可选参数
--all-column
获得更完整的信息集,-f
指定以 CSV、 TSV、 JSON、feather或 parquet 格式输出。-o
指定输出文件的写入路径(默认:标准输出stdout)。
4其他参数
get 模式 -m
方法 | 描述 |
---|---|
ena-ascp | 通过Aspera从ENA下载.fastq.gz文件,之后可以进一步转换。这是最快的方法,因为不需要使用fasterq-dump。 |
ena-ftp | 通过curl从ENA下载.fastq.gz文件,之后可以进一步转换。这是相对较快的方法,因为不需要使用fasterq-dump。 |
prefetch | 使用NCBI的prefetch从sra-tools下载.SRA文件,然后用fasterq-dump提取。 |
aws-http | 使用aria2c通过多个连接线程从AWS Open Data Program下载.SRA文件,之后用fasterq-dump提取。 |
aws-cp | 使用aws s3 cp从AWS下载.SRA文件,然后用fasterq-dump提取。通常不需要支付费用或AWS账户。 |
gcp-cp | 使用Google Cloud gsutil1下载.SRA文件,然后用fasterq-dump提取。需要支付费用和Google Cloud账户。 |
--run-identifiers-list
:以换行分隔的运行标识符列表的文本文件,即1列 CSV 文件。-f
:指定转换输出的文件格式,支持 fastq,fastq.gz,fasta,fasta.gz ,默认为fastq--hide-download-progress
:在下载过程中不显示进度条(默认显示进度)。--ascp-ssh-key ASCP_SSH_KEY
:用于Aspera的openssh密钥路径(默认:使用Kingfisher附带的密钥)。--ascp-args ASCP_ARGS
:传递给ascp的额外参数,例如'-k 2'用于通过稀疏文件校验和恢复(默认:'-k 2')。--prefetch-max-size PREFETCH_MAX_SIZE
:使用prefetch下载默认限制为20G文件大小。Kingfisher禁用了这一限制。使用此选项重新设置文件大小限制,例如--prefetch-max-size "1G"表示1 GB限制(默认:不使用)。--check-md5sums
:检查下载文件的md5sums。这仅对ena-ftp、ena-ascp和aws-http下载方法实现。prefetch、aws-cp和gcp-cp方法在下载过程中计算校验和(默认:不使用)。-f, --output-format-possibilities {sra,fastq,fastq.gz,fasta,fasta.gz}
:允许的输出格式。如果指定了多个,则尽可能少处理下载的数据(默认:"fastq fastq.gz")。--force
:即使文件已存在也重新下载/提取(默认:不重新下载/提取)。--unsorted
:以任意顺序输出序列,通常是它们在.sra文件中出现的顺序。即使是成对的读取可能也是正常顺序,但可以从名称中识别出哪对是哪对,哪个是正向读取,哪个是反向读取(默认:不这样做)。目前只能从NCBI而不是ENA下载。--stdout
:将序列输出到STDOUT。目前需要--unsorted
(默认:不这样做)。-t, --extraction-threads EXTRACTION_THREADS
:提取.sra文件时使用的线程数。当指定了--unsorted
时会忽略(默认:8线程)。--quiet
:仅输出报错信息
5测试
是否可以下载单独指定的Fastq文件?
有时候一个数据集下载完成之后,但是发现仅有个别样本,数据完整性校验不通过,这时候就需要单个fastq文件重新下载,那么 Kingfisher 可以实现吗?
代码语言:javascript复制kingfisher get -r SRR14615558_2.fastq.gz -m ena-ascp ena-ftp prefetch aws-http --download-threads 10
运行报错,说明可以单独下载指定的SRA文件,但是不能具体指定下载 fastq1 还是fastq2。查看说明文档,也仅有 -r
和 -p
这两个参数,并没有针对 fastq 文件的可选项。
文末友情宣传
强烈建议你推荐给身边的博士后以及年轻生物学PI,多一点数据认知,让他们的科研上一个台阶:
- 生物信息学马拉松授课(买一得五) ,你的生物信息学入门课
- 时隔5年,我们的生信技能树VIP学徒继续招生啦
- 搭配GPU服务再升级—256线程2Tb内存服务器共享一年仍然是仅需800