User 9d2c03e26a
28-05-2010 15:35:37
Hi:
We are developing a chemical web system, and part of it integrates with ChemAxon products.
We've successfully displayed the 2D structure using MarvinView applet, since the only required parameter is a SMILES string. However, problem occurs when things come to structure search.
Some facts:
- We have our own schema for the chemicals, which includes smiles, formula, molecular weight.
- Hibernate is used to maintain database operation
- JChem version: 5.3.3
Now we are trying to integrate with JChemBase (for substructure search), and the problem is about data consistency.
We have our own web page to modify the chemical properties like smiles, formula, etc. However, if Jchem is introduced into the system, it means we also have to synchronize the changes with its structure tables (and also update other Jchem-proprietary fields like cd_fp*, hash, etc). We don't know if certain interface are available to update the structure table by specifying the SMILES string only (some piece of code snippet are appreciated if any).
On the other side, if we merge the JChem structure table with ours, we are facing the following problems:
- Do we have to keep the "cd_" prefix for all JChem fields? Is there a way to config it? (Anyway this is not so important, just for curious)
- db type inconsistent, we use decimal (8,2) for molweight, while JChem use double.
- If the smiles is changed, we still need to call the JChem object model to update certain properties and save back to database. Don't know if hibernate works well in this model
- If future version of JChem changes the structure table schema, it is difficult to track and get synchronized. Get two system tight coupled.
- Structure search support combination with other query, but with hibernate we have to use native sql. This will break up the flexibility.
- Cache is introduced into JChem since 5.3.2, how can I disable it? otherwise I need to unregister all the time when structures get updated.
I don't know if all the points are listed above, but really get confused in selecting the best way to get things done.
Do you have any suggestion for my case?
Thanks in advance.