利用Openbabel将SMILES转化为canonical SMILES
2015-06-16 17:49
260 查看
import org.openbabel.*; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Test{ public Test() { System.loadLibrary("openbabel_java"); } public void run() throws Exception{ OBConversion c = new OBConversion(); OBMol mol = new OBMol(); String[] OriSMILES = { "O=C(C(C(C1([H])[H])=C(C2C(=C3[H])[H])[H])=C(C=2C(=C3[H])[H])[H])C(=O)C(=O)1", "ClC(=C(C(Cl)=C1[H])C(=O)C(=C(C(=C2Cl)[H])[H])C(=C2[H])[H])C(=C(C(N(N=N3)C(N([H])[H])=C3C(=O)N([H])[H])([H])[H])1)[H]", "O=C(N(C(=C(C(=C2[H])[H])[H])C(=C2[H])[H])C(=C1C([H])([H])[H])[H])C(=C1[H])[H]", "S(=O)(C(C(C(C(N=C=S)([H])[H])([H])[H])([H])[H])([H])[H])C([H])([H])[H]" }; int num = OriSMILES.length;//数组中元素的个数 String[] canSMILES = new String[num];//创建数组,存放canonicalSMILES for(int i=0; i<num;i++){ c.SetInFormat("smi"); c.ReadString(mol, OriSMILES[i]); System.out.print("Ori SMILES: "+OriSMILES[i]+"\n"); c.SetOutFormat("can"); canSMILES[i] = c.WriteString(mol);//canSMILES数组元素赋值 System.out.print("Canonical SMILES: " +canSMILES[i]+"\n"); } /*写入文件开始*/ File file = new File("canSMILES.txt"); //存放数组数据的文件 FileWriter out = new FileWriter(file); //文件写入流 //将数组中的数据写入到文件中 for(int i=0;i<num;i++){ out.write(canSMILES[i]); } out.close(); /*写入文件结束*/ } public static void main(String[] args) throws Exception{ System.out.println("Running OBTest..."); Test test = new Test(); test.run(); } }
实现步骤:
1.安装Openbabel软件,并将安装路径添加到系统变量Path中去;
2.直接利用Openbabel图形界面进行转换;或者将上述路径下的openbabel.jar添加到系统变量CLASSPATH中去,然后利用上述java脚本去执行。
关键:
如果是通过执行java脚本的方式去实现,则务必需要将安装路径添加到Path中去,因为java脚本中需要调用到安装文件夹下的几个dll文件(如openbabel_java.dll),否则系统会报错(如下图):
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统