写一段代码生成分子片段保存为xlsx
时间: 2024-02-24 16:56:06 浏览: 83
好的,以下是生成分子片段并保存为 xlsx 文件的 Python 代码:
```python
import openpyxl
from openpyxl.utils import get_column_letter
from openpyxl.styles import Alignment
from rdkit import Chem
from rdkit.Chem import Draw
# 生成分子片段的 SMILES 序列
smiles_list = ['CC(C)(C)OC(=O)C1=CC=C(C=C1)N', 'CC(=O)NCC(C#N)N', 'C[C@@H](C(=O)O)N', 'CC1=C(C2=C(C=C1)NC(=O)N2)C', 'CC(C)C[C@@H](NC(=O)[C@H](CC1=CC=CC=C1)NC(=O)OC(C)(C)C)C(=O)N[C@@H](CC1=CC=CC=C1)C(=O)N[C@@H](C(C)C)C(=O)N[C@@H](C(C)C)C(=O)O']
# 创建工作簿
workbook = openpyxl.Workbook()
# 创建工作表
worksheet = workbook.active
worksheet.title = 'Molecule Fragments'
# 设置表头
header = ['SMILES', 'Molecule Image']
for col_num, column_title in enumerate(header, 1):
column_letter = get_column_letter(col_num)
cell = worksheet['{}1'.format(column_letter)]
cell.value = column_title
cell.alignment = Alignment(horizontal='center')
# 处理每个 SMILES 序列
for row_num, smiles in enumerate(smiles_list, 2):
# 创建分子对象
molecule = Chem.MolFromSmiles(smiles)
# 获取分子图片
image = Draw.MolToImage(molecule, size=(200, 200))
# 将图片保存到本地
image_path = 'molecule_{}.png'.format(row_num-1)
image.save(image_path)
# 在工作表中添加 SMILES 和分子图片
worksheet.cell(row=row_num, column=1).value = smiles
worksheet.cell(row=row_num, column=2).value = openpyxl.drawing.image.Image(image_path)
# 调整列宽和行高
worksheet.column_dimensions[get_column_letter(1)].width = 30
worksheet.column_dimensions[get_column_letter(2)].width = 50
worksheet.row_dimensions[row_num].height = 100
# 保存工作簿
workbook.save('molecule_fragments.xlsx')
```
以上代码通过使用 RDKit 库生成分子片段的 SMILES 序列,并使用 OpenPyXL 库将 SMILES 序列和分子图片保存到 xlsx 文件中。注意,每个分子图片都会保存在本地,然后再添加到工作表中,最后保存工作簿。
阅读全文