| 查看: 271 | 回复: 2 | ||
| 【奖励】 本帖被评价2次,作者pumbaa增加金币 2 个 | ||
| 当前主题已经存档。 | ||
[资源]
【讨论】关于hyperchem自动获取参数
|
||
|
使用hyperchem软件计算分子的描述符参数是比较简单的一件事,但是如果要计算很多的分子就必然需要能够自动计算并获取参数。我尝试使用Excel的vba功能通过DDE(动态数据交互)调用hyperchem,在该软件的安装目录的DirHyperchem/CDK/excel下有一个例子Hyper_VBA.xls,我在其基础上做了改进,代码如下: Private Const n = 5, molpath$ = "C:\Hyper80\Samples\Aromatic\", hcpath$ = "C:\Hyper80\Program\" Dim Channel, NewChan, wsn$, wbn$, datreq$(n) Public Sub Calc() On Error GoTo ErrorHandler datreq$(1) = "total-energy" datreq$(2) = "stretch-energy" datreq$(3) = "bend-energy" datreq$(4) = "torsion-energy" datreq$(5) = "nonbond-energy" Range("A2" .Select wsn$ = ActiveSheet.Name ' Gets the names of the active worksheet and workbook wbn$ = ActiveWorkbook.Name MsgBox "Make sure this is the correct path of HyperChem & the needed files:" & Chr(13) & Chr(13) & hcpath$ + "chem.exe" & Chr(13) & "" & molpath$ & "filename.hin" Shell hcpath$ + "chem.exe", 6 '6 means non-selected iconized window. Channel = Application.DDEInitiate("HyperChem", "System" ![]() ### NewChan = Application.DDEInitiate("HCQSAR", "System" ![]() Application.DDEExecute Channel, "[query-response-has-tag(no)]" ### Application.DDEExecute NewChan, "[qsar-property logp]" CurrentCell = ActiveCell.FormulaR1C1 Do While Not CurrentCell = "" 'Reads the molecule into the HyperChem and switches to Molecular Mechanic Calculation Application.DDEExecute Channel, "[file-format(hin)][open-file(" + molpath$ & Selection() & ".hin)]" Application.DDEExecute Channel, "[calculation-method molecular-mechanics]" Application.DDEExecute Channel, "[molecular-mechanics-method mm+]" Application.DDEExecute Channel, "[optim-algorithm polakribiere]" Application.DDEExecute Channel, "[optim-convergence 0.1]" '收敛标准 Application.DDEExecute Channel, "[optim-max-cycles 100]" '最大优化回数 Application.DDEExecute Channel, "[do-optimization]" Application.DDEExecute Channel, "[do-single-point]" ### Application.DDEExecute NewChan, "[do-calculation]" ### Application.DDERequest NewChan, "[QSARResult]" For ci = 1 To n ActiveCell.Offset(rowOffset:=0, columnOffset:=ci).Value = Application.DDERequest(Channel, datreq$(ci)) Next ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Select CurrentCell = ActiveCell.FormulaR1C1 Loop Application.DDEExecute Channel, "[menu-file-exit]" Application.DDETerminate Channel Exit Sub ErrorHandler: ' Error-handling routine. Dim Msg As String Dim Style, Response Msg = "Error # " & Str(Err.Number) & " was generated by " _ & Err.Source & Chr(13) & Err.Description _ & Chr(13) & Chr(13) & "Resume?" Style = vbYesNo + vbCritical + vbDefaultButton2 Response = MsgBox(Msg, Style, "Error", Err.HelpFile, Err.HelpContext) If Response = vbYes Then: Resume End Sub 不过很可惜,我始终不能调用QSAR计算模块,虽然我参照其文档使用了Application.DDEInitiate("HCQSAR", "System" (相关语句在代码中前面标示了###),运行时总是体现“不问访问远程数据”的诡异错误。其中excel中内容为: Molecule Total Stretch Bend Torsion vdW benzene 在此我仅作为抛砖引玉了,盼望有高人解决!! [ Last edited by zdhlover on 2009-11-15 at 13:36 ] |
» 猜你喜欢
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
孩子确诊有中度注意力缺陷
已经有12人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
论文投稿,期刊推荐
已经有4人回复
硕士和导师闹得不愉快
已经有13人回复
» 本主题相关商家推荐: (我也要在这里推广)
2楼2009-06-07 16:16:32
3楼2009-06-07 20:44:25














.Select
回复此楼