• 在VMD上可视化hdf5格式的分子轨迹文件


    技术背景

    在处理分子动力学模拟的数据时,不可避免的会遇到众多的大轨迹文件。因此以什么样的格式来存储这些庞大的轨迹数据,也是一个在分子动力学模拟软件设计初期就应该妥善考虑的问题。现有的比较常见的方式,大致可以分为存成明文的和存成二进制的两种方式。这两种方式各有优劣,明文存储可读性较好,二进制文件压缩率较好,不会占用太大的空间。又因为我们也不会经常性的去打开轨迹文件一个一个的检索,因此二进制文件是一个更好的存储格式选项。如果不仅仅限于分子动力学模拟的领域,在其他数据领域经常用的格式有npz等。而经过各种格式的对比之后,发现hdf5格式是一种非常适合用来存储分子动力学轨迹的文件,其原因主要有:

    1. 层级结构,可读性相对较好,有silx view这样轻量级的软件可以直接高效读取hdf5文件的内容;
    2. 压缩率高,存储下来的文件大小远小于csv等明文数据格式;
    3. 支持数据帧读取,有很多高效的数据处理软件如vaex专门针对hdf5格式的文件读、写、可视化等进行了优化;
    4. 在传统量子化学领域,hdf5格式的文件就得到了大量的使用,在分子动力学中使用hdf5格式有向上兼容的一层含义。

    在确定需要选择hdf5格式的文件作为分子动力学轨迹的存储格式之后,我们需要考虑下一步如何在已有的可视化软件,如VMD中,去展示hdf5格式的轨迹文件。有一个开源软件叫VMD-h5mdplugin专门支持了在VMD上显示hdf5格式的分子轨迹文件。但是原版的软件有几个缺陷:

    1. 直接加载的hdf5格式的文件,无法区分原子大小,显示的原子都一样大;
    2. 不能支持NewCartoon等常用的蛋白结构显示方法;

    为此,来自深圳湾实验室的杨奕老师单独对该插件进行了改进优化,Fork的仓库地址为:VMD-h5mdplugin,接下来我们看下如何安装与使用该插件。

    源码安装

    首先我们需要将Gitee代码仓上的代码clone下来:

    $ git clone https://gitee.com/helloyesterday/VMD-h5mdplugin.git 正克隆到 'VMD-h5mdplugin'... remote: Enumerating objects: 523, done. remote: Counting objects: 100% (523/523), done. remote: Compressing objects: 100% (203/203), done. remote: Total 523 (delta 323), reused 516 (delta 316), pack-reused 0 接收对象中: 100% (523/523), 1.20 MiB | 296.00 KiB/s, 完成. 处理 delta 中: 100% (323/323), 完成.

    然后进入该仓库目录:

    $ cd VMD-h5mdplugin/ $ ll 总用量 132 drwxrwxr-x 6 dechin dechin 4096 8 4 14:37 ./ drwxrwxr-x 14 dechin dechin 4096 8 4 14:37 ../ drwxrwxr-x 2 dechin dechin 4096 8 4 14:37 cmake/ -rw-rw-r-- 1 dechin dechin 2133 8 4 14:37 CMakeLists.txt -rw-rw-r-- 1 dechin dechin 3190 8 4 14:37 'Documentation VMD parameters' drwxrwxr-x 8 dechin dechin 4096 8 4 14:37 .git/ -rw-rw-r-- 1 dechin dechin 18 8 4 14:37 .gitignore -rw-rw-r-- 1 dechin dechin 18006 8 4 14:37 h5mdplugin.c -rw-rw-r-- 1 dechin dechin 5001 8 4 14:37 h5mdtest.c -rw-rw-r-- 1 dechin dechin 48343 8 4 14:37 libh5md.c -rw-rw-r-- 1 dechin dechin 4267 8 4 14:37 libh5md.h -rw-rw-r-- 1 dechin dechin 732 8 4 14:37 LICENSE -rw-rw-r-- 1 dechin dechin 1582 8 4 14:37 Makefile -rw-rw-r-- 1 dechin dechin 2624 8 4 14:37 README.md drwxrwxr-x 2 dechin dechin 4096 8 4 14:37 samples/ drwxrwxr-x 2 dechin dechin 4096 8 4 14:37 tests/

    编译构建前,我们最好先执行一下make clean,然后直接sudo make install即可:

    $ make clean rm -f h5mdplugin.so rm -f h5mdtest rm -f libh5md.so rm -f *.o rm -f *~ make -C tests clean make[1]: 进入目录“/home/dechin/projects/gitee/VMD-h5mdplugin/tests” rm -f *~ rm -f libh5md_unittest rm -f -rf samples rm -f *.o make[1]: 离开目录“/home/dechin/projects/gitee/VMD-h5mdplugin/tests” $ sudo make install HDF5_CC=gcc h5cc -shlib -Wall -Wuninitialized -std=c99 -O3 -pedantic -fPIC -I/usr/local/lib/vmd/plugins/include -I/usr/include -I/usr/include/hdf5/serial -c -o h5mdplugin.o h5mdplugin.c HDF5_CC=gcc h5cc -shlib -Wall -Wuninitialized -std=c99 -O3 -pedantic -fPIC -I/usr/local/lib/vmd/plugins/include -I/usr/include -I/usr/include/hdf5/serial -c -o libh5md.o libh5md.c ... libh5md.c: In function ‘h5md_get_all_infromation_about_property’: libh5md.c:986:7: warning: ‘dataset_id’ may be used uninitialized in this function [-Wmaybe-uninitialized] int current_status=H5Dread(dataset_id, wanted_memory_datatype, memspace_id, dataspace_id, H5P_DEFAULT, data_out); ^~~~~~~~~~~~~~ HDF5_CC=gcc h5cc -shlib -Wall -Wuninitialized -std=c99 -O3 -pedantic -fPIC -shared -Wl,--no-undefined -L/usr/lib/x86_64-linux-gnu/hdf5/serial -L. libh5md.o -o libh5md.so -lhdf5_hl -lhdf5 -lm HDF5_CC=gcc h5cc -shlib -Wall -Wuninitialized -std=c99 -O3 -pedantic -fPIC -shared -Wl,--no-undefined -L/usr/lib/x86_64-linux-gnu/hdf5/serial -L. h5mdplugin.o -o h5mdplugin.so -lhdf5_hl -lhdf5 -Wl,-rpath,/home/dechin/projects/gitee/VMD-h5mdplugin -lh5md cp h5mdplugin.so /usr/local/lib/vmd/plugins/LINUXAMD64/molfile/

    编译成功的话,会在当前目录下生成一个名为h5mdplugin.so的文件,然后Makefile会自动将其拷贝到VMD的molfile目录下,如果安装过程中发现拷贝的路径与自己安装VMD的路径不一致,可以手动修改Makefile或者是手动拷贝过去,都是可以的。

    效果展示

    安装完成后,让我们来看看效果:

    感兴趣的童鞋可以通过该链接下载文件到本地测试一下,下载解压之后,直接用vmd xxx.h5md即可(这里的h5md格式本质上还是hdf5,只是在名称上稍作调整,便于区分不同的使用场景)。

    总结概要

    相比于明文存储和传统的一些数据存储方法,HDF5格式的文件非常适合用于存储分子动力学模拟过程中产生的庞大轨迹文件,不仅有良好的可读性,还有非常优秀的压缩率,使得存储下来的轨迹文件不至于太大。而相应的,我们也需要一些配套的可视化软件,用来展示HDF5文件中存储的内容。本文所介绍的改进版的VMD-h5mdplugin插件,可以在VMD中直接展示HDF5的分子运动轨迹,并给出了相应的案例。

    版权声明

    本文首发链接为:https://www.cnblogs.com/dechinphy/p/h5md.html

    作者ID:DechinPhy

    更多原著文章请参考:https://www.cnblogs.com/dechinphy/

    打赏专用链接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

    腾讯云专栏同步:https://cloud.tencent.com/developer/column/91958

    CSDN同步链接:https://blog.csdn.net/baidu_37157624?spm=1008.2028.3001.5343

    51CTO同步链接:https://blog.51cto.com/u_15561675


    __EOF__

    本文作者Dechin
    本文链接https://www.cnblogs.com/dechinphy/p/h5md.html
    关于博主:评论和私信会在第一时间回复。或者直接私信我。
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
  • 相关阅读:
    鸿蒙开发(九)UI实战 - 线性布局实现登录界面
    Qt界面实现中英文切换
    Windows系统提示“telnet不是内部或外部命令,也不是可运行的程序或批处理文件”怎么办
    开发平台模块化重构
    揭开 Amazon Bedrock 的神秘面纱 | 基础篇
    OpenCv for java 人脸识别(提供源代码)
    每日OJ题_剑指offer数组篇
    金仓数据库KingbaseES客户端编程接口指南-ado.net(14. 示例)
    Pandas:如何让你的代码性能飙升
    Java面向对象高级
  • 原文地址:https://www.cnblogs.com/dechinphy/p/h5md.html