Python 我需要从smiles字符串(或.xyz文件)中找到分子中所有可能的键、原子之间的角度的列表
我正在尝试建立力场,为了做到这一点,我需要一个列表,列出分子中所有可能的键、角度和二面体,从smiles string oe.xyz文件Python 我需要从smiles字符串(或.xyz文件)中找到分子中所有可能的键、原子之间的角度的列表,python,rdkit,Python,Rdkit,我正在尝试建立力场,为了做到这一点,我需要一个列表,列出分子中所有可能的键、角度和二面体,从smiles string oe.xyz文件 有没有可能用RDkit来做呢?如果是这样的话,怎么做?要从分子中获取角度,它必须至少具有2D坐标,rdkit无法从XYZ文件构造分子,但可以读取字符串 from rdkit import Chem from rdkit.Chem import AllChem from rdkit.Chem import rdMolTransforms # Read mole
有没有可能用RDkit来做呢?如果是这样的话,怎么做?要从分子中获取角度,它必须至少具有2D坐标,rdkit无法从XYZ文件构造分子,但可以读取字符串
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import rdMolTransforms
# Read molecule from smiles string
mol = Chem.MolFromSmiles('N1CCNCC1')
# Get all bonds in the molecule
bonds = [(x.GetBeginAtomIdx(), x.GetEndAtomIdx()) for x in mol.GetBonds()]
# [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 0)]
# Compute 2D coordinates
AllChem.Compute2DCoords(mol)
conf = mol.GetConformer()
# Get a torsion angle between atoms 0, 1 & 2
rdMolTransforms.GetAngleDeg(conf, 0, 1, 2)
# 119.99999999999999
# Get a dihedral angle between atoms 0, 1, 2 & 3
rdMolTransforms.GetDihedralDeg(c, 0, 1, 2, 3)
# -0.0 (obviously 0 as the molecule has no 3D coordinates)
如果需要,您可以为分子读取数据,也可以使用SDF文件或类似文件读取具有3D坐标的分子。软件可以将XYZ转换为SDF请添加您已经尝试解决的问题!我还没有找到任何可以尝试的东西。我浏览了RDKit的文档,没有太多关于我是否可以使用它来执行任务的信息。谢谢。。我试图定义原子类型,从而命名键。因此,根据RDKit文档AllChem.EmbeddeMultipleConfs(mol,numConfs=10)res=AllChem.mmfOptimizeMoleculeConfs(mol),这将自动定义原子、键等。我试图将其转储到可以获得列表的某个位置。