jc_compare or molconvert question?

User 5251acc1d9

03-05-2016 14:39:50

Hi,


I expect the query below returns nothing:


select * 
from (
    select jcf.molconvertv(jcf.molconvertc('NC1CC=CC1', 'mol'),'smiles') convsmiles, 
        'NC1CC=CC1' vsmiles 
    from dual) 
where jc_compare(convsmiles,'NC1CC=CC1','t:d') = 0;

But the query returns the following:


CONVSMILES,VSMILES
NC1CC=CC1,NC1CC=CC1

Is there an explanation?


Thanks,


--Ling

ChemAxon abe887c64e

03-05-2016 14:48:34

Hi Ling,


Would you try to add earlyResults:0 to the option parameters of jc_compare.



jc_compare(convsmiles,'NC1CC=CC1','t:d earlyResults:0')=0


Best regards,


Krisztina

User 5251acc1d9

03-05-2016 15:34:59

the same result, nothing changed

ChemAxon abe887c64e

04-05-2016 12:07:37

Hi Ling,


We could also reproduce this issue.


The problem is that in JChem Oracle Cartridge when the target of a search is not a table column, but only a molecule, at present, the query string - which can be differently interpreted in SMARTS and SMILES - is handled as SMARTS even in duplicate search.


If the target of the search is a column, in duplicate search the ambiguous query is interpreted as SMILES and in all other search types as SMARTS.


The difference in the interpretation of the query string 'NC1CC=CC1' is in the aliphatic property (A) added to the nitrogen atom because the capital letters in SMARTS mean only aliphatic atoms.


SMARTS interpretation of NC1CC=CC1 is  [#7;A][#6]-1-[#6]-[#6]=[#6]-[#6]-1


If you plan to execute duplicate searches with single molecule targets instead of table columns, some other format (mrv, mol) is recommended for the query molecules.


Best regards,


Krisztina

User 5251acc1d9

04-05-2016 13:39:18

Hi Krisztina,


Thanks for your reply.


Actually the target of the search is in a column, as shown below:


select * 
from (
    select jcf.molconvertv(jcf.molconvertc( vsmiles, 'mol'),'smiles') convsmiles, 
        vsmiles 
    from bbs) 
where jc_compare(convsmiles,vsmiles,'t:d') = 0;

'vsmiles' comes from bbs table.


How can we make the above query work? Out of 20k-ish records, only around 300ish records give unexpected results.


Thanks,


--Ling

ChemAxon abe887c64e

04-05-2016 13:59:42

Hi Ling,


Sorry I might not be clear enough, under search I mean the chemical search executed by using the jc_compare operator. Its first parameter is the target. If this first parameter is a table column, it must be indexed with jc_idxtype.


In the statement you applied, the target in jc_compare is convsmiles which is just a single molecule.


Would you describe what is the aim of your searches ?


Best regards,


Krisztina

User 5251acc1d9

04-05-2016 15:14:38

Hi Krisztina,


I like to verify the same smiles with stereochemistry information can be persevered if the original smiles is saved into clob in the oracle database and retrieved into smiles again from clob with jcf.molconvertv.


I did observe some inconsistency with some molecules. The previous query is the check that I used.


What is the best way to get around the limitation that target has to be a table column?


Thanks,


--Ling 

ChemAxon abe887c64e

05-05-2016 08:07:28

Hi Ling,


Our proposal is the following



  1. store the convsmiles values in a second table

  2. index the convsmiles column of that table with jc_idxtype

  3. get the molecules from the vsmiles column of bbs table one-by-one and run duplicate search one-by-one with these vsmiles as queries against the convsmiles column of the second table


Best regards,


Krisztina