1 package search.db;
2
3 import java.io.IOException;
4 import java.sql.SQLException;
5
6 import resource.ResourceLocator;
7 import util.ConnectionUtil;
8 import util.MolImportUtil;
9 import util.SearchUtil;
10import util.TableOperations;
11import chemaxon.jchem.db.DatabaseSearchException;
12import chemaxon.jchem.db.JChemSearch;
13import chemaxon.jchem.db.TableTypeConstants;
14import chemaxon.jchem.db.TransferException;
15import chemaxon.sss.SearchConstants;
16import chemaxon.sss.search.JChemSearchOptions;
17import chemaxon.util.ConnectionHandler;
18
19
24public final class ReactionSimilaritySearchExample {
25
26 private static final String REACTION_TABLE = "reactionTable";
27 private static final String REACTION_FILE = "hits1_100.smiles";
28
29 private ConnectionHandler connHandler;
30
31 public static void main(String[] args) {
32 try {
33 new ReactionSimilaritySearchExample().run();
34 } catch (Exception e) {
35 e.printStackTrace();
36 }
37 }
38
39 private void run() throws Exception {
40 connHandler = ConnectionUtil.connectToDB();
41 try {
42 initReactionsTable();
43 search();
44 } finally {
45 ConnectionUtil.closeConnection(connHandler);
46 }
47 }
48
49 private void search() throws Exception, DatabaseSearchException, SQLException, IOException {
50
51 String query = "[Br:4][C:1]1=[CH:3][CH:6]=[CH:5][S:2]1>>"
52 + "[Br:4][C:1]1=[CH:3][CH:6]=[C:5]([S:2]1)N(=O)=O";
53 JChemSearchOptions searchOpts = new JChemSearchOptions(SearchConstants.SIMILARITY);
54 JChemSearch jcs =
55 SearchUtil.createJChemSearch(connHandler, query, REACTION_TABLE, searchOpts);
56
57 searchOpts = jcs.getSearchOptions();
58 float dissimThreshold = (float) 0.3;
59 String[] metrics =
60 { "ReactantTanimoto", "ProductTanimoto", "CoarseReactionTanimoto",
61 "MediumReactionTanimoto", "StrictReactionTanimoto" };
62 for (String m : metrics) {
63 System.out.println("Metric: " + m);
64 searchOpts.setDissimilarityMetric(m);
65 searchOpts.setDissimilarityThreshold(dissimThreshold);
66 jcs.run();
67
68 int[] cdIDs = jcs.getResults();
69 System.out.println("Results using " + m);
70 SearchUtil.printSearchResults(cdIDs);
71 }
72
73 }
74
75 private void initReactionsTable() throws IOException, SQLException, TransferException {
76 TableOperations.createStructureTable(connHandler, REACTION_TABLE,
77 TableTypeConstants.TABLE_TYPE_REACTIONS);
78 MolImportUtil.databaseImport(ResourceLocator.getPath(REACTION_FILE), connHandler,
79 REACTION_TABLE);
80 }
81
82}
83