跳转到主要内容

一个用于可重复下载和提取DrugBank数据的工具

项目描述

DrugBank Downloader

Tests PyPI PyPI - Python Version PyPI - License Documentation Status Codecov status Cookiecutter template from @cthoyt Code style: black Contributor Covenant

无需担心DrugBank的许可和分发规则 - 只需使用drugbank_downloader编写代码,自动下载和使用它。

安装

$ pip install drugbank-downloader

下载特定版本

import os
from drugbank_downloader import download_drugbank

username = ...  # suggestion: load from environment with os.getenv('DRUGBANK_USERNAME')
password = ...

path = download_drugbank(version='5.1.7', username=username, password=password)

# This is where it gets downloaded: ~/.data/drugbank/5.1.7/full database.xml.zip
expected_path = os.path.join(os.path.expanduser('~'), '.data', 'drugbank', '5.1.7', 'full database.xml.zip')
assert expected_path == path.as_posix()

一旦下载一次,它就会变得智能,不需要再次下载。它将自动存储在~/.data/drugbank目录中,使用pystow

自动配置DrugBank凭证

有两种方法可以自动设置用户名和密码,这样你就不必在Python代码中担心获取和传递它。

  1. 在环境中设置DRUGBANK_USERNAMEDRUGBANK_PASSWORD
  2. 创建~/.config/drugbank.ini并在[drugbank]部分设置usernamepassword键。
from drugbank_downloader import download_drugbank

# Same path as before
path = download_drugbank(version='5.1.7')

此包中所有函数均支持usernamepassword关键字参数,但在教程中为了简洁,将省略这些参数。

下载最新版本

首先,您需要使用pip install bioversions安装bioversions(链接:https://github.com/cthoyt/bioversions),该工具用于查询多个数据库的最新版本。然后,您可以修改之前的代码,省略version关键字参数。

import os
from drugbank_downloader import download_drugbank

path = download_drugbank()

# This is where it gets downloaded: ~/.data/drugbank/5.1.7/full database.xml.zip based on the latest
# version, as of December 14th, 2020.
expected_path = os.path.join(os.path.expanduser('~'), '.data', 'drugbank', '5.1.7', 'full database.xml.zip')
assert expected_path == path.as_posix()

version关键字参数在此包的所有函数中均可用,但为了简洁,将与usernamepassword一样省略。

无需解包 - 直接读取full database.xml.zip

DrugBank是一个位于zip存档内的单个XML(未来可能为JSON)文件。通常,人们会手动解压这个文件夹,然后对生成的文件进行操作。请不要这样做,因为它不可重复!相反,可以使用以下代码在Python中将它作为文件对象打开。

import zipfile
from drugbank_downloader import download_drugbank

path = download_drugbank()

with zipfile.ZipFile(path) as zip_file:
    with zip_file.open('full database.xml') as file:
        pass  # do something with the file

您没有时间记住这些。只需使用drugbank_downloader.open_drugbank()即可。

from drugbank_downloader import open_drugbank

with open_drugbank() as file:
    pass  # do something with the file, same as above

读取DrugBank的XML

打开文件后,您可能想使用XML解析器(如)读取它。

from xml.etree import ElementTree
from drugbank_downloader import open_drugbank

with open_drugbank() as file:
    tree = ElementTree.parse(file)

您也没有时间记住这些。只需使用drugbank_downloader.parse_drugbank()即可。

from xml.etree import ElementTree
from drugbank_downloader import parse_drugbank

tree = parse_drugbank()
root = tree.getroot()

如果您对树的第一件事就是获取其根,只需使用drugbank_downloader.get_drugbank_root()即可。

from drugbank_downloader import get_drugbank_root

root = get_drugbank_root()

您现在已经知道了我可以教给您的一切。请使用这些工具进行可重用、可重复的科学!

存储在另一个位置

如果您想使用pystow(例如,在pyobo中我也保留了一个副本)将数据存储在其他位置,可以使用prefix参数。

import os
from drugbank_downloader import download_drugbank

path = download_drugbank(prefix=['pyobo', 'raw', 'drugbank'])

# This is where it gets downloaded: ~/.data/pyobo/raw/drugbank/5.1.7/full database.xml.zip
expected_path = os.path.join(os.path.expanduser('~'), '.data', 'pyobo', 'raw', 'drugbank', '5.1.7',
                             'full database.xml.zip')
assert expected_path == path.as_posix()

有关进一步配置存储位置的更多信息,请参阅pystow文档

通过CLI下载

安装后,运行以下CLI命令以确保它并将路径发送到标准输出

$ drugbank_downloader

如果您尚未预配置用户名和密码,可以使用--username--password选项指定它们。

👐 贡献

我们欢迎任何形式的贡献,无论是提交问题、创建拉取请求还是进行分支操作。有关如何参与的信息,请参阅CONTRIBUTING.md

👋 赋权

⚖️ 许可证

此包中的代码受MIT许可证许可。

🍪 Cookiecutter

此包是用@audreyfeldroycookiecutter包和@cthoytcookiecutter-snekpack模板创建的。

🛠️ 开发者

请参阅开发者说明

README的最后一部分是为了如果您想通过代码贡献来参与。

开发安装

要开发模式安装,请使用以下

git clone git+https://github.com/cthoyt/drugbank-downloader.git
cd drugbank-downloader
pip install -e .

更新包样板

此项目使用cruft将样板(即配置、贡献指南、文档配置)保持与上游cookiecutter包同步。使用以下命令更新:

pip install cruft
cruft update

有关Cruft更新命令的更多信息,请参阅这里

🥼 测试

在克隆存储库并使用pip install tox tox-uv安装tox后,可以使用以下命令在tests/文件夹中运行单元测试,以确保其可重复性:

tox -e py

此外,这些测试会随着每次提交自动在GitHub Action中重新运行。

📖 构建文档

可以使用以下方法在本地构建文档:

git clone git+https://github.com/cthoyt/drugbank-downloader.git
cd drugbank-downloader
tox -e docs
open docs/build/html/index.html

文档会自动安装包以及pyproject.toml中指定的docs额外部分。可以在其中添加texextsphinx插件。此外,还需要将它们添加到docs/source/conf.py中的extensions列表。

可以使用ReadTheDocs将文档部署出去,使用此指南。包含所有所需配置的.readthedocs.yml YAML文件。您还可以在GitHub上设置持续集成,以检查Sphinx是否能在隔离环境中构建文档(即使用tox -e docs-test),以及ReadTheDocs也能构建它

配置ReadTheDocs

  1. 使用GitHub账号登录ReadTheDocs以在https://readthedocs.org/accounts/login/?next=/dashboard/安装集成。
  2. 通过点击您仓库旁边的加号图标,导航到https://readthedocs.org/dashboard/import导入您的项目。
  3. 在下一屏中,您可以使用更具风格的名称(例如,带有空格和大写字母)重命名仓库。
  4. 点击下一步,您就可以开始了!

📦 制作发布版

配置Zenodo

Zenodo是一个长期存档系统,为您的每个包发布版分配一个DOI。

  1. 使用此链接通过GitHub登录Zenodo:https://zenodo.org/oauth/login/github/?next=%2F。这会带您到一个页面,列出您所有的组织,并要求您批准在GitHub上安装Zenodo应用。点击您想启用集成的任何组织的“授权”旁边的按钮,然后点击大绿色的“批准”按钮。此步骤只需进行一次。
  2. 导航到https://zenodo.org/account/settings/github/,该页面列出您所有的GitHub仓库(包括您的用户名和您启用的任何组织)。点击任何相关仓库的开关。

完成这些步骤后,您就可以开始了!在GitHub上创建“发布”(以下为步骤)后,您可以导航到https://zenodo.org/account/settings/github/repository/cthoyt/drugbank-downloader,查看发布的DOI以及链接到Zenodo记录。

在Python包索引(PyPI)上注册

您只需执行以下步骤一次。

  1. Python包索引(PyPI)上注册账户。
  2. 导航到https://pypi.ac.cn/manage/account,并确保您已验证了您的电子邮件地址。默认情况下,可能未发送验证邮件,因此您可能需要点击地址旁边的“选项”下拉菜单,以获取到“重新发送验证邮件”按钮。
  3. 自2023年底以来,PyPI需要两步验证(请参阅PyPI的此博客文章)。这意味着您必须首先发出账户恢复代码,然后设置两步验证。
  4. https://pypi.ac.cn/manage/account/token发出API令牌。

配置您的机器与PyPI的连接

您必须为每台机器执行以下步骤一次。在您的家目录中创建一个名为.pypirc的文件,并包括以下内容:

[distutils]
index-servers =
    pypi
    testpypi

[pypi]
username = __token__
password = <the API token you just got>

# This block is optional in case you want to be able to make test releases to the Test PyPI server
[testpypi]
repository = https://test.pypi.org/legacy/
username = __token__
password = <an API token from test PyPI>

请注意,由于PyPI现在要求基于令牌的验证,我们使用__token__作为用户,直接使用。如果您已经有了包含[distutils]部分的.pypirc文件,只需确保存在index-servers键,并且pypi在其相关列表中。有关配置.pypirc文件的更多信息,请参阅此处

上传到PyPI

在开发模式下安装包并使用 pip install tox tox-uv 安装 tox 后,从shell运行以下命令

tox -e finish

此脚本执行以下操作

  1. 使用 Bump2Versionpyproject.tomlCITATION.cffsrc/drugbank_downloader/version.pydocs/source/conf.py 中的版本号切换,移除 -dev 后缀
  2. 使用 build 将代码打包成 tar 归档和 wheel
  3. 使用 twine 上传到 PyPI。
  4. 推送到 GitHub。您需要创建一个与版本提升的提交对应的发布。
  5. 将版本提升到下一个补丁。如果您进行了重大更改并希望通过次要版本提升版本,可以在之后使用 tox -e bumpversion -- minor

在 GitHub 上发布

  1. 导航到 https://github.com/cthoyt/drugbank-downloader/releases/new 拟稿新发布
  2. 点击“选择一个标签”下拉菜单,并选择与您刚刚创建的发布对应的标签
  3. 点击“生成发布说明”按钮以获取最近更改的快速概述。根据需要修改标题和描述
  4. 点击大的绿色“发布发布”按钮

这将触发 Zenodo 为您的发布分配一个 DOI。

项目详情


下载文件

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

源分布

drugbank_downloader-0.2.0.tar.gz (18.6 kB 查看哈希值)

上传时间

构建分布

drugbank_downloader-0.2.0-py3-none-any.whl (12.7 kB 查看哈希值)

上传时间 Python 3

由以下支持

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