CDK 2.0

CDK ver 2.0 が公開されているので、以前作ったプログラムの動作確認も兼ねて、サンプルスクリプトと共に紹介します。
まずは、MACCS keys (166ビット版)から。

○変更点
・IMolecule インターフェースが削除されたので、IAtomContainer に変更
・IteratingSMILESReader 関数の引数に、空の IChemObjectBuilder を追加。

import java.io.*;
import org.openscience.cdk.interfaces.*;
import org.openscience.cdk.io.iterator.IteratingSMILESReader;
import org.openscience.cdk.DefaultChemObjectBuilder;

import java.util.BitSet;
import org.openscience.cdk.fingerprint.MACCSFingerprinter;

class maccs {
    public static void main(String args[]){

        if(args.length!=1){
            System.err.println("maccs <smiles-file>");
            System.exit(1);
        }
        FileInputStream fis = null;
        IteratingSMILESReader isr = null;
        IChemObjectBuilder builder = null;
        try{
            builder = DefaultChemObjectBuilder.getInstance();
            fis = new FileInputStream(new File(args[0]));
            isr = new IteratingSMILESReader(fis, builder);
        } catch (Exception e) {
            e.printStackTrace();
        }

        while( isr.hasNext() ){
            IAtomContainer imol = isr.next();
            String id = (String)imol.getProperty("cdk:Title");

            MACCSFingerprinter ma = new MACCSFingerprinter();
            String fp = "";
            try{
                BitSet fing = ma.getFingerprint(imol);
                for(int i=0; i<ma.getSize(); i++){
                    if( fing.get(i) ){
                        fp = fp + ",1";
                    } else {
                        fp = fp + ",0";
                    }
                }
            } catch (Exception e1) {
                e1.printStackTrace();
            }
            System.out.printf("%s%s\n", id, fp);
        }
    }
}

参考: 旧スクリプト(cdk-1.2)