跳转到主要内容

EGA Python客户端

项目描述

EGA下载客户端:pyEGA3

概述

pyEGA3下载客户端是一个基于Python的工具,用于查看和下载授权EGA数据集的文件。pyEGA3使用EGA数据API,具有几个关键功能

  • 文件通过安全的https连接传输,并且接收到的文件未加密,因此下载后无需解密。
  • 如果连接中断,下载将从上次中断的地方恢复。
  • pyEGA3支持文件分段和段并行下载,从而提高了整体性能。
  • 下载完成后,使用校验和验证文件完整性。
  • pyEGA3实现了GA4GH兼容的htsget协议,用于下载带有索引文件的伴生数据文件的基因组范围。

教程视频

一个演示从安装到文件下载的pyEGA3使用教程视频可在此找到。

要求

安装和更新

使用Pip3

  1. 使用pip3安装pyEGA3。

    sudo pip3 install pyega3
    
  2. 如有需要,使用pip3更新pyEGA3。

    pip3 install pyega3 --upgrade
    
  3. 通过运行pyEGA3测试您的pip3安装。

    pyega3 --help
    

使用conda(bioconda频道)

  1. 使用conda安装pyEGA3。

    conda config --add channels bioconda
    conda config --add channels conda-forge
    conda install pyega3
    
  2. 如有需要,使用conda更新pyEGA3。

    conda update pyega3
    
  3. 通过运行pyEGA3测试您的conda安装。

    pyega3 --help
    

使用GitHub

  1. 克隆ega-download-client GitHub仓库。

  2. 导航到克隆仓库所在的目录。

    cd path/to/ega-download-client
    
  3. 提供了三个脚本,用于根据宿主操作系统安装所需的Python环境。

    • Linux (Red Hat): red_hat_dependency_install.sh
    • Linux: debian_dependency_install.sh
    • macOS: osx_dependency_install.sh
  4. 执行对应宿主操作系统的脚本。例如,如果使用Red Hat Linux,则运行

    sh red_hat_dependency_install.sh
    
  5. 通过运行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

开发

请参阅 开发 页面上的更新和发布更新指南。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

pyega3-5.2.0.tar.gz (46.9 kB 查看哈希值)

上传于 来源

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面