前景: 解决Gromacs教程中利用cgenff_charmm2gmx_py3_nx2.py 的Bug:
UnicodeDecodeError: 'gbk' codec can't decode byte 0x92 in position 7640: illegal multibyte sequence问题
正题:
最近在Justin A. Lemkul, Ph.D. Virginia Tech Department of Biochemistry 的tutorials网站上学习gromacs时, 发现了一些bug, 此文档将会给出解决方法
教程网站: Protein-Ligand Complex (mdtutorials.com)
在其中的第二步 ( 形成ligand的topo文件, 比较麻烦)时,
要使用来自 Github 的cgenff_charmm2gmx.py 辅助脚本
其中这个脚本的运行环境必须要用该脚本测试过的Python环境才可以,
jalemkul作者在Github中列举了Python 2.x 和 3.x 两大类环境, 而且要依赖两个库, Numpy & NetworkX. 其中, NetworkX和Python必须要属于不同脚本测试的版本才可以运行,
我使用的是_py3的脚本, 接下来我将使用如下脚本(上方Github链接下载) 进行说明:
- 对于旧版本:
因为python 3.5.x和python2.x版本pip包管理器安装比较麻烦, bug频出, 会出现collecting package卡住的情况, 所以建议使用3.7.3(也是经过测试的版本)
- 对于新版本:
python 最新版对其中的NetworkX库进行了改动和变化, 如果在不了解变化的情况下, 不建议使用高版本的
cgenff_charmm2gmx_py3_nx2.py 中:
- python 环境: 3.5.2 & 3.7.3
- NetworkX 环境: 2.3 pip install NetworkX==2.3
- numpy 环境: 无限制 pip install numpy
- charmm36-jul2022.ff/forcefield.doc 显示这个版本, 要和CGenFF出来的版本结果一致 (这个在Gromacs官方教程之前会有说明)
进行了这样的操作后, 仍然会有Bug
UnicodeDecodeError: 'gbk' codec can't decode byte 0x92 in position 7640: illegal multibyte sequence
在修改了很久后我终于解决了!
只需要进行如下操作 (cgenff_charmm2gmx_py3_nx2.py)
140行: f = open(ffdir+"/"+ffparentfile, 'r')
改成 >>> f = open(ffdir+"/"+ffparentfile, 'r',encoding='utf-8')
150行: f = open(filename, 'r')改成 >>> f = open(filename, 'r',encoding='utf-8')
之后再次运行即可成功
成功会出现!!!!!!!
Reference:
https://github.com/Lemkul-Lab/cgenff_charmm2gmx