posts - 431,  comments - 344,  trackbacks - 0

          如果你的環境還沒準備好, 可以官方網站看如何配置環境:http://openbabel.org/wiki/Install_Python_bindings
          1. 通過使用OBMol, OBAtom和OBBond來創建原子和鍵
          import openbabel

          mol = openbabel.OBMol()
          print 'Should print 0 (atoms)'
          print mol.NumAtoms()

          a = mol.NewAtom()
          a.SetAtomicNum(6)   # carbon atom
          a.SetVector(0.0, 1.0, 2.0) # coordinates

          b = mol.NewAtom()
          mol.AddBond(1, 2, 1)   # atoms indexed from 1
          print 'Should print 2 (atoms)'
          print mol.NumAtoms()
          print 'Should print 1 (bond)'
          print mol.NumBonds()

          mol.Clear();

          2. 通過OBConversion來讀取分子, 并輸出不同格式文件或字符串值
          import openbabel

          obConversion = openbabel.OBConversion()
          obConversion.SetInAndOutFormats("smi", "mdl")    //讀取smiles值, 然后輸出mdl值

          mol = openbabel.OBMol()
          obConversion.ReadString(mol, "C1=CC=CS1")

          print 'Should print 5 (atoms)'
          print mol.NumAtoms()

          mol.AddHydrogens()
          print 'Should print 9 (atoms) after adding hydrogens'
          print mol.NumAtoms()      //輸出原子個數

          outMDL = obConversion.WriteString(mol)

          3. 計算fp值
          import pybel
          smiles = ['CCCC', 'CCCN']
          mols = [pybel.readstring("smi", x) for x in smiles]   # Create two molecules from the SMILES
          fps = [x.calcfp() for x in mols]   # Calculate their fingerprints
          print fps[0].bits, fps[1].bits
          print fps[0].fp[0]

          mol2 = pybel.readstring('smi', 'c2ccc1ccccc1c2')
          fp2 = mol2.calcfp("FP4")
          print fp2
          print fp2.bits


          mol3 = pybel.readstring('smi', 'C1CCCCC1')
          fp3 = mol3.calcfp()

          print fp3.__or__(fp2)  //計算相似度值

          4. 讀取sdf文件
          #encoding=utf-8
          import pybel
          for mymol in pybel.readfile("sdf", "structures_all.sdf"):
              fp = mymol.calcfp("FP2")
              print fp

          5. 輸出txt文件和sdf文件

          print mymol.write("smi")    //'CCCC'
          mymol.write("smi", "outputfile.txt")
          largeSDfile = Outputfile("sdf", "multipleSD.sdf")
          largeSDfile.write(mymol)
          largeSDfile.write(myothermol)
          largeSDfile.close()

          posted on 2009-10-25 12:37 周銳 閱讀(3749) 評論(0)  編輯  收藏 所屬分類: ChemistryJavaOpenbabel
          主站蜘蛛池模板: 江口县| 洪洞县| 会泽县| 宝兴县| 通河县| 龙泉市| 祁东县| 德阳市| 广水市| 常德市| 江北区| 岑溪市| 封丘县| 上虞市| 尤溪县| 云霄县| 京山县| 海林市| 保康县| 北宁市| 普兰县| 屏南县| 丰原市| 若羌县| 正安县| 辽源市| 陵水| 方城县| 本溪| 彰武县| 乐业县| 屯门区| 行唐县| 武义县| 南宁市| 江北区| 长寿区| 定南县| 荣成市| 九台市| 太谷县|