EGA Python客户端
项目描述
EGA下载客户端:pyEGA3
概述
pyEGA3下载客户端是一个基于Python的工具,用于查看和下载授权EGA数据集的文件。pyEGA3使用EGA数据API,具有几个关键功能
- 文件通过安全的https连接传输,并且接收到的文件未加密,因此下载后无需解密。
- 如果连接中断,下载将从上次中断的地方恢复。
- pyEGA3支持文件分段和段并行下载,从而提高了整体性能。
- 下载完成后,使用校验和验证文件完整性。
- pyEGA3实现了GA4GH兼容的htsget协议,用于下载带有索引文件的伴生数据文件的基因组范围。
教程视频
一个演示从安装到文件下载的pyEGA3使用教程视频可在此处找到。
要求
- Python 3.6或更高版本。(下载说明)
安装和更新
使用Pip3
-
使用pip3安装pyEGA3。
sudo pip3 install pyega3
-
如有需要,使用pip3更新pyEGA3。
pip3 install pyega3 --upgrade
-
通过运行pyEGA3测试您的pip3安装。
pyega3 --help
使用conda(bioconda频道)
-
使用conda安装pyEGA3。
conda config --add channels bioconda conda config --add channels conda-forge conda install pyega3
-
如有需要,使用conda更新pyEGA3。
conda update pyega3
-
通过运行pyEGA3测试您的conda安装。
pyega3 --help
使用GitHub
-
克隆ega-download-client GitHub仓库。
-
导航到克隆仓库所在的目录。
cd path/to/ega-download-client
-
提供了三个脚本,用于根据宿主操作系统安装所需的Python环境。
- Linux (Red Hat): red_hat_dependency_install.sh
- Linux: debian_dependency_install.sh
- macOS: osx_dependency_install.sh
-
执行对应宿主操作系统的脚本。例如,如果使用Red Hat Linux,则运行
sh red_hat_dependency_install.sh
-
通过运行pyEGA3测试您的GitHub安装。
python -m pyega3.pyega3 --help
使用Docker
有由Bioconda构建的Docker镜像:[https://bioconda.github.io/recipes/pyega3/README.html](https://bioconda.github.io/recipes/pyega3/README.html) 在Docker容器中运行pyEGA3的示例
docker run --rm -v /tmp:/app -w /app quay.io/biocontainers/pyega3:3.4.0--py_0 pyega3 -d -t fetch EGAF00001775036
此示例命令将您的/tmp文件夹挂载到Docker容器中的/app,启动3.4.0版本的pyEGA3并下载测试文件。测试文件将下载到您的/tmp文件夹中。您可以在上述Bioconda页面上找到其他可能更新的pyEGA3 Docker镜像版本("tags")。
用法 - 文件下载
usage: pyega3.py [-h] [-d] [-cf CONFIG_FILE] [-sf SERVER_FILE] [-c CONNECTIONS] [-t] [-ms MAX_SLICE_SIZE] {datasets,files,fetch} ...
Download from EMBL EBI's EGA (European Genome-phenome Archive)
positional arguments:
{datasets,files,fetch}
subcommands
datasets List authorized datasets
files List files in a specified dataset
fetch Fetch a dataset or file
optional arguments:
-h, --help show this help message and exit
-d, --debug Extra debugging messages
-cf CONFIG_FILE, --config-file CONFIG_FILE
JSON file containing credentials/config e.g.{"username":"user1","password":"toor"}
-sf SERVER_FILE, --server-file SERVER_FILE
JSON file containing server config e.g.{"url_auth":"aai url","url_api":"api url", "url_api_ticket":"htsget url", "client_secret":"client secret"}
-c CONNECTIONS, --connections CONNECTIONS
Download using specified number of connections (default: 1 connection)
-t, --test Test user activated
-ms MAX_SLICE_SIZE, --max-slice-size MAX_SLICE_SIZE
Set maximum size for each slice in bytes (default: 100 MB)
测试pyEGA3安装
我们建议测试所有新的pyEGA3安装。已创建一个测试账户,可以使用(-t)来测试以下pyEGA3操作
列出测试账户可用的数据集
pyega3 -d -t datasets
列出测试数据集中的文件
pyega3 -d -t files EGAD00001003338
下载测试文件
pyega3 -d -t fetch EGAF00001775036
测试数据集(EGAD00001003338)很大(近1TB),因此请三思而后行是否测试下载整个数据集。测试账户不需要EGA用户名和密码,因为它包含来自1000 Genomes Project的公开可访问文件。测试数据集中的文件可用于故障排除和培训目的。
定义凭证
要查看和下载您有访问权限的文件,pyEGA3需要将您的EGA用户名(电子邮件地址)和密码保存到凭证文件中。
创建一个名为CREDENTIALS_FILE的文件,并将其放置在pyEGA3将运行的目录中。凭证文件必须是JSON格式,并包含您注册的EGA用户名(电子邮件地址)和由EGA帮助台提供的密码。
一个示例CREDENTIALS_FILE可在[这里](https://github.com/EGA-archive/ega-download-client/blob/master/pyega3/config/default_credential_file.json)找到。
使用pyEGA3进行文件下载
将<these values>
替换为您数据集相关的值。
显示授权数据集
pyega3 -cf </Path/To/CREDENTIALS_FILE> datasets
显示数据集中的文件
pyega3 -cf </Path/To/CREDENTIALS_FILE> files EGAD<NUM>
下载数据集
pyega3 -cf </Path/To/CREDENTIALS_FILE> fetch EGAD<NUM> --output-dir </Path/To/OutputDirectory>
下载单个文件
pyega3 -cf </Path/To/CREDENTIALS_FILE> fetch EGAF<NUM> --output-dir </Path/To/OutputDirectory>
列出数据集中所有文件的未加密md5校验和
pyega3 -cf </Path/To/CREDENTIALS_FILE> files EGAD<NUM>
将未加密的md5校验和保存到文件中
nohup pyega3 -cf </Path/To/CREDENTIALS_FILE> files EGAD<NUM> </Path/To/File/md5sums.txt>
使用5个连接下载文件或数据集
pyega3 -c 5 -cf </Path/To/CREDENTIALS_FILE> fetch EGAD<NUM> --output-dir </Path/To/OutputDirectory>
用法 - 通过htsget进行基因组范围请求
usage: pyega3 fetch [-h] [--reference-name REFERENCE_NAME]
[--reference-md5 REFERENCE_MD5] [--start START]
[--end END] [--format {BAM,CRAM,VCF,BCF}]
[--max-retries MAX_RETRIES] [--retry-wait RETRY_WAIT]
[--output-dir OUTPUT_DIR] [--delete-temp-files]
identifier
positional arguments:
identifier Id for dataset (e.g. EGAD00000000001) or file (e.g.
EGAF12345678901)
optional arguments:
-h, --help show this help message and exit
--reference-name REFERENCE_NAME, -r REFERENCE_NAME
The reference sequence name, for example 'chr1', '1',
or 'chrX'. If unspecified, all data is returned.
--reference-md5 REFERENCE_MD5, -m REFERENCE_MD5
The MD5 checksum uniquely representing the requested
reference sequence as a lower-case hexadecimal string,
calculated as the MD5 of the upper-case sequence
excluding all whitespace characters.
--start START, -s START
The start position of the range on the reference,
0-based, inclusive. If specified, reference-name or
reference-md5 must also be specified.
--end END, -e END The end position of the range on the reference,
0-based exclusive. If specified, reference-name or
reference-md5 must also be specified.
--format {BAM,CRAM,VCF,BCF}, -f {BAM,CRAM,VCF,BCF}
The format of data to request.
--max-retries MAX_RETRIES, -M MAX_RETRIES
The maximum number of times to retry a failed
transfer. Any negative number means infinite number of
retries.
--retry-wait RETRY_WAIT, -W RETRY_WAIT
The number of seconds to wait before retrying a failed
transfer.
--output-dir OUTPUT_DIR
Output directory. The files will be saved into this directory. Must exist. Default: the current working directory.
--delete-temp-files Do not keep those temporary, partial files which were
left on the disk after a failed transfer.
使用pyEGA3获取基因组范围
将<these values>
替换为您数据集相关的值。请注意,htsget只能用于EGA中有对应索引文件的文件。
下载BAM文件的1号染色体
pyega3 fetch -cf </Path/To/CREDENTIALS_FILE> --reference-name 1 --format BAM --output-dir </Path/To/OutputDirectory> EGAF<NUM>
下载BAM文件1号染色体上的0-1000000位置
pyega3 fetch -cf </Path/To/CREDENTIALS_FILE> --start 0 --end 1000000 --reference-name 1 --format BAM --output-dir </Path/To/OutputDirectory> EGAF<NUM>
故障排除
首先,请确保您使用的是pyEGA3的最新版本,通过"安装和更新"部分的说明更新pyEGA3。
凭证验证失败
请确保您的凭据格式正确。电子邮件地址(用户名)区分大小写。如果您有 EGA 提交账户,这些凭据与您的数据访问凭据不同。请确保您使用的是数据访问凭据与 pyEGA3。
下载速度慢
可以使用 --connections
参数优化下载速度,该参数将在文件级别并行下载。如果提供了 --connections
参数,所有大于 100Mb 的文件将使用指定的并行连接数下载。
使用非常高的连接数会引入开销,可能会减慢文件的下载速度。请注意,文件仍然是按顺序下载的,所以使用多个连接并不意味着并行下载多个文件。我们建议最初尝试使用 30 个连接,并根据需要调整以获得最大吞吐量。
文件保存需要很长时间
请注意,当文件正在保存时,它会经过两个过程。首先,下载的文件“块”被拼接起来以重建原始文件。其次,pyEGA3 计算文件的校验和以确认文件已成功下载。较大的文件需要更多时间来重建和验证校验和。
未识别 --saveto
参数
命令行参数 --saveto
现在称为 --output-dir
,与原始的 --saveto
参数相比,现在只能指定输出目录,而不是输出文件。
此更改是为了改进用户体验并避免由于预期目录而提供文件名,反之亦然所引起的问题。
因此,原始命令中,--saveto
参数指定了一个目录
pyega3 -cf </Path/To/CREDENTIALS_FILE> fetch EGAF<NUM> --saveto </Path/To/OutputDirectory>
应该这样重写
pyega3 -cf </Path/To/CREDENTIALS_FILE> fetch EGAF<NUM> --output-dir </Path/To/OutputDirectory>
原始命令
pyega3 -cf </Path/To/CREDENTIALS_FILE> fetch EGAF<NUM> --saveto </Path/To/NewFileName>
其中 --saveto
参数指定了新的文件名,不再受支持,因为 --output-dir
参数只支持输出目录,不支持输出文件。
进一步的帮助
如果在排除故障后您仍然遇到困难,请将以下信息通过电子邮件发送给 EGA 帮助台(helpdesk@ega-archive.org)
- 附上位于 pyEGA3 运行目录中的日志文件(pyega3_output.log)
- 指出您在运行 pyEGA3 的计算环境:计算集群、单机、其他(请描述)。
归属
pyEGA3 的部分来自由 James Blachly 开发的 pyEGA。
开发
请参阅 开发 页面上的更新和发布更新指南。