2021.04.02 更新
折腾了可能一个半月,最后才发现 PIP才是正途。首先配置python2.7的虚拟环境,通过conda安装openbabel,然后使用
pip install raspa2
安装raspa2后,使用python 2.7 内核的jupyter notebook就可以运行了。
部分openbabel的更新导致有些调用方法需要修改。按照报错自己慢慢找吧~
果然还是mac下的pip坏掉影响了我的选择,最初的选择就是最正确的orz。折腾了这么久,终于有了能用的raspa2,下一步就是构建数据集,使用sklearn了~!!
向新方向进发吧!
——
很久没什么记录一些有用的东西。毕竟实验忙了很多年终于熬出了头,现在可以看看自己感兴趣的内容。趁着计算还在算,空余时间在研究一些关于预测实验性质的资料,也就涉及到了一些分子动力学模拟的内容。
raspa2是常用的来作吸附模拟的应用。目前MOFs通过raspa2进行的吸附模拟报道已经有很多篇了。
raspa2本体安装有几种方法:pip,conda,从头编译。pip和从头编译我尝试了数次,换了几个系统,补充了一堆缺的头文件还是失败了,还好conda的可以直接用。
但是问题来了,raspa2的调用比较复杂,所以需要一个脚本进行前后处理:作者提供了一系列perl自动化脚本,和python库来进行调用,因为没有学过perl,所以我就先去研究了python的部分。
然而,raspa2-python配置起来比想象中的复杂的多。因为raspa2-python只针对pip和自己编译进行了设计,所以其中的一些变量需要进行修改。而且,raspa2-python只支持linux运行,
所以以下的内容均在linux下进行。系统是 Ubuntu 20.10。
前前后后折腾了五天,终于把这个搞定了。
以下是过程,用户名需要自行替换。
- 安装本体和配置环境
# 创建虚拟环境
conda create -n raspa
conda activate raspa
conda install -c conda-forge raspa2
每次使用前要先执行一次 conda activate raspa
# 在 ~/.bashrc 中添加这行,虽然在最后并没有用上…如果pip和自行编译会用到
export RASPA_DIR=/home/tkaray/anaconda3/envs/raspa
- 修改文件和文件夹
查看raspa在conda库中的分布,包括以下位置:
/home/tkaray/anaconda3/envs/raspa # 主目录
/home/tkaray/anaconda3/envs/raspa/RASPA2 # python部分
/home/tkaray/anaconda3/envs/raspa/share/raspa # 库部分
根据raspa2.py的内容,需要将 /home/tkaray/anaconda3/envs/raspa/share/raspa 中新建 libraspa 文件夹,并将四个文件夹 (forcefield, framework, molecules, structures)
都放进去。
接下来修改 /home/tkaray/anaconda3/envs/raspa/RASPA2/raspa2.py 中的内容:
# raspa2.py
raspa_dir = os.path.dirname(os.path.realpath(__file__))
libraspa_dir = os.path.join(os.path.dirname(raspa_dir), "share/raspa")
libraspa_file = next(f for f in os.listdir(libraspa_dir) if "libraspa" in f)
这里需要使用相对路径,如果不使用相对路径就会让ctypes.cdll 报 OSError 错误:cdll loadlibrary is a directory。
- 使用
因为文件夹的限制,raspa2-python的部分放在了主目录 /home/tkaray/anaconda3/envs/raspa/RASPA2 下,这个位置并不是正常的包位置,因此需要对搜索包位置进行修改。
要在每次使用前进行声明。而且位置不能进行移动(不然cdll函数就会报错)。也可以采用全局声明的办法,但是为了避免不必要的问题所以这里采用了临时的声明(每次调用前都要带上这段)。
import sys
sys.path.append('/home/tkaray/anaconda3/envs/raspa')
import RASPA2 as raspa
而所有的库文件(如cif,分子定义,力场等)则要放在 /home/tkaray/anaconda3/envs/raspa/share/raspa/libraspa 中。
- 下一步
虽然折腾了这么多,但是因为机时问题,还没有对这个软件进行大量的使用,而且可能也需要再用一下perl脚本,所以这篇记录可能还需要继续更新。(当然希望不要有这么多坑)
另外即使使用conda进行安装,也应该在Github上面下载下来源文件,因为其中包含了一些有用的示例,可以帮助学习程序的使用。