RXNFP 项目教程
1. 项目介绍
RXNFP 是一个用于生成化学反应指纹的 Python 库。该库通过反应 SMILES(简化分子线性输入系统)生成化学反应的指纹,这些指纹可以用于化学反应的分类和空间映射。RXNFP 是基于注意力机制的神经网络开发的,其核心功能是生成反应指纹,这些指纹可以用于构建化学反应的图谱(atlas)。
RXNFP 的主要功能包括:
- 从反应 SMILES 生成化学反应指纹。
- 使用生成的指纹映射化学反应的空间。
- 支持批量处理多个反应。
2. 项目快速启动
安装
为了安装 RXNFP,我们推荐使用 conda
来管理环境和依赖项。以下是安装步骤:
# 创建并激活 conda 环境
conda create -n rxnfp python=3.6 -y
conda activate rxnfp
# 安装 rdkit 和 tmap 依赖
conda install -c rdkit rdkit=2020.03.3 -y
conda install -c tmap tmap -y
# 安装 RXNFP
pip install rxnfp
使用示例
以下是一个简单的示例,展示如何使用 RXNFP 生成单个反应的指纹:
from rxnfp.transformer_fingerprints import (
RXNBERTFingerprintGenerator,
get_default_model_and_tokenizer,
generate_fingerprints
)
# 获取默认的模型和分词器
model, tokenizer = get_default_model_and_tokenizer()
# 创建指纹生成器
rxnfp_generator = RXNBERTFingerprintGenerator(model, tokenizer)
# 示例反应 SMILES
example_rxn = "Nc1cccc2cnccc12.O=C(O)c1cc([N+](=O)[O-])c(Sc2c(Cl)cncc2Cl)s1>>O=C(Nc1cccc2cnccc12)c1cc([N+](=O)[O-])c(Sc2c(Cl)cncc2Cl)s1"
# 生成指纹
fp = rxnfp_generator.convert(example_rxn)
# 输出指纹长度和前五个元素
print(len(fp))
print(fp[:5])
3. 应用案例和最佳实践
应用案例
RXNFP 的一个典型应用是生成化学反应的图谱(atlas)。通过生成的指纹,可以映射化学反应的空间,从而帮助研究人员理解和分类不同的化学反应。以下是一个生成反应图谱的示例:
# 生成多个反应的指纹
rxns = [example_rxn, example_rxn]
fps = rxnfp_generator.convert_batch(rxns)
# 输出指纹数量和每个指纹的长度
print(len(fps), len(fps[0]))
最佳实践
- 批量处理:对于大量反应数据,建议使用批量处理功能以提高效率。
- 模型优化:根据具体需求,可以对模型进行微调以提高指纹生成的准确性。
- 数据可视化:使用生成的指纹进行数据可视化,帮助理解化学反应的空间分布。
4. 典型生态项目
RXNFP 作为一个开源项目,与其他化学信息学工具和平台有良好的兼容性。以下是一些典型的生态项目:
- RDKit:一个用于化学信息学的开源工具包,RXNFP 依赖于 RDKit 进行化学反应的处理。
- TMAP:用于生成和可视化化学反应图谱的工具,RXNFP 生成的指纹可以与 TMAP 结合使用。
- RXN for Chemistry:一个基于 AI 的化学反应平台,RXNFP 的分类模型在该平台上得到应用。
通过这些生态项目的结合,RXNFP 可以更好地服务于化学反应的研究和应用。