User 8139ea8dbd
24-02-2009 04:40:31
I think I asked a similar question a while ago, but could not find the post. Can someone explain again why these two return different results? Thanks.
select jc_equals(
'[H]\N=C(\C)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(\N)=N/[H])(O)(=O)CC(O)=O'
,
'CC(=N)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(N)=N)(O)(=O)CC(O)=O'
)
from dual;
return 1;
select jc_equals(
'CC(=N)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(N)=N)(O)(=O)CC(O)=O'
,
'[H]\N=C(\C)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(\N)=N/[H])(O)(=O)CC(O)=O'
)
from dual;
return 0;
ChemAxon aa7c50abf8
24-02-2009 09:08:40
Which JChem version is it? With recent versions (I tested with 5.1.2 and 5.1.4), both statements return 1.
As far as I know, perfect match is not supposed to be directional.
User 8139ea8dbd
24-02-2009 18:15:30
We are using version 5.1.4
SELECT prop_value from gnf_imc.jchemproperties where PROP_NAME like '%JChemVersion';
returns 5.1.4
I think the two structures are different, should return 0, because explicit hydrogen is required in one structure (Remove explicit hydrogen will not remove them).
ChemAxon 42004978e8
26-02-2009 11:05:28
Hi,
There are two issues here.
First, for us the two operations resulted in the same action and there is matching. For you there is a different behaviour for the two searches, which shouldn't occur.
Second: for perfect (duplicate) search type explicit hydrogens can match on implicit hydrogens because usually it's only a question of representation.
However for your structures the explicit hydrogen causes a trans double bond stereo configuration, which is not present in the other structure and should hinder matching. We will check why these structures match.
Bye,
Robert
ChemAxon aa7c50abf8
26-02-2009 15:58:43
For the problem of the apparent lack of commutativity between perfect search parameters: do you get same inconsistent behaviour, if you are searching in tables, as opposed to comparing to structures as literal values using FROM DUAL?
User 8139ea8dbd
26-02-2009 22:08:34
We will do a bit more testing, but I think we need to first convince you that the bug does exist. The following is the log from sqlplus (maybe our Java version is old?):
SQL> select JCHEM_CORE_PKG.GETENVIRONMENT() from dual;
JCHEM_CORE_PKG.GETENVIRONMENT()
--------------------------------------------------------------------------------
Oracle environment:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Solaris: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
JChem Server environment:
Java VM vendor: Sun Microsystems Inc.
Java version: 1.5.0_17
Java VM version: 1.5.0_17-b04
JCHEM_CORE_PKG.GETENVIRONMENT()
--------------------------------------------------------------------------------
JChem version: 5.1.4
JChem Index version: 50103
JDBC driver version: 10.2.0.3.0
SQL> select jc_equals('[H]\N=C(\C)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(\N)=N/[H])(O)(=O)CC(O)=O','CC(=N)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(N)=N)(O)(=O)CC(O)=O' ) from dual;
JC_EQUALS('[H]\N=C(\C)N1CCC(CC1)OC1CCC(CC1)N(CC1CCC2CCC(CC2C1)C(\N)=N/[H])(O)
--------------------------------------------------------------------------------
1
SQL> select jc_equals('CC(=N)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(N)=N)(O)(=O)CC(O)=O','[H]\N=C(\C)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(\N)=N/[H])(O)(=O)CC(O)=O') from dual;
JC_EQUALS('CC(=N)N1CCC(CC1)OC1CCC(CC1)N(CC1CCC2CCC(CC2C1)C(N)=N)(O)(=O)CC(O)=
--------------------------------------------------------------------------------
0
User 8139ea8dbd
26-02-2009 22:57:40
We inserted the two smiles into a test database (which has exactly the same setting as the database where we run "from dual"). You can see there is a difference between fetching smiles from table or pass as parameters in from dual.
SQL> select JCHEM_CORE_PKG.GETENVIRONMENT() from dual;
JCHEM_CORE_PKG.GETENVIRONMENT()
--------------------------------------------------------------------------------
Oracle environment:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Solaris: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
JChem Server environment:
Java VM vendor: Sun Microsystems Inc.
Java version: 1.5.0_17
Java VM version: 1.5.0_17-b04
JCHEM_CORE_PKG.GETENVIRONMENT()
--------------------------------------------------------------------------------
JChem version: 5.1.4
JChem Index version: 50103
JDBC driver version: 10.2.0.3.0
SQL> select cpd_sid, vc.jc_smiles from vendor_cpd vc
where jc_equals(vc.jc_smiles,'CC(=N)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(N)=N)(O)(=O)CC(O)=O' ) =1 ;
2
CPD_SID
----------
JC_SMILES
--------------------------------------------------------------------------------
98765432
[H]\N=C(\C)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(\N)=N/[H])(O)(=O)CC(O)=O
98765433
CC(=N)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(N)=N)(O)(=O)CC(O)=O
SQL> select cpd_sid, vc.jc_smiles from vendor_cpd vc
where jc_equals(vc.jc_smiles, '[H]\N=C(\C)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(\N)=N/[H])(O)(=O)CC(O)=O' ) =1 ;
2
CPD_SID
----------
JC_SMILES
--------------------------------------------------------------------------------
98765432
[H]\N=C(\C)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(\N)=N/[H])(O)(=O)CC(O)=O
98765433
CC(=N)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(N)=N)(O)(=O)CC(O)=O
SQL> select jc_equals('[H]\N=C(\C)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(\N)=N/[H])(O)(=O)CC(O)=O', 'CC(=N)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(N)=N)(O)(=O)CC(O)=O') from dual;
JC_EQUALS('[H]\N=C(\C)N1CCC(CC1)OC1CCC(CC1)N(CC1CCC2CCC(CC2C1)C(\N)=N/[H])(O)
--------------------------------------------------------------------------------
1
SQL> select jc_equals('CC(=N)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(N)=N)(O)(=O)CC(O)=O','[H]\N=C(\C)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(\N)=N/[H])(O)(=O)CC(O)=O') from dual;
JC_EQUALS('CC(=N)N1CCC(CC1)OC1CCC(CC1)N(CC1CCC2CCC(CC2C1)C(N)=N)(O)(=O)CC(O)=
--------------------------------------------------------------------------------
0
ChemAxon aa7c50abf8
26-02-2009 23:06:31
Does this Oracle user has "absoluteStereo" or "standardizerConfig" entries in the prop_name column in his jc_idx_property table? Or anything else other than entries ending with ".idxTable", ".JChemProperties" or ".debuglevel"?
ChemAxon aa7c50abf8
27-02-2009 09:50:31
Please, could you do the following:
1. Add the following lines to cartridge/conf/logging.properties:
Code: |
chemaxon.jchem.handlers = java.util.logging.FileHandler
chemaxon.jchem.cartridge.rmi.impl.MolSearchImpl.level = FINEST
|
2. Reload or restart JChem Server
3. Execute both "FROM DUAL" statements
4. Retrieve recent lines in the latest log files in cartridge/logs. Two times having a pattern similar to the following:
Code: |
Feb 27, 2009 10:20:56 AM chemaxon.jchem.cartridge.rmi.impl.MolSearchImpl init
FINE: searchTypeToken=perfect, query=[H]\N=C(\C)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(\N)=N/[H])[S](O)(=O)CC(O)=O, standardizer=null, queryStdrNeededtrue, options=null, absStereo=false
Feb 27, 2009 10:20:56 AM chemaxon.jchem.cartridge.rmi.impl.MolSearchImpl isMatching
FINER: isMatching: target=CC(=N)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(N)=N)[S](O)(=O)CC(O)=O, targetStdrNeeded=true
Feb 27, 2009 10:20:56 AM chemaxon.jchem.cartridge.rmi.impl.MolSearchImpl isMatching
FINER: isMatching: returning isMatching=1 |
5. Post these log lines (12 lines in total, if my math is correct).
Thanks
Peter
User f50dadc210
27-02-2009 20:11:27
I tried to use JChem API to do perfect match using these two smiles. The code is as the follows.
String query = "CC(=N)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(N)=N)(O)(=O)CC(O)=O";
String target = "[H]\\N=C(\\C)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(\\N)=N/[H])(O)(=O)CC(O)=O";
MolSearch ms = new MolSearch();
ms.setQuery(new MolHandler(query, true).getMolecule());
ms.setTarget(new MolHandler(target).getMolecule());
SearchOptions so = new SearchOptions();
so.setSearchType(SearchConstants.PERFECT);
ms.setSearchOptions(so);
if (ms.findFirst() != null) {
System.out.println("Yes");
} else {
System.out.println("No matching");
}
It returns "No matching". The java version is 1.6 and Jchem version is 5.1.5. Would you please show me the correct code?
Thanks
ChemAxon 42004978e8
02-03-2009 13:15:10
Hi,
We corrected the search behaviour, the two structures doesn't match each other in perfect search. We had a bug in handling hydrogens in cis/trans configuration.
The fix will be released with version 5.2 this month.
However your programs inconsistent behaviour which we couldn't reproduce is still an open question. Please send us the previously mentioned log file.
Bye,
Robert
ChemAxon 42004978e8
09-03-2009 13:46:10
Hi,
This topic contained two different questions:
1, The first part dealt with directionality of perfect search, and if explicit Hs in Cis/Trans configuration are considered during seraching. -this part remained here
2, The second part dealt with the exact and perfect search depending on (de)aromatization of a molecule.
This can be found here:
http://www.chemaxon.com/forum/ftopic4629.html
Please follow it.
Bye,
Robert
ChemAxon 42004978e8
10-03-2009 11:06:20
Hi,
Your code returns no matching for us as well. In case of perfect search you are comparing two molecules. In this case there shouldn't be a smarts import of the query structure, so both query and target should be imported with "false" setting in MolHandler.
For other searches smarts import is suitable (set "true"), because there might be query features in the query structure.
In version 5.3 we will have a method MolSearch.setQuery(String) which will import the query as smiles or smarts based on the search type.
Bye,
Robert
I write my correction as comment:
Quote: |
I tried to use JChem API to do perfect match using these two smiles. The code is as the follows.
String query = "CC(=N)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(N)=N)(O)(=O)CC(O)=O";
String target = "[H]\\N=C(\\C)N1CCC(CC1)Oc1ccc(cc1)N(Cc1ccc2ccc(cc2c1)C(\\N)=N/[H])(O)(=O)CC(O)=O";
MolSearch ms = new MolSearch();
ms.setQuery(new MolHandler(query, true).getMolecule()); |
ms.setQuery(new MolHandler(query).getMolecule());
Quote: |
ms.setTarget(new MolHandler(target).getMolecule());
SearchOptions so = new SearchOptions();
so.setSearchType(SearchConstants.PERFECT);
ms.setSearchOptions(so);
if (ms.findFirst() != null) {
System.out.println("Yes");
} else {
System.out.println("No matching");
}
It returns "No matching". The java version is 1.6 and Jchem version is 5.1.5. Would you please show me the correct code?
Thanks |
.
ChemAxon 42004978e8
13-03-2009 10:14:45
Hi,
Version 5.2 with the correction of C/T specific explicit hydrogen handling has been released.
Robert