利用Openbabel将SMILES转化为canonical SMILES
来源:互联网 发布:零售大数据分析 编辑:程序博客网 时间:2024/06/09 23:58
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];//创建数组,存放canonicalSMILESfor(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),否则系统会报错(如下图):
0 0
- 利用Openbabel将SMILES转化为canonical SMILES
- 300 3D Smiles
- World of Smiles
- Thrift (财富人生 I) -- Samuel Smiles
- 利用递归将整数转化为二进制
- 利用pugixml 将xml转化为string
- 利用bitset将整数转化为二进制
- 利用exceljs将excel转化为json
- 利用DotNet库函数将八进制数转化为十六进制数
- 关于利用xelatex不能将latex转化为html
- 如何利用matlab将模糊逻辑转化为查询表
- 利用函数将一个浮点型变量转化为二进制
- C++利用STL的stack将十进制转化为八进制
- win7 利用ovftool将.ova转化为.vmx
- 如何利用matlab将模糊逻辑转化为查询表
- 利用map将“简写信件”转化为“原始信件”
- Python:利用内建函数将字符串转化为整数
- Oracle利用SQL将clob字段数据转化为字符串
- poj_2240
- Android 程序编译问题Unable to execute dex: Multiple dex files define
- TransFrameLayout 布局的透明度
- [翻译]Swift编程语言——字符串和字符
- Python学习(六)---函数
- 利用Openbabel将SMILES转化为canonical SMILES
- js输出数组中不同项的个数
- Detecting character encoding in HTML
- 重装oracle后没有orainstRoot.sh
- 基础算法之一(算法概论)
- cookie中保存用户名和密码
- libnet使用问题解决
- 卓意听书の樊登读书会
- mysql apache2 php5 mediawiki wordpress