一个用于可重复下载和提取DrugBank数据的工具
项目描述
DrugBank Downloader
无需担心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代码中担心获取和传递它。
- 在环境中设置
DRUGBANK_USERNAME
和DRUGBANK_PASSWORD
- 创建
~/.config/drugbank.ini
并在[drugbank]
部分设置username
和password
键。
from drugbank_downloader import download_drugbank
# Same path as before
path = download_drugbank(version='5.1.7')
此包中所有函数均支持username
和password
关键字参数,但在教程中为了简洁,将省略这些参数。
下载最新版本
首先,您需要使用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
关键字参数在此包的所有函数中均可用,但为了简洁,将与username
和password
一样省略。
无需解包 - 直接读取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
此包是用@audreyfeldroy的cookiecutter包和@cthoyt的cookiecutter-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
额外部分。可以在其中添加texext
等sphinx
插件。此外,还需要将它们添加到docs/source/conf.py
中的extensions
列表。
可以使用ReadTheDocs将文档部署出去,使用此指南。包含所有所需配置的.readthedocs.yml
YAML文件。您还可以在GitHub上设置持续集成,以检查Sphinx是否能在隔离环境中构建文档(即使用tox -e docs-test
),以及ReadTheDocs也能构建它。
配置ReadTheDocs
- 使用GitHub账号登录ReadTheDocs以在https://readthedocs.org/accounts/login/?next=/dashboard/安装集成。
- 通过点击您仓库旁边的加号图标,导航到https://readthedocs.org/dashboard/import导入您的项目。
- 在下一屏中,您可以使用更具风格的名称(例如,带有空格和大写字母)重命名仓库。
- 点击下一步,您就可以开始了!
📦 制作发布版
配置Zenodo
Zenodo是一个长期存档系统,为您的每个包发布版分配一个DOI。
- 使用此链接通过GitHub登录Zenodo:https://zenodo.org/oauth/login/github/?next=%2F。这会带您到一个页面,列出您所有的组织,并要求您批准在GitHub上安装Zenodo应用。点击您想启用集成的任何组织的“授权”旁边的按钮,然后点击大绿色的“批准”按钮。此步骤只需进行一次。
- 导航到https://zenodo.org/account/settings/github/,该页面列出您所有的GitHub仓库(包括您的用户名和您启用的任何组织)。点击任何相关仓库的开关。
完成这些步骤后,您就可以开始了!在GitHub上创建“发布”(以下为步骤)后,您可以导航到https://zenodo.org/account/settings/github/repository/cthoyt/drugbank-downloader,查看发布的DOI以及链接到Zenodo记录。
在Python包索引(PyPI)上注册
您只需执行以下步骤一次。
- 在Python包索引(PyPI)上注册账户。
- 导航到https://pypi.ac.cn/manage/account,并确保您已验证了您的电子邮件地址。默认情况下,可能未发送验证邮件,因此您可能需要点击地址旁边的“选项”下拉菜单,以获取到“重新发送验证邮件”按钮。
- 自2023年底以来,PyPI需要两步验证(请参阅PyPI的此博客文章)。这意味着您必须首先发出账户恢复代码,然后设置两步验证。
- 从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
此脚本执行以下操作
- 使用 Bump2Version 将
pyproject.toml
、CITATION.cff
、src/drugbank_downloader/version.py
和docs/source/conf.py
中的版本号切换,移除-dev
后缀 - 使用
build
将代码打包成 tar 归档和 wheel - 使用
twine
上传到 PyPI。 - 推送到 GitHub。您需要创建一个与版本提升的提交对应的发布。
- 将版本提升到下一个补丁。如果您进行了重大更改并希望通过次要版本提升版本,可以在之后使用
tox -e bumpversion -- minor
在 GitHub 上发布
- 导航到 https://github.com/cthoyt/drugbank-downloader/releases/new 拟稿新发布
- 点击“选择一个标签”下拉菜单,并选择与您刚刚创建的发布对应的标签
- 点击“生成发布说明”按钮以获取最近更改的快速概述。根据需要修改标题和描述
- 点击大的绿色“发布发布”按钮
这将触发 Zenodo 为您的发布分配一个 DOI。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。