Files
SIME/README.md

11 KiB
Executable File
Raw Blame History

SIME - Structure-Informed Macrolide Expansion

SIME 是一个用于大环内酯类化合物结构扩展和抗菌活性预测的工具。

目录


原有功能

SIME 提供大环内酯类化合物的结构设计和合成路径分析功能。


MolE 抗菌活性预测

本工具集成了 MolEMolecular Embeddings模型可以预测小分子的广谱抗菌活性。

快速开始

使用 uv推荐

# 1. 创建虚拟环境Python 3.12
uv venv --python 3.12 --seed .venv

# 2. 激活环境
source .venv/bin/activate  # Linux/Mac
# 或
.venv\Scripts\activate  # Windows

# 3. 使用 uv 安装依赖
uv pip install -r requirements-mole.txt

# 4. 验证安装
python verify_setup.py

# 5. 运行预测
python utils/mole_predictor.py Data/fragment/Frags-Enamine-18M.csv

使用 pyproject.toml 配置uv 推荐)

项目提供了两个环境配置:

  1. SIME 原始环境 - 用于大环内酯结构设计
# 使用 uv 创建默认环境
uv sync
  1. MolE 预测环境 - 用于抗菌活性预测
# 使用 uv 创建 MolE 环境
uv sync --extra mole

使用 pixi 配置conda 用户推荐)

如果你使用 conda 或需要更好的包管理,可以使用 pixi

# 安装 pixi如果还没有
curl -fsSL https://pixi.sh/install.sh | bash

# 创建 SIME 原始环境
pixi install

# 创建 MolE 预测环境
pixi install -e mole

# 激活 MolE 环境
pixi shell -e mole

# 在 pixi 环境中运行预测
pixi run -e mole predict Data/fragment/test_100.csv

安装依赖

方法 1: 使用 uv推荐

# 创建虚拟环境
uv venv --python 3.12 .venv
source .venv/bin/activate

# 安装依赖
uv pip install -r requirements-mole.txt

方法 2: 使用 pixi

# 创建虚拟环境
pixi init

# 基础环境
pixi add python=3.12

# nvidia cuda工具链
pixi workspace channel add nvidia
pixi add nvidia::cuda-toolkit=12.8

# 科学计算 安装 pandas 会自动安装上 numpy
pixi add 

# torch-geometric
pixi add conda-forge::pandas conda-forge::torch-geometric conda-forge::xgboost conda-forge::pyyaml conda-forge::rdkit conda-forge::pip conda-forge::click conda-forge::openpyxl

# PyTorch相关指定通道
# 1. 添加 pytorch 频道  conda 太旧改为使用 pypi
# pixi workspace channel add pytorch
# pixi add pytorch::pytorch=2.6 pytorch::pytorch-cuda=12.4
pixi add --pypi torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0

# 然后在 pixi.toml 中手动编辑为:
[pypi-dependencies]  
torch = { version = "==2.8.0", index = "https://download.pytorch.org/whl/cu128" }  
torchvision = { version = "==0.23.0", index = "https://download.pytorch.org/whl/cu128" }  
torchaudio = { version = "==2.8.0", index = "https://download.pytorch.org/whl/cu128" }

# 安装依赖
pixi install

# 激活
pixi shell

RDKit 安装建议

RDKit 推荐使用 conda 安装:

conda install -c conda-forge rdkit

使用方法

1. 命令行使用

基本用法:

# 预测 CSV 文件
python utils/mole_predictor.py input.csv

# 指定输出路径
python utils/mole_predictor.py input.csv output.csv

# 自定义列名
python utils/mole_predictor.py input.csv output.csv \
  --smiles-column SMILES \
  --id-column compound_id

# 使用 GPU 加速
python utils/mole_predictor.py input.csv --device cuda:0

# 调整批次大小和工作进程
python utils/mole_predictor.py input.csv \
  --batch-size 200 \
  --n-workers 8

查看所有选项:

python utils/mole_predictor.py --help

预测项目数据:

# 预测 Frags-Enamine-18M.csv
python utils/mole_predictor.py Data/fragment/Frags-Enamine-18M.csv

# 预测 GDB11-27M.csv
python utils/mole_predictor.py Data/fragment/GDB11-27M.csv

2. Python API 使用

预测单个文件:

from utils.mole_predictor import predict_csv_file

# 基本使用
df_result = predict_csv_file(
    input_path="Data/fragment/Frags-Enamine-18M.csv",
    output_path="results/predictions.csv",
    smiles_column="smiles",
    batch_size=100,
    device="auto"
)

# 查看结果
print(f"总分子数: {len(df_result)}")
print(f"广谱分子数: {df_result['broad_spectrum'].sum()}")

批量预测多个文件:

from utils.mole_predictor import predict_multiple_files

input_files = [
    "Data/fragment/Frags-Enamine-18M.csv",
    "Data/fragment/GDB11-27M.csv"
]

results = predict_multiple_files(
    input_paths=input_files,
    output_dir="results/",
    smiles_column="smiles",
    batch_size=100,
    device="auto"
)

直接使用预测器:

from models import (
    ParallelBroadSpectrumPredictor,
    PredictionConfig,
    MoleculeInput
)

# 创建配置
config = PredictionConfig(
    batch_size=100,
    device="auto"  # 或 "cpu", "cuda:0"
)

# 创建预测器
predictor = ParallelBroadSpectrumPredictor(config)

# 预测单个分子
molecule = MoleculeInput(smiles="CCO", chem_id="ethanol")
result = predictor.predict_single(molecule)

print(f"化合物ID: {result.chem_id}")
print(f"广谱抗菌: {result.broad_spectrum}")
print(f"抗菌得分: {result.apscore_total:.3f}")
print(f"抑制菌株数: {result.ginhib_total}")

# 批量预测
smiles_list = ["CCO", "c1ccccc1", "CC(=O)O"]
chem_ids = ["ethanol", "benzene", "acetic_acid"]

results = predictor.predict_from_smiles(smiles_list, chem_ids)

for r in results:
    print(f"{r.chem_id}: broad_spectrum={r.broad_spectrum}, "
          f"apscore={r.apscore_total:.3f}")

输出说明

预测结果会添加以下 7 个新列:

列名 类型 说明
apscore_total float 总体抗菌潜力分数(对数尺度,值越大抗菌活性越强)
apscore_gnegative float 革兰阴性菌抗菌潜力分数
apscore_gpositive float 革兰阳性菌抗菌潜力分数
ginhib_total int 被抑制的菌株总数
ginhib_gnegative int 被抑制的革兰阴性菌株数
ginhib_gpositive int 被抑制的革兰阳性菌株数
broad_spectrum int 是否为广谱抗菌1=是0=否)

广谱抗菌判断标准

默认情况下,如果一个分子能抑制 10 个或更多菌株 (ginhib_total >= 10),则被认为是广谱抗菌分子。

输出文件位置

默认情况下,输出文件会添加 _predicted 后缀:

  • 输入: Data/fragment/Frags-Enamine-18M.csv
  • 输出: Data/fragment/Frags-Enamine-18M_predicted.csv

项目结构

SIME/
├── models/                          # MolE 预测模型
│   ├── __init__.py
│   ├── broad_spectrum_predictor.py  # 核心预测器
│   ├── dataset_representation.py    # 数据集表示
│   ├── ginet_concat.py             # GIN 神经网络
│   └── mole_representation.py      # MolE 表示生成
│
├── utils/
│   ├── mole_predictor.py           # 预测工具脚本
│   └── ... (其他工具)
│
├── Data/
│   └── fragment/                    # 待预测数据
│       ├── Frags-Enamine-18M.csv
│       └── GDB11-27M.csv
│
├── pyproject.toml                   # uv 项目配置
├── requirements.txt                 # SIME 原始依赖
├── requirements-mole.txt           # MolE 预测依赖
│
├── verify_setup.py                 # 设置验证工具
├── check_mole_dependencies.py      # 依赖检查工具
└── test_mole_predictor.py          # 功能测试

依赖说明

SIME 原始依赖 (requirements.txt)

用于大环内酯结构设计功能。

MolE 预测依赖 (requirements-mole.txt)

用于抗菌活性预测,主要包括:

  • 深度学习: torch, torch-geometric
  • 科学计算: numpy, pandas, scipy
  • 机器学习: scikit-learn, xgboost
  • 化学信息: rdkit
  • 其他: openpyxl, pyyaml, click

验证和测试

验证安装

# 检查 Python 依赖
python verify_setup.py

# 检查模型文件
python check_mole_dependencies.py

运行测试

# 功能测试(使用小规模测试数据)
python test_mole_predictor.py

常见问题

Q1: 如何处理大文件?

方案 1 增加批次大小和工作进程数

python utils/mole_predictor.py large_file.csv \
  --batch-size 500 \
  --n-workers 8

方案 2 先提取部分数据测试

# 提取前 1000 行
head -1001 large_file.csv > test_1000.csv
python utils/mole_predictor.py test_1000.csv

Q2: 如何只使用 CPU

python utils/mole_predictor.py input.csv --device cpu

Q3: 列名大小写问题?

工具会自动进行大小写不敏感的列名匹配,所以 SMILESsmilesSmiles 都可以识别。

Q4: ModuleNotFoundError 错误?

确保已安装依赖:

uv pip install -r requirements-mole.txt

对于 RDKit推荐使用 conda

conda install -c conda-forge rdkit

Q5: 如何自定义模型路径?

from models import PredictionConfig, ParallelBroadSpectrumPredictor

config = PredictionConfig(
    xgboost_model_path="/path/to/model.pkl",
    mole_model_path="/path/to/mole_model",
    strain_categories_path="/path/to/strain_data.tsv.gz",
    gram_info_path="/path/to/gram_info.xlsx",
    app_threshold=0.044,
    min_nkill=10,
    batch_size=100,
    device="auto"
)

predictor = ParallelBroadSpectrumPredictor(config)

Q6: GPU 内存不足?

减小批次大小:

python utils/mole_predictor.py input.csv --batch-size 50

Q7: 模型文件在哪里?

模型文件位于相邻的 mole_broad_spectrum_parallel 项目中:

../mole_broad_spectrum_parallel/
├── pretrained_model/model_ginconcat_btwin_100k_d8000_l0.0001/
│   ├── config.yaml
│   └── model.pth
├── data/03.model_evaluation/MolE-XGBoost-08.03.2024_14.20.pkl
└── ...

运行 python check_mole_dependencies.py 检查文件是否存在。


性能建议

  • 使用 GPU: 设置 --device cuda:0 可大幅加速(需要 CUDA
  • 调整批次: 较大的批次100-500通常更快
  • 多进程: 使用 --n-workers 指定工作进程数
  • 首次加载: 首次运行需要加载模型(~30秒后续会更快

性能参考

分子数量 CPU (8核) GPU (CUDA)
100 ~30秒 ~10秒
1,000 ~5分钟 ~1分钟
10,000 ~50分钟 ~8分钟

系统要求

  • Python: 3.7 或更高版本(推荐 3.12
  • 内存: 最低 8 GB RAM
  • 存储: 至少 2 GB 可用空间
  • GPU: 可选,但强烈推荐(需要 CUDA 支持)

技术支持

如有问题:

  1. 查看验证结果: python verify_setup.py
  2. 检查模型文件: python check_mole_dependencies.py
  3. 运行功能测试: python test_mole_predictor.py

许可

详见 LICENSE 文件。

引用

如果使用本工具,请引用相关论文。


更新日期: 2025-10-16
版本: 1.0.0