Re: [Rdkit-discuss] The fragmentMatcher (SubstructMatcher) is not as good as expected

2016-10-27 Thread 杨弘宾



  




Thanks, it works!    I appreciate that Rdkit is so strict in representation of 
the the molecules and the substructures. I learned a lot in the mail list.


Hongbin Yang 

 From: Paolo ToscoDate: 2016-10-27 17:19To: 杨弘宾; rdkit-discussSubject: Re: 
[Rdkit-discuss] The fragmentMatcher (SubstructMatcher) is not as good as 
expected
  

  
  
Dear Hongbin,
I am afraid The SMARTS you are using is not valid, as no SSSR can
  have less than 3 terms, or it wouldn't be a ring. If you
  change[a!r0] into, for instance, [a!r3], then you'll find the
  match you are looking for.
Cheers,

  p.


On 27/10/2016 09:36, 杨弘宾 wrote:



  
  
  Hi,
      I
  tryied using rdkit to match fragments with compounds only to
  find that rdkit performed not well in SMARTS. The following is
  the notebook I worked.
  

  
  

  

  

  from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import FragmentMatcher
from rdkit.Chem.Draw import IPythonConsole


  

  


  
In [49]:

  

  p = FragmentMatcher.FragmentMatcher()
p.Init('[a!r0][NX3+](=[OX1])([O-])')


  

  


  
In [50]:

  

  mol  = Chem.MolFromSmiles('c1c1[N+](=O)[O-]')
mol


  

  
  

  
Out[50]:

  

  


  
In [51]:

  

  p.HasMatch(mol)


  

  
  

  
Out[51]:

  0

  

  


  
In [52]:

  

  print Chem.MolFromSmarts('[a!r0][NX3+](=[OX1])([O-])')


  

  
  

  

  None

  

  

  
  However, openbabel worked well in matching the substrcutre.
Even "or operator" was avaiable such as 
"[a!r0][$([NX3+](=[OX1])([O-])),$([NX3](=O)=O)]". 
  

  
  >>>
  s=pybel.Smarts('[a!r0][NX3+](=[OX1])([O-])')
  

  >>> s=pybel.Smarts('[a!r0][NX3+](=[OX1])([O-])')
  

  >>> a=pybel.readstring('smi','c1c1[N+](=O)[O-]')
  

  >>> s.findall(a)
  

  [(6, 7, 8, 9)]
  

  
  It is a pity that rdkit can calculate the topological
distance between two atoms while it cannot match the
fragments... Is there any better API which I didn't find?
  

  
  

  
  
  
  Hongbin
  Yang 杨弘宾
  

  Research: Toxicophore and Chemoinformatics

  Pharmaceutical Science, School of Pharmacy
  

  East China University of Science and Technology 



  

  
  

  
--
The Command Line: Reinvented for Modern Developers
Did the resurgence of CLI tooling catch you by surprise?
Reconnect with the command line and become more productive. 
Learn the new .NET and ASP.NET CLI. Get your free copy!
http://sdm.link/telerik
  

  
  

  ___
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss




  


--
The Command Line: Reinvented for Modern Developers
Did the resurgence of CLI tooling catch you by surprise?
Reconnect with the command line and become more productive. 
Learn the new .NET and ASP.NET CLI. Get your free copy!
http://sdm.link/telerik___
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss


Re: [Rdkit-discuss] The fragmentMatcher (SubstructMatcher) is not as good as expected

2016-10-27 Thread Paolo Tosco

Dear Hongbin,

I am afraid The SMARTS you are using is not valid, as no SSSR can have 
less than 3 terms, or it wouldn't be a ring. If you change[a!r0] into, 
for instance, [a!r3], then you'll find the match you are looking for.


Cheers,
p.

On 27/10/2016 09:36, 杨弘宾 wrote:

Hi,
I tryied using rdkit to match fragments with compounds only to 
find that rdkit performed not well in SMARTS. The following is the 
notebook I worked.


from  rdkit  import  Chem
from  rdkit.Chem  import  AllChem
from  rdkit.Chem  import  FragmentMatcher
from  rdkit.Chem.Draw  import  IPythonConsole
In [49]:
p  =  FragmentMatcher.FragmentMatcher()
p.Init('[a!r0][NX3+](=[OX1])([O-])')
In [50]:
mol   =  Chem.MolFromSmiles('c1c1[N+](=O)[O-]')
mol
Out[50]:
In [51]:
p.HasMatch(mol)
Out[51]:
0
In [52]:
print  Chem.MolFromSmarts('[a!r0][NX3+](=[OX1])([O-])')
None
However, openbabel worked well in matching the substrcutre. Even "or 
operator" was avaiable such as 
"[a!r0][$([NX3+](=[OX1])([O-])),$([NX3](=O)=O)]".


>>> s=pybel.Smarts('[a!r0][NX3+](=[OX1])([O-])')
>>> s=pybel.Smarts('[a!r0][NX3+](=[OX1])([O-])')
>>> a=pybel.readstring('smi','c1c1[N+](=O)[O-]')
>>> s.findall(a)
[(6, 7, 8, 9)]

It is a pity that rdkit can calculate the topological distance between 
two atoms while it cannot match the fragments... Is there any better 
API which I didn't find?




Hongbin Yang 杨弘宾
Research: Toxicophore and Chemoinformatics
Pharmaceutical Science, School of Pharmacy
East China University of Science and Technology


--
The Command Line: Reinvented for Modern Developers
Did the resurgence of CLI tooling catch you by surprise?
Reconnect with the command line and become more productive.
Learn the new .NET and ASP.NET CLI. Get your free copy!
http://sdm.link/telerik


___
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss


--
The Command Line: Reinvented for Modern Developers
Did the resurgence of CLI tooling catch you by surprise?
Reconnect with the command line and become more productive. 
Learn the new .NET and ASP.NET CLI. Get your free copy!
http://sdm.link/telerik___
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss


[Rdkit-discuss] The fragmentMatcher (SubstructMatcher) is not as good as expected

2016-10-27 Thread 杨弘宾






Hi,? ? I tryied using rdkit to match fragments with compounds only to find that 
rdkit performed not well in SMARTS. The following is the notebook I worked.
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import FragmentMatcher
from rdkit.Chem.Draw import IPythonConsole
In?[49]:p = FragmentMatcher.FragmentMatcher()
p.Init('[a!r0][NX3+](=[OX1])([O-])')
In?[50]:mol  = Chem.MolFromSmiles('c1c1[N+](=O)[O-]')
mol
Out[50]:In?[51]:p.HasMatch(mol)
Out[51]:0In?[52]:print Chem.MolFromSmarts('[a!r0][NX3+](=[OX1])([O-])')
None
However, openbabel worked well in matching the substrcutre. Even "or operator" 
was avaiable such as "[a!r0][$([NX3+](=[OX1])([O-])),$([NX3](=O)=O)]".?
>>> s=pybel.Smarts('[a!r0][NX3+](=[OX1])([O-])')

>>> s=pybel.Smarts('[a!r0][NX3+](=[OX1])([O-])')

>>> a=pybel.readstring('smi','c1c1[N+](=O)[O-]')

>>> s.findall(a)

[(6, 7, 8, 9)]
It is a pity that rdkit can calculate the topological distance between two 
atoms while it cannot match the fragments... Is there any better API which I 
didn't find?


Hongbin Yang 杨弘宾

Research: Toxicophore and Chemoinformatics
Pharmaceutical Science, School of Pharmacy

East China University of Science and Technology?


--
The Command Line: Reinvented for Modern Developers
Did the resurgence of CLI tooling catch you by surprise?
Reconnect with the command line and become more productive. 
Learn the new .NET and ASP.NET CLI. Get your free copy!
http://sdm.link/telerik___
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss