# 16元环大环内酯分子分析说明

## 文件说明

- **notebook文件**: `analyze_ring16_molecules.ipynb`
- **输入数据**: `../output/ring16_match_smarts.csv` (307个分子)
- **输出目录**: `../output/`

## 使用方法

### 1. 激活环境

```bash
cd /home/zly/project/macro_split
pixi shell
```

### 2. 运行notebook

```bash
jupyter notebook notebooks/analyze_ring16_molecules.ipynb
```

或使用 JupyterLab：

```bash
jupyter lab notebooks/analyze_ring16_molecules.ipynb
```

### 3. 按顺序运行所有单元格

notebook会自动：
1. 计算所有分子的药物性质（分子量、LogP、QED、TPSA等）
2. 进行侧链断裂分析
3. 统计每个位置（3-16）的碎片分布
4. 生成分布图并保存到 `output/` 目录

## 生成的输出文件

### 图片文件
- `ring16_molecular_properties_distribution.png` - 分子性质分布图（4个子图）
  - 分子量分布
  - LogP分布
  - QED分布
  - TPSA分布

- `atom_count_distribution_ring16.png` - 每个位置的原子数分布（14个子图，位置3-16）

- `molecular_weight_distribution_ring16.png` - 每个位置的分子量分布（14个子图，位置3-16）

### 数据文件
- `ring16_fragments_analysis.csv` - 所有碎片的详细信息
  - 列：fragment_id, parent_id, parent_smiles, cleavage_position, fragment_smiles, atom_count, molecular_weight

- `ring16_molecular_properties.csv` - 所有分子的性质数据
  - 列：unique_id, mol_weight, logP, num_h_donors, num_h_acceptors, num_rotatable_bonds, tpsa, qed, num_atoms, num_heavy_atoms

## 分析内容

### 已完成

1. **分子基本性质计算** ✅
   - 分子量、LogP、QED、TPSA
   - 氢键供受体数、可旋转键数
   - 原子数、重原子数

2. **侧链断裂分析** ✅
   - 使用封装好的 `MacrolactoneFragmenter` 类
   - 批量处理所有307个分子
   - 统计每个位置的碎片类型和数量

3. **分布图绘制** ✅
   - 参考 `test_align_two_molecules.ipynb` 的绘图逻辑
   - 4x4子图布局，展示位置3-16的分布
   - 使用 seaborn 和 matplotlib 绘图

### 延伸分析建议

notebook的最后一个单元格（Section 9）提供了详细的延伸分析建议，包括：

#### 优先级1（强烈推荐）⭐⭐⭐
- **LogP分析**：找出对亲脂性贡献最大的侧链位置
- **QED分析**：比较高/低QED分子的侧链差异
- **TPSA分析**：分析极性侧链的分布模式

#### 优先级2（重要）⭐⭐⭐
- **SAR分析**：如果有活性数据（max_pChEMBL），分析结构-活性关系
- **特权侧链**：找出高频出现在活性分子中的侧链

#### 优先级3（有价值）⭐⭐
- **碎片多样性分析**：统计每个位置的独特碎片类型
- **聚类分析**：基于碎片指纹进行分子聚类
- **极性/疏水性分析**：分析侧链的极性特征

#### 可选分析 ⭐
- **3D性质**：PMI、NPR等3D描述符
- **Lipinski规则**：检查类药性规则
- **立体化学**：手性中心分析

## 代码示例

notebook中包含了完整的代码示例，可以直接运行或修改。主要功能：

```python
# 1. 计算分子性质
props = calculate_properties(smiles)

# 2. 批量断裂
fragmenter = MacrolactoneFragmenter(ring_size=16)
batch_results = fragmenter.process_csv(csv_file)

# 3. 统计分析
df_fragments = fragmenter.batch_to_dataframe(batch_results)
position_stats = df_fragments.groupby('cleavage_position').agg(...)

# 4. 绘图
sns.histplot(values, kde=True, ax=ax, bins=30)
```

## 关键洞察

### LogP的价值
- 反映分子的亲脂性，对膜通透性和药物分布至关重要
- 大环内酯通常LogP较高
- 了解侧链对LogP的贡献有助于优化药物设计

### QED的意义
- QED综合评估"类药性"
- 大环内酯往往违反Lipinski规则（分子量>500），但仍可能是好药
- 比较高/低QED分子可以找出影响类药性的关键侧链

### TPSA的重要性
- TPSA与口服生物利用度密切相关（一般<140Ų为佳）
- 极性侧链对TPSA贡献显著
- 可以指导侧链修饰策略

## 注意事项

1. **环境要求**：
   - 需要安装 `seaborn` 和 `matplotlib`
   - 如果没有安装，notebook会提示：`pixi add seaborn matplotlib`

2. **处理时间**：
   - 处理307个分子可能需要几分钟
   - 绘制分布图也需要一些时间

3. **内存使用**：
   - 批量处理和绘图会占用一定内存
   - 如果遇到内存问题，可以减少 `max_rows` 参数

4. **图片分辨率**：
   - 默认使用 300 DPI 保存图片
   - 可以根据需要调整 `dpi` 参数

## 后续工作

根据分析结果，建议进行：

1. **LogP与侧链的定量关系**
   - 计算去除各个侧链后的LogP变化
   - 找出对LogP贡献最大的位置

2. **活性数据关联**（如果有）
   - 分析高活性分子的侧链特征
   - 找出"特权侧链"

3. **碎片库构建**
   - 整理每个位置的常见碎片
   - 用于指导新分子设计

4. **机器学习预测**
   - 使用碎片特征预测分子性质
   - 建立QSAR模型

## 参考

- `filter_molecules.ipynb` - 分子过滤和断裂逻辑
- `test_align_two_molecules.ipynb` - 绘图逻辑参考
- `src/macrolactone_fragmenter.py` - 封装的断裂器类
- `src/ring_visualization.py` - 可视化工具

## 问题反馈

如果遇到问题：
1. 检查是否在 `pixi shell` 环境中
2. 确认所有依赖包已安装
3. 查看输出目录是否有写入权限
4. 检查CSV文件路径是否正确


