posts - 431,  comments - 344,  trackbacks - 0

          package com.founder.cdk;

          import Java.io.StringReader;
          import Java.sql.Connection;
          import Java.sql.ResultSet;
          import Java.sql.SQLException;
          import Java.util.ArrayList;
          import Java.util.BitSet;
          import Java.util.List;

          import org.openscience.cdk.Molecule;
          import org.openscience.cdk.exception.CDKException;
          import org.openscience.cdk.fingerprint.Fingerprinter;
          import org.openscience.cdk.io.MDLReader;
          import org.openscience.cdk.similarity.Tanimoto;

          public class CDKTest {

           /**
            * @param args
            */
           public static void main(String[] args) {
            
            // MySQL
            long t1 = System.currentTimeMillis();
            try {
             Class.forName("com.mysql.jdbc.Driver").newInstance();
             Connection con = Java.sql.DriverManager
               .getConnection(
                 "jdbc:mysql://localhost/coocoo?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull",
                 "root", "root");
             

             ResultSet results = null;
             String querySQL = "select id, structure from structure ";
             
             results = con.createStatement().executeQuery(querySQL);
           
             // dump out the results

             List<Molecule> list = new ArrayList<Molecule>();
             Fingerprinter fp = new Fingerprinter();
             BitSet bt = null;
             while (results.next()) {
              Long id = results.getLong("id");
              
              //根據結構數據生成分子對象
              StringReader mdl = new StringReader(results.getString("structure"));
              MDLReader cdkMDL = new MDLReader(mdl);
              Molecule molecule = new Molecule();
              cdkMDL.read(molecule);

              if (id == 1220) {
               bt = fp.getFingerprint(molecule);
              }
              list.add(molecule);
              
             } 
             System.out.println("size:=" + list.size());
             
             List<Molecule> resultList = new ArrayList<Molecule>();
                  
                   long t2 = System.currentTimeMillis();
                   System.out.println("Thread: collection data in " + (t2 - t1) + " ms.");
                   for (Molecule molecule : list) {
                       try {
                           float coefficient = Tanimoto.calculate(fp.getFingerprint(molecule), bt);  //計算相似度
                           if (coefficient > 0.9) {
                            resultList.add(molecule);
                           }
                       } catch (CDKException e) {

                       }
                   }
                   long t3 = System.currentTimeMillis();
                  
                   System.out.println(resultList.size());
                   System.out.println("Thread: Search in " + (t3 - t2) + " ms.");
                  
             con.close();
            } catch (InstantiationException e) {
             e.printStackTrace();
            } catch (IllegalAccessException e) {
             e.printStackTrace();
            } catch (ClassNotFoundException e) {
             e.printStackTrace();
            } catch (SQLException e) {
             e.printStackTrace();
            } catch (CDKException e) {
             e.printStackTrace();
            }
            long t4 = System.currentTimeMillis();
                  System.out.println("Thread: all in " + (t4 - t1) + " ms.");
           }

          }

          posted on 2009-10-19 09:37 周銳 閱讀(450) 評論(0)  編輯  收藏 所屬分類: Chemistry 、Java 、CDK
          主站蜘蛛池模板: 黄浦区| 额尔古纳市| 凉城县| 获嘉县| 锡林郭勒盟| 泗阳县| 定结县| 梁山县| 惠来县| 云南省| 邮箱| 甘孜| 进贤县| 明水县| 永丰县| 五河县| 舞钢市| 滁州市| 文化| 吉木萨尔县| 威信县| 琼海市| 绍兴市| 太白县| 东阿县| 黄骅市| 十堰市| 拜泉县| 贡嘎县| 邹城市| 德令哈市| 宜阳县| 慈利县| 延川县| 永和县| 广水市| 茂名市| 龙山县| 罗江县| 开阳县| 乌鲁木齐县|