Kingfisher 是一个灵活高效的工具,用于从公共数据仓库(如 ENA、NCBI SRA、AWS 和 Google Cloud)下载序列数据和元数据。它有两个主要模式:获取序列数据(get
)和获取元数据(annotate
)。该工具可以通过 conda 或 Docker 安装,并支持多种下载方法。
1. Kingfisher 工具概述
Kingfisher 是一个旨在简化从公共数据仓库(如 欧洲核苷酸档案馆(ENA) 、NCBI SRA 、Amazon AWS 和 Google Cloud )下载测序数据和元数据的工具。用户可以输入特定的 "Run" 访问号(例如 DRR001970 )或 BioProject 访问号(例如 PRJNA621514)。
2. 主要功能:
get
模式 :下载序列数据,支持多种格式,如 SRA 、FASTQ 、FASTA 或 GZIP。它通过多次尝试不同的数据源(例如 ENA、NCBI、AWS)来保证下载的冗余性,直到成功为止。annotate
模式 :下载元数据,支持输出为 CSV 、TSV 、JSON 或 Parquet 格式。
3. 安装选项:
-
通过 Bioconda 安装 :最简单的安装方法是通过 conda 从 bioconda 安装 Kingfisher。您可以使用以下命令设置 conda 环境:
bashconda create -n kingfisher -c conda-forge -c bioconda kingfisher conda activate kingfisher
4. Docker 安装
如果您更喜欢使用 Docker,可以从 DockerHub 获取 Kingfisher 的镜像,并通过 Docker 运行。以下是安装和使用的步骤:
-
拉取 Docker 镜像:
bashdocker pull wwood/kingfisher:[RELEASE_TAG]
-
下载数据到当前目录:
bashdocker run -v `pwd`:/data wwood/kingfisher:[RELEASE_TAG] get -r SRR12118866 -m ena-ftp
其中 [RELEASE_TAG]
需要替换为您需要的具体版本标签。
5. 源代码安装
如果您想要从源代码运行 Kingfisher,可以按照以下步骤在本地开发环境中安装:
-
克隆 Kingfisher 仓库:
bashgit clone https://github.com/wwood/kingfisher-download cd kingfisher-download
-
安装依赖并激活环境:
bashconda env create -n kingfisher -f kingfisher.yml conda activate kingfisher
-
进入 bin 目录并设置环境变量:
bashcd bin export PATH=$PWD:$PATH
-
运行 Kingfisher:
bashkingfisher -h
这样,您就可以在开发环境中运行 Kingfisher 了。
6. 使用方法
Kingfisher 提供了三种主要的操作模式:get
、extract
和 annotate
。每种模式的具体使用方法如下:
-
get
模式:下载并可选地转换序列数据bashkingfisher get -r ERR1739691 -m ena-ascp aws-http prefetch
该命令将尝试从 ENA 下载 ERR1739691 的文件,若失败则从 Amazon AWS Open Data 下载 .SRA 文件,并转换为 FASTQ 格式。
-
extract
模式:从 .SRA 格式文件中提取序列数据bashkingfisher extract --sra ERR1739691.sra -t 16 -f fastq.gz
该命令将使用 16 个线程将 ERR1739691.sra 文件提取并转换为 FASTQ 格式(假设是双端测序数据,则生成两个文件)。
-
annotate
模式:获取元数据表格bashkingfisher annotate -r ERR1739691
该命令将获取与 ERR1739691 相关的元数据,并输出为默认格式的表格(如 CSV 或 TSV)。
7. 下载方法详细介绍:
在 get
模式下,Kingfisher 支持以下几种下载方式:
方法 | 描述 |
---|---|
ena-ascp | 使用 Aspera 从 ENA 下载数据,这是最快的下载方式。 |
ena-ftp | 使用 FTP 从 ENA 下载数据,这也很快,因为无需解压缩。 |
prefetch | 使用 NCBI 的 prefetch 从 SRA 下载数据,然后转换为 FASTQ 格式。 |
aws-http | 使用 AWS Open Data Program 下载数据,并提取为 FASTQ 格式。 |
aws-cp | 使用 AWS S3 从 AWS 下载数据,提取为 FASTQ 格式。 |
gcp-cp | 使用 Google Cloud 下载数据,提取为 FASTQ 格式。 |
8. 常见问题解答(FAQ)
-
ascp: not found 错误
如果出现
/bin/sh: 1: ascp: not found
错误,表示 Aspera 客户端未正确安装。需要确保按照文档中的步骤正确安装 Aspera 客户端。 -
认证失败问题
如果提示 "Failed to authenticate with ascp",可能是由于网络问题或 Aspera 客户端配置不正确。检查网络连接或尝试使用其他网络,并确保 Aspera 客户端正确配置。
-
API 限制问题
如果您频繁调用 NCBI 的 API,可能会遇到 "API rate limit exceeded" 错误。在这种情况下,您可以生成一个 NCBI API 密钥,并将其设置为环境变量来绕过限制:
bashexport NCBI_API_KEY="your_api_key"
如果有多个SRR号
一开始用这个命令挺好的但是,不知道为什么突然不能用了
bash
cat down | xargs -I {} kingfisher get -r {} -m aws-http prefetch aws-cp gcp-cp ena-ascp ena-ftp
没办法现在是一个一个下载
bash
kingfisher get -r SRR8925609 -m aws-http prefetch aws-cp gcp-cp ena-ascp ena-ftp