from rdkit import Chem
mol = Chem.MolFromSmiles(r"""
CCC(CC)COC(=O)[C@H](C)N[P@](=O)(OC[C@H]1O[C@](C#N)([C@H](O)[C@@H]1O)C1=CC=C2N1N=CN=C2N)OC1=CC=CC=C1""")
functional_group = Chem.MolFromSmarts('[CX3](=[OX1])[OX2][CX3](=[OX1])')
matches = mol.GetSubstructMatches(functional_group)
此代码有效,必须通过 将 SMILES 字符串标记为无代码r""" """
。
但是我如何使它与变量而不是r""" """
smile = '[CX3](=[OX1])[OX2][CX3](=[OX1])'
matches = mol.GetSubstructMatches(smile)
这段代码会返回这个错误
---------------------------------------------------------------------------
ArgumentError Traceback (most recent call last)
<ipython-input-58-947d84e4539c> in <module>
----> 1 matches = mol.GetSubstructMatches(smile)
~\miniconda3\envs\tensorflow\lib\site-packages\rdkit\Chem\Draw\IPythonConsole.py in _GetSubstructMatches(mol, query, *args, **kwargs)
149
150 def _GetSubstructMatches(mol, query, *args, **kwargs):
--> 151 res = mol.__GetSubstructMatches(query, *args, **kwargs)
152 mol.__sssAtoms = []
153 if highlightSubstructs:
ArgumentError: Python argument types in
Mol.GetSubstructMatches(Mol, str)
did not match C++ signature:
GetSubstructMatches(class RDKit::ROMol self, class RDKit::MolBundle query, struct RDKit::SubstructMatchParameters params)
GetSubstructMatches(class RDKit::ROMol self, class RDKit::ROMol query, struct RDKit::SubstructMatchParameters params)
GetSubstructMatches(class RDKit::ROMol self, class RDKit::MolBundle query, bool uniquify=True, bool useChirality=False, bool useQueryQueryMatches=False, unsigned int maxMatches=1000)
GetSubstructMatches(class RDKit::ROMol self, class RDKit::ROMol query, bool uniquify=True, bool useChirality=False, bool useQueryQueryMatches=False, unsigned int maxMatches=1000)