跳转到主要内容

MolSSI QikProp as a Service的API封装CLI和库

项目描述

codecov

MolSSI QikProp As A Service API Wrapper Library

一个封装QikProp v3 As A Service API调用的库

该库所达到的QikProp版本由William L. Jorgensen提供,并由分子科学软件学院(MolSSI)托管作为服务。如有问题或建议改进,请在项目GitHub上提交问题。随着时间的推移,将添加更多功能和选项。

该项目作为Python封装,提供可导入的库和CLI工具,以便调用QikProp服务。

有关API端点的直接信息,请参阅项目GitHub

从Conda或Pip安装

此软件包可以从Conda(通过Conda-Forge)或Pip安装

conda install -c conda-forge qikpropservice

或者

pip install qikpropservice

从源安装

  1. 克隆https://github.com/MolSSI/qikpropservice上的仓库
  2. 导航到文件夹apiwrapper
  3. 运行python setup.py install

作为CLI工具使用

可以从任何命令行界面通过调用运行CLI

qikpropcli

CLI为其自己的使用方式提供了文档,但最常见的情况如下

qikpropcli run FILES

FILES 可以替换为任何数量要提交给 QikProp 服务 API 端点的文件条目。这里可以指定一些选项,例如自定义 URI 服务器(例如,用于本地测试)或 QikProp 选项,但所有这些都在 --help 标志中进行了说明。

作为 Python 库的使用

根据您是想进行大量批量处理还是更精细的逐文件处理,有两个主要的库函数。在任一情况下,库都处理磁盘上的文件,而不是预先读入内存中的数据。

主要的辅助函数是 qikprop_as_a_service,它在很大程度上与 CLI 的行为相似,以相同的方式处理多个文件。

from qikpropservice import qikprop_as_a_service

qikprop_as_a_service("file1.mol, file2.mol, ligand_series*.mol2")

这将运行两个命名的文件 file1.molfile2.mol 以及所有匹配 glob ligand_series*.mol2 的文件。可以通过关键字设置每个返回的 .tar.gz 文件的输出名称。还有其他选项,例如可以传递给 QikProp 的设置等。请参阅函数文档字符串或调用 qikprop_as_a_service.__doc__ 以查看选项。

第二个对象是 API 端点调用包装器 QikpropAsAService,可用于与现有流程集成并直接进行 API 调用,而无需直接编写请求。此类仅按调用/文件的基础进行操作。《qikprop_as_a_service》函数使用此类对每个文件进行所有调用和操作。其最常见的调用方式如下(在实际应用中包装),但 URI、端点、哈希函数等都可以在类初始化时设置。

from qikpropservice import QikpropAsAService, QikPropOptions
from time import sleep

service = QikpropAsAService() 

# Example of options, there are defaults for this model and it does not need to be passed to the Service calls 
# if only defaults are wanted 
options = QikPropOptions(fast=True, similar=30)

success, ret_code, data = service.post_task("file1.mol", options=options)
task_id = data["id"]
while True:
    success, ret_code, ret_data = service.get_result(task_id=task_id, output_file="file1_result.tar.gz")
    if success: 
        break
    sleep(5)

请参阅每个类和函数的文档,以了解其选项和预期返回值。

实用工具

有一个预期的返回码数据类 StatusCodes。它是一个简单的信息容器,有关 QikProp 服务 API 端点通常返回的 HTTP 代码及其含义。

使用以下方式导入类

from qikpropservice import StatusCodes

StatusCodes.ready      # 200
StatusCodes.created    # 201
StatusCodes.staged     # 202
StatusCodes.error      # 220
StatusCodes.null       # 404
StatusCodes.unmatched  # 409

其中每个属性和代码都对应于特定的含义。

  • 就绪:200 - GET 和 POST
    • 任务就绪,可以拉取。
  • 已创建:201 - POST
    • 已提交的任务已被服务器接受,并且输入验证没有问题。
  • 已排队:202 - GET
    • 任务已排队在服务中,但尚未处理或正在处理。
  • 错误:220 - GET
    • 任务已处理,但与处理有关的问题。请参阅数据字典或拉取错误文件以获取详细信息。
  • 空:404 - GET
    • 服务器上不存在具有给定 ID 的任务。
  • 不匹配:409 - GET 和 POST
    • 对于提供的任务 ID 和文件数据,校验和/哈希不匹配。

项目详情


下载文件

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

源分布

qikpropservice-0.2.4.tar.gz (30.1 kB 查看哈希值)

上传

构建分布

qikpropservice-0.2.4-py3-none-any.whl (12.4 kB 查看哈希值)

上传 Python 3

由以下提供支持