Hi Susan,

adding explicit hydrogens is an expensive operation that you normally try
to avoid unless you have to (e.g., because you need to deal with 3D
molecule coordinates).
I would rather change the query in order to use implicit H queries, e.g.
something like:

q = Chem.MolFromSmarts('[$([#6;H0](-[#17])-[#17]),$([#6;H1]-[#17])]')
m = Chem.MolFromSmiles('ClC(C)(C)Cl')
print(m.HasSubstructMatch(q))
True

m = Chem.MolFromSmiles('CC(C)(C)Cl')
print(m.HasSubstructMatch(q))
False

m = Chem.MolFromSmiles('CC(C)Cl')
print(m.HasSubstructMatch(q))
True

Cheers,
p.

On Fri, Jul 22, 2022 at 12:58 PM Susan Leung <susanhle...@gmail.com> wrote:

> Sorry I replied too soon, just another quick question.
>
> I am trying to use the postgres cartridge. Is there any function to add
> hydrogens to the molecules once in the database? Or should this be done as
> a preprocessing step beforehand? E.g. I have a .smi or .sdf should all the
> molecules already have explicit hydrogens?
>
> Thanks,
>
> Susan
>
> On Fri, Jul 22, 2022 at 11:51 AM Susan Leung <susanhle...@gmail.com>
> wrote:
>
>> Ah, great thanks Paolo!
>>
>> On Fri, Jul 22, 2022 at 11:44 AM Paolo Tosco <paolo.tosco.m...@gmail.com>
>> wrote:
>>
>>> Hi Susan,
>>>
>>> If you use [#1] in your SMARTS query, for your molecule to match there
>>> should be a real hydrogen atom in your molecule graph, while in your
>>> molecule you only have implicit hydrogens, unless you explicitly add them
>>> calling Chem.AddHs():
>>>
>>> print(Chem.AddHs(m).HasSubstructMatch(q))
>>> True
>>>
>>> Cheers,
>>> p.
>>>
>>> On Fri, Jul 22, 2022 at 12:13 PM Susan Leung <susanhle...@gmail.com>
>>> wrote:
>>>
>>>> Hi all,
>>>>
>>>>
>>>>
>>>> I am trying to do substructure search using query atom lists, but I am
>>>> seeing unexpected behaviour when I have hydrogen in my query atom list…
>>>>
>>>>
>>>>
>>>> import rdkit
>>>>
>>>> print(rdkit.__version__)
>>>>
>>>> from rdkit import Chem
>>>>
>>>>
>>>>
>>>> >>2022.03.2
>>>>
>>>>
>>>>
>>>> ## having carbon in the query atom list seems to work as expected
>>>>
>>>> q = Chem.MolFromSmarts('[#17,#6]-[#6]-[#17]')
>>>>
>>>> m = Chem.MolFromSmiles('ClCCl')
>>>>
>>>> print(m.HasSubstructMatch(q))
>>>>
>>>> m = Chem.MolFromSmiles('CCCl')
>>>>
>>>> print(m.HasSubstructMatch(q))
>>>>
>>>>
>>>>
>>>> >>True
>>>>
>>>> >>True
>>>>
>>>>
>>>>
>>>> ## having hydrogen in the query atom list doesn't work as expected
>>>>
>>>> q = Chem.MolFromSmarts('[#17,#1]-[#6]-[#17]')
>>>>
>>>> m = Chem.MolFromSmiles('ClCCl')
>>>>
>>>> print(m.HasSubstructMatch(q))
>>>>
>>>> m = Chem.MolFromSmiles('CCl')
>>>>
>>>> print(m.HasSubstructMatch(q))
>>>>
>>>>
>>>>
>>>> >>True
>>>> >>False
>>>>
>>>>
>>>>
>>>> Best wishes,
>>>>
>>>>
>>>>
>>>> Susan
>>>> _______________________________________________
>>>> Rdkit-discuss mailing list
>>>> Rdkit-discuss@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
>>>>
>>>
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to