ixxmu / mp_duty

抓取网络文章到github issues保存
https://archives.duty-machine.now.sh/
116 stars 30 forks source link

一行代码下载原始数据—Kingfisher #4104

Closed ixxmu closed 11 months ago

ixxmu commented 11 months ago

https://mp.weixin.qq.com/s/G-53DHGOxhJaz5u9QEuZjA

ixxmu commented 11 months ago

一行代码下载原始数据—Kingfisher by 生信菜鸟团

工欲善其事,必先利其器


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安装

conda create -n kingfisher python=3.8
conda activate kingfisher
conda install -c bioconda kingfisher

3最小化使用

get 模式 ——下载并选择转换序列数据

##下载整个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文件格式

##调用16个线程将 `.sra` 文件转换为 fastq文件
kingfisher extract --sra ERR1739691.sra -t 16 -f fastq.gz

-t :线程数 

annotate 模式 —— 获取元数据表

默认是标准输出,当然也可以指定输出到文件

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 可以实现吗?

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,多一点数据认知,让他们的科研上一个台阶: