化学结构 SMILES 和 SDF 格式
from rdkit import Chem
from rdkit.Chem import AllChem
# 定义氨基酸的SMILES字符串
amino_acids = {
"焦谷氨酸": "C(C(=O)O)N1C(=O)C(N1)C(=O)O",
"氨基 (吡咯) 乙酸": "C(C(=O)O)C(N)C1=CC=CC=N1",
"1,4-二氨基丁酸": "C(C(C(=O)O)N)NCC",
"4-脯氨酸丙氨酸": "C(C(=O)O)C(=C)C(C(=O)O)N",
"2,5-二甲基氨基酸": "C(C(=O)O)C(C)C(C)C(=O)N",
"艾丁基甘氨酸": "C(C(=O)O)C(N)C1=CN=C(C1)C(=O)O",
"新色氨酸": "C(C(=O)NCC1=CC2=C(C=C1)C=CN2)C(=O)O",
"环已基甘氨酸": "C1(CCCCC1)C(=O)N"
}
# 生成分子并转换为SDF格式
for name, smiles in amino_acids.items():
mol = Chem.MolFromSmiles(smiles)
if mol:
# 添加氢原子
mol = Chem.AddHs(mol)
# 优化分子
AllChem.EmbedMolecule(mol)
AllChem.UFFOptimizeMolecule(mol)
# 导出为SDF格式
sdf = Chem.MolToMolBlock(mol)
with open(f"{name}.sdf", "w") as file:
file.write(sdf)
# 输出SMILES格式
print(f"{name} SMILES: {smiles}")
print("分子生成成功并已保存为SDF格式。")
焦谷氨酸 SMILES: C(C(=O)O)N1C(=O)C(N1)C(=O)O
氨基 (吡咯) 乙酸 SMILES: C(C(=O)O)C(N)C1=CC=CC=N1
1,4-二氨基丁酸 SMILES: C(C(C(=O)O)N)NCC
4-脯氨酸丙氨酸 SMILES: C(C(=O)O)C(=C)C(C(=O)O)N
2,5-二甲基氨基酸 SMILES: C(C(=O)O)C(C)C(C)C(=O)N
艾丁基甘氨酸 SMILES: C(C(=O)O)C(N)C1=CN=C(C1)C(=O)O
新色氨酸 SMILES: C(C(=O)NCC1=CC2=C(C=C1)C=CN2)C(=O)O
环已基甘氨酸 SMILES: C1(CCCCC1)C(=O)N
分子生成成功并已保存为SDF格式。
以下是提取的化学分子信息及其对应 SMILES 结构的表格:
名称 | 缩写 | SMILES 结构 |
---|---|---|
焦谷氨酸 | pyroGlu | O=C1CCC(N1)C(=O)O |
氨基(哌嗪基)乙酸 | Gly(PipAm) | NCC(=O)N1CCNCC1 |
1,4-二氨基丁酸 | Dab | NCCCC(N)C(=O)O |
4-胍基苯丙氨酸 | Phe(4-Gu) | NC(CC1=CC=C(C=C1)C(NC(=NH)NH2)C(=O)O |
2,5-二甲基酪氨酸 | Dmt | CC1CC(C(C1)O)C(=O)N |
异丁基甘氨酸 | Tle | CC(C)C(N)C(=O)O |
新色氨酸 | neo-Trp | CC(C(=O)O)N1CCC(CC1)C(=O)O |
这个表格包含了名称、缩写和对应的 SMILES 结构。你可以使用这些 SMILES 结构来生成分子模型或进一步分析分子性质。
from rdkit import Chem
from rdkit.Chem import Draw
# SMILES
# 定义: SMILES是一种简化的化学结构输入系统,用于以一行文本表示分子的结构。
# 结构: SMILES字符串通过字符表示原子、键和分子的连接关系,支持环、支链等复杂结构。
# 思路:
# 用多模态大模型(即提取图片文字)提取 pdf 中氨基酸的名称,然后再通过大模型或者其他方式将名称转为
# SMILES 格式,然后再通过 rdkit 库画图
# 焦谷氨酸
pyroGlu_smiles = 'O=C1CCC(N1)C(=O)O' # 替换为你的SMILES字符串
mol = Chem.MolFromSmiles(pyroGlu_smiles)
img = Draw.MolToImage(mol)
img.show()
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)