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)