VMD可视化hdf5格式的分子坐标文件
技术背景
VMD是分子动力学模拟领域常用的一款可视化软件,可以非常直观方便的展示分子的运动过程。而VMD本身对展现的格式有一定的要求,如果不是常见的rst等类型的坐标文件的话,就需要自己手动去实现一个可视化的插件。这里我们介绍的是通过VMD来可视化hdf5格式的坐标文件——hdf5是量子化学领域非常常用的一个数据格式,对于规模较大的数据集有很好的性能支持。
安装hdf5插件
这里本地使用的是Ubuntu20.04的系统,如果是其他系统,有可能需要针对性的修改下。首先我们将这个hdf5插件的源码下载到本地:
$ git clone https://github.com/h5md/VMD-h5mdplugin.git 正克隆到 'VMD-h5mdplugin'... remote: Enumerating objects: 486, done. remote: Total 486 (delta 0), reused 0 (delta 0), pack-reused 486 接收对象中: 100% (486/486), 1.18 MiB | 2.32 MiB/s, 完成. 处理 delta 中: 100% (302/302), 完成. $ cd VMD-h5mdplugin/ $ ll 总用量 128 drwxrwxr-x 6 dechin dechin 4096 10月 26 15:58 ./ drwxrwxr-x 8 dechin dechin 4096 10月 26 15:58 ../ drwxrwxr-x 2 dechin dechin 4096 10月 26 15:58 cmake/ -rw-rw-r-- 1 dechin dechin 2133 10月 26 15:58 CMakeLists.txt -rw-rw-r-- 1 dechin dechin 3190 10月 26 15:58 'Documentation VMD parameters' drwxrwxr-x 8 dechin dechin 4096 10月 26 15:58 .git/ -rw-rw-r-- 1 dechin dechin 18 10月 26 15:58 .gitignore -rw-rw-r-- 1 dechin dechin 16210 10月 26 15:58 h5mdplugin.c -rw-rw-r-- 1 dechin dechin 5000 10月 26 15:58 h5mdtest.c -rw-rw-r-- 1 dechin dechin 45631 10月 26 15:58 libh5md.c -rw-rw-r-- 1 dechin dechin 4178 10月 26 15:58 libh5md.h -rw-rw-r-- 1 dechin dechin 732 10月 26 15:58 LICENSE -rw-rw-r-- 1 dechin dechin 1300 10月 26 15:58 Makefile -rw-rw-r-- 1 dechin dechin 2624 10月 26 15:58 README.md drwxrwxr-x 2 dechin dechin 4096 10月 26 15:58 samples/ drwxrwxr-x 2 dechin dechin 4096 10月 26 15:58 tests/
这里直接clone或者是下载zip压缩包都是可以的,然后按照官方指示,直接执行
make,我们发现输出了一个报错:
$ make HDF5_CC= h5cc -shlib -Wall -Wuninitialized -std=c99 -pedantic -fPIC -I/usr/local/lib/vmd/plugins/include -c -o h5mdplugin.o h5mdplugin.c /home/dechin/ana 56c conda3/bin/h5cc: 1: eval: x86_64-conda_cos6-linux-gnu-cc: not found make: *** [<内置>:h5mdplugin.o] 错误 127
经过了解,这个报错是由于没有安装
gxx_linux-64这个库引起的,因此我们直接使用conda安装一下这个库即可:
$ conda install gxx_linux-64 Collecting package metadata (current_repodata.json): done Solving environment: done ... Preparing transaction: done Verifying transaction: done Executing transaction: done
安装完成后再次执行编译:
$ make HDF5_CC= h5cc -shlib -Wall -Wuninitialized -std=c99 -pedantic -fPIC -I/usr/local/lib/vmd/plugins/include -c -o h5mdplugin.o h5mdplugin.c HDF5_CC= h5cc -shlib -Wall -Wuninitialized -std=c99 -pedantic -fPIC -I/usr/local/lib/vmd/plugins/include -c -o libh5md.o libh5md.c libh5md.c: In function 'check_for_pos_dataset': libh5md.c:94:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation] 94 | if(pos_dataset_id>=0) | ^~ libh5md.c:96:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' 96 | printf("Position dataset found in group /%s.\n", obj_name); | ^~~~~~ libh5md.c: In function 'h5md_free_timeindependent_dataset_automatically': libh5md.c:922:2: warnin ad8 g: enumeration value 'H5T_NO_CLASS' not handled in switch [-Wswitch] 922 | switch (type_class) { | ^~~~~~ libh5md.c:922:2: warning: enumeration value 'H5T_TIME' not handled in switch [-Wswitch] libh5md.c:922:2: warning: enumeration value 'H5T_BITFIELD' not handled in switch [-Wswitch] libh5md.c:922:2: warning: enumeration value 'H5T_OPAQUE' not handled in switch [-Wswitch] libh5md.c:922:2: warning: enumeration value 'H5T_COMPOUND' not handled in switch [-Wswitch] libh5md.c:922:2: warning: enumeration value 'H5T_REFERENCE' not handled in switch [-Wswitch] libh5md.c:922:2: warning: enumeration value 'H5T_ENUM' not handled in switch [-Wswitch] libh5md.c:922:2: warning: enumeration value 'H5T_VLEN' not handled in switch [-Wswitch] libh5md.c:922:2: warning: enumeration value 'H5T_ARRAY' not handled in switch [-Wswitch] libh5md.c:922:2: warning: enumeration value 'H5T_NCLASSES' not handled in switch [-Wswitch] libh5md.c: In function 'h5md_get_all_infromation_about_property': libh5md.c:907:22: warning: 'dataset_id' may be used uninitialized in this function [-Wmaybe-uninitialized] 907 | int current_status=H5Dread(dataset_id, wanted_memory_datatype, memspace_id, dataspace_id, H5P_DEFAULT, data_out); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HDF5_CC= h5cc -shlib -Wall -Wuninitialized -std=c99 -pedantic -fPIC -shared -Wl,--no-undefined -L. libh5md.o -o libh5md.so -lm HDF5_CC= h5cc -shlib -Wall -Wuninitialized -std=c99 -pedantic -fPIC -shared -Wl,--no-undefined -L. h5mdplugin.o -o h5mdplugin.so -Wl,-rpath,'\$ORIGIN' -lh5md HDF5_CC= h5cc -shlib h5mdtest.c -o h5mdtest h5mdplugin.c -I/usr/local/lib/vmd/plugins/include -Wall -Wuninitialized -std=c99 -pedantic -fPIC -L. -Wl,-rpath,'\$ORIGIN' -lh5md $ ll 总用量 288 drwxrwxr-x 6 dechin dechin 4096 10月 26 16:24 ./ drwxrwxr-x 8 dechin dechin 4096 10月 26 15:58 ../ drwxrwxr-x 2 dechin dechin 4096 10月 26 15:58 cmake/ -rw-rw-r-- 1 dechin dechin 2133 10月 26 15:58 CMakeLists.txt -rw-rw-r-- 1 dechin dechin 3190 10月 26 15:58 'Documentation VMD parameters' drwxrwxr-x 8 dechin dechin 4096 10月 26 15:58 .git/ -rw-rw-r-- 1 dechin dechin 18 10月 26 15:58 .gitignore -rw-rw-r-- 1 dechin dechin 16210 10月 26 15:58 h5mdplugin.c -rw-rw-r-- 1 dechin dechin 17536 10月 26 16:24 h5mdplugin.o -rwxrwxr-x 1 dechin dechin 26456 10月 26 16:24 h5mdplugin.so* -rwxrwxr-x 1 dechin dechin 31872 10月 26 16:24 h5mdtest* -rw-rw-r-- 1 dechin dechin 5000 10月 26 15:58 h5mdtest.c -rw-rw-r-- 1 dechin dechin 6664 10月 26 16:24 h5mdtest.o -rw-rw-r-- 1 dechin dechin 45631 10月 26 15:58 libh5md.c -rw-rw-r-- 1 dechin dechin 4178 10月 26 15:58 libh5md.h -rw-rw-r-- 1 dechin dechin 31152 10月 26 ad0 16:24 libh5md.o -rwxrwxr-x 1 dechin dechin 40808 10月 26 16:24 libh5md.so* -rw-rw-r-- 1 dechin dechin 732 10月 26 15:58 LICENSE -rw-rw-r-- 1 dechin dechin 1300 10月 26 15:58 Makefile -rw-rw-r-- 1 dechin dechin 2624 10月 26 15:58 README.md drwxrwxr-x 2 dechin dechin 4096 10月 26 15:58 samples/ drwxrwxr-x 2 dechin dechin 4096 10月 26 15:58 tests/
此时我们发现编译构建成功,并且在当前的目录下生成了很多的so文件,这些动态链接库就是我们需要使用到的文件。接下来我们需要把这些动态链接文件拷贝到vmd的相应目录下,这个跟安装的位置有关系,比如博主的vmd是在local账号下安装的,vmd相关的库文件都在
/usr/local/lib/vmd/这个路径下。总之就是需要在本地电脑上找到vmd下的molfile这个文件夹,然后将刚才生成的so文件都拷贝到这个文件夹下即可:
$ sudo cp *.so /usr/local/lib/vmd/plugins/LINUXAMD64/molfile
拷贝完成后,再次启动vmd时hdf5的插件就已经被包含在其中,我们可以直接加载hdf5格式的坐标文件。
VMD-hdf5案例测试
在刚才下载下来的VMD-h5mdplugin库中的samples目录下,有一些可以用于vmd插件测试和演示的样例文件,这里我们展示一下基本的读取过程:
- 在VMD上新建一个分子,并且将一个样例文件加载到分子信息中:
- 配置展示的模型和模型参数,比如这里使用了球棍模型:
- 查看最终展示效果:
总结概要
VMD是一个分子动力学模拟领域常用的可视化软件,hdf5是量子化学领域常用的一个二进制文件存储格式,本文通过介绍VMD-h5mdplugin这个插件的安装和使用方法,进一步演示了如何在VMD上直接展示hdf5格式文件的分子构象。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/vmd-hdf5.html
作者ID:DechinPhy
更多原著文章请参考:https://www.cnblogs.com/dechinphy/
打赏专用链接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
- Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识
- caffe上使用hdf5格式文件以及回归(regression)问题
- Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识
- tiff/tfw, jpg/jpgw坐标文件的格式
- tiff/tfw, jpg/jpgw坐标文件的格式
- emacs如何以十六进制坐标格式显示二进制文件
- python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
- tiff/tfw, jpg/jpgw坐标文件的格式
- 目标检测坐标信息txt文件转Pascal VOC XML 格式(仅包括对角框正矩形标注)
- HDF5 文件格式简介
- caffe总结(十一)使用hdf5格式文件用于回归(regression)
- 读取坐标文件(指定格式文件)
- 已知经纬度坐标导入ArcMap生成shp格式文件
- ArcGIS教程:已知经纬度坐标导入ArcMap生成shp格式文件
- caffe上使用hdf5格式文件以及回归(regression)问题
- 【转】tiff/tfw, jpg/jpgw坐标文件的格式
- 摘自一个MILLION SONG DATASET里的一段读取基于HDF5文件格式的歌曲信息
- 已知经纬度坐标导入ArcMap生成shp格式文件
- arcgis 中利用txt坐标文件创建要素的办法,含txt文件详细格式~
- 利用Excel VBA将坐标点直接转换为谷歌地球的kml格式文件(ExcelToKml)