GMXTOP:集成MKTOP的原子类型判定代码

类别:    标签: 编程 gmx js   阅读次数:   版权: (CC) BY-NC-SA

在常见的生成小分子OPLS-AA力场拓扑的脚本中, 有几个perl脚本, 其中可用性稍好一点的是MKTOP, 最新版本是2.2.1. 这个脚本的原子类型判断虽然没有TPPmktop准确, 但也还不错. 它在判定原子类型时使用了很直接或者说有点笨的方法: 根据每种原子类型的特征去进行判断, 将每个判断依据硬生生写代码里. 不得不说, 这也不是一件容易的工作, 至少是很累人. 我本来想将MKTOP判定原子类型的部分改写为javascript代码, 用到我的GMXTOP中, 但看看代码量, 觉得还是放弃为好. 虽然改起来不是很麻烦, 但工作量很大, 更关键的是在改写过程中容易导致错误, 所以最好的方法还是直接使用原先的代码, 想办法让它可以在浏览器中运行. 这就需要我们找到一种在浏览器中运行perl代码的方法.

这个需求虽不常见, 但也还是有人想过的. 特别是近年来随着js的崛起, 很多语言都有了js的接口或转换器, js也大有一统江湖之势. 综合网上的资料和看法, 目前在浏览器端运行perl代码的最佳方案有两种:

  1. Perlito. 比较新的一个项目, 目前的开发很活跃, 用到人也很多. 它可以将perl代码转换为多种语言, 包括java, js等. 转换方法是使用js代码对perl代码进行编译, 生成可运行的js代码, 因此转换过程不依赖于网络, 可以独立地进行部署, 十分适合单独使用. 缺点就是编译和运行速度慢, 且转换后得到的js代码没有办法直接运行, 仍然必须依赖perlito.js(也许是我没找到方法?).

  2. perl.js, 基于emscripten编译的perl运行环境, 十分接近原始的perl, 相当于一个在线的perl运行环境, 运行速度也快. 如果要多次执行或调试perl代码, 使用这个比较. 缺点是运行前要加载的js代码量很大, 容易拖垮浏览器. 再者, 这个项目已经不再更新了, 遇到问题比较难解决.

综合上面的信息考虑了一下, 我决定在我的GMXTOP中使用第一种方案. 虽然速度慢点, 但可以独立运行, 比较合适. 而且这个项目的开发者很热心, 有什么问题的话, 直接提个issue就可以帮忙解决.

因此, 我就利用PerlitoMKTOP判定原子类型部分的代码, 综合到GMXTOP中了. 这样GMXTOP就提供了一种自动判定原子类型的方法, 可以部分地减轻用户在判定原子类型时的工作量和纠结度. 对于常规的小分子, 判定的准确度还是可以的. 此外, 对那些没有参数的成键作用, MKTOP会根据一定的规则自动添加缺失参数. 这个功能虽然可行, 但有时过于危险, 所以暂时还没有移植过来.

随意赞赏

微信

支付宝
◆本文地址: , 转载请注明◆
◆评论问题: https://jerkwin.herokuapp.com/category/3/博客, 欢迎留言◆


前一篇: 曲线的变形
后一篇: 计算蛋白自由能形貌图的简单示例

访问人次(2017年1月27日起): | 最后更新: 2020-12-16 11:13:49 CST | 版权所有 © 2008 - 2020 Jerkwin