使用CyFES对配体运动轨迹进行数据透视
技术背景
如果我们有一个蛋白质X和一个配体Y,那么可以对这个X+Y的体系跑一段长时间的分子动力学模拟,以观测这个体系在不同结合位点下的稳定性。类似于前面一篇博客中计算等高面的方法,我们可以计算轨迹的KDE函数,然后保存成Cube格式(高斯中用于保存电子轨道的一种格式)的文件。然后就可以通过可视化软件如VMD等,来加载蛋白和cube文件进行分析。
软件介绍与安装
CyFES是一款基于Python开发用户层,基于Cython开发链路层以及CUDA C++开发物理层Kernel函数的一个高性能开源FES计算软件。
目前功能还比较简单,仅支持三维分子运动轨迹的数据透视。安装支持源码和pip安装,pip安装方法如下:
$ python3 -m pip install cyfes --user --upgrade -i https://pypi.org/simple
之所以建议采取--user的策略,是因为很多环境中没有权限在site-packages路径下创建文件,会导致动态链接库缺失的问题,--user可以一定程度上规避这个问题。下载的时候国内的镜像源同步会有一定的延迟,如果需要及时的下载最新版本的CyFES,可以使用-i https://pypi.org/simple参数配置。安装成功后,可以使用如下指令确认CyFES是否安装成功:
$ python3 -m cyfes --help
python3 -m cyfes --help
usage: __main__.py [-h] [-i I] [-ic IC] [-ib IB] [-s S] [-e E] [-g G] [-o O]
[-no_bias NO_BIAS] [-f32 F32] [-sigma SIGMA]
optional arguments:
-h, --help show this help message and exit
-i I Set the input record file path.
-ic IC Set the cv index of input record file. Default: 0,1,2
-ib IB Set the bias index of input record file. Default: 3
-s S CV length. Default: None
-e E Edge length. Default: 1.0
-g G Grid numbers. Default: 10,10,10
-o O Set the output FES file path.
-no_bias NO_BIAS Do not use the bias from input file. Default: false
-f32 F32 Use float32. Default: false
-sigma SIGMA Sigma value when calculating FES. Default: 0.3
当然,也可以从CyFES-Gitee主页下载源码进行源码安装。安装完成后,可以执行一个python脚本确认一下动态链接库是否缺失的问题:
# check_dynamics.py
import os
import site
from pathlib import Path
site_path = Path(site.getsitepackages()[0])
site_file_path = site_path.parent.parent.parent / 'cyfes' / 'libcufes.so'
site_dynamics_path = str(site_file_path)
user_site_path = Path(site.USER_SITE)
user_file_path = user_site_path.parent.parent.parent / 'cyfes' / 'libcufes.so'
user_dynamics_path = str(user_file_path)
if not os.path.exists(site_dynamics_path) and not os.path.exists(user_dynamics_path):
print ('Check dynamics complete, no libcufes.so file founded!')
else:
print ('Installation of CyFES success!')
确认安装成功之后,我们可以开始使用CyFES进行轨迹数据透视。
轨迹输入
CyFES支持读取这样的一个轨迹文件xyz_bias.txt:
23.5578 33.8817 37.8341 0.000000
23.4752 33.7842 37.8489 0.882319
23.4557 33.7728 37.8236 1.544485
23.4979 33.6253 37.8524 1.952011
23.5502 33.6256 37.8981 2.140049
23.6389 33.6791 37.9141 1.437173
...
其中前三列表示轨迹的x、y、z坐标,最后一列表示对应坐标位置的偏置势bias,用于计算权重。在CyFES-2.6之后的版本中,可以支持不给定bias,那么默认就全部都是0。
CyFES终端指令
最简单的场景,我们可以使用这样一行简单的代码执行CyFES的计算:
$ python3 -m cyfes -i xyz_bias.txt -o z.cub
这样就可以根据轨迹文件生成一个可以用于可视化的cube格式文件。如果需要更多的一些配置,常用的有:
$ python3 -m cyfes -i xyz_bias.txt -o z.cub -e 5.0
表示边缘增加5A(这里注意单位是埃,而最终保存的cube格式文件会转为波尔bohr长度)的空隙。
$ python3 -m cyfes -i xyz_bias.txt -o z.cub -g 20,30,40
表示x、y、z方向的格点数量分别为20,30和40个格点。
$ python3 -m cyfes -i xyz_bias.txt -o z.cub -sigma 0.2
表示禁带宽度band width设置为0.2。屏幕打印输出的样式大致是这样的:
$ python3 -m cyfes -i xyz_bias.txt -e 5.0 -g 10,20,30 -sigma 0.1 -o z_x.cub
2024-08-19 09:34:26,304 [CyFES] Start to initialize parameters
2024-08-19 09:34:26,318 [CyFES] CV (1000, 3)
2024-08-19 09:34:26,318 [CyFES] Bias (1000,)
2024-08-19 09:34:26,319 [CyFES] Origin crd [16.0653 28.2584 32.4803]
2024-08-19 09:34:26,319 [CyFES] Final crd [29.4832 41.7948 47.3887]
2024-08-19 09:34:26,320 [CyFES] Grids (6000, 3)
2024-08-19 09:34:26,320 [CyFES] BandWidth [0.1 0.1 0.1]
2024-08-19 09:34:26,320 [CyFES] Start to calculate FES
2024-08-19 09:34:27,285 [CyFES] Writting FES into file /home/cy-fes/tests/z_x.cub
2024-08-19 09:34:27,306 [CyFES] Task complete :)
这里主要是记录一些参数和运行日志,最终的计算结果会按照Cube文件的格式输出到z_x.cub文件中,文件格式可以查阅下一个章节的介绍。
Cube输出
简单的说明一下我们这里生成的cube文件格式内容,大体如下:
Generated by CyFES
Total 1000000 grids
1 30.3589 53.4004 61.3785
100 0.256121 0 0
100 0 0.258383 0
100 0 0 0.284572
1 1.000000 43.1649 66.3195 75.6072
34.6304 34.1533 33.6897 33.2396 32.8028 32.3795
31.9696 31.5731 31.19 30.8203 30.464 30.121
29.7914 29.4751 29.1721 28.8823 28.6057 28.3422
28.0918 27.8543 27.6297 27.4177 27.2182 27.031
...
第一行是标题,第二行是格点数声明,第三行是原子数和原点坐标,第四行到第六行是x、y、z方向的格点数和偏移矢量。第七行是原子信息,这里我们直接在轨迹盒子的中心位置放了一个氢原子,第二列是核电荷数,后面三列是坐标。第八列开始是每一个格点的势能数值,每一行最多6个格点数据。
数据可视化
在此前的文章中我们介绍过关于VMD可视化软件的安装与使用,用户可以直接用VMD来对cub文件和原始的pdb文件做可视化。不过这里要推荐的是另外一个免安装和部署的工具:在线的molstar平台,在这里可以像VMD一样直接加载PDB格式的文件和Cub格式的轨道:
大家可以根据自己的使用习惯来选择相应的工具。这是两个效果对比图,首先是VMD生成的效果:
然后是molstar生成的效果:
得到的那个区域就是分子运动轨迹的数据透视图,可以一定程度上衡量区域自由能的相对大小。
总结概要
分子动力学模拟是一个以时间换空间的方法,那么在时间尺度上留下轨迹之后,如何把轨迹做一个静态的展现,正是数据透视所解决的问题。CyFES是一个开源的、基于GPU硬件加速的数据透视高性能计算工具,我们通过一个蛋白-配体相互作用的运动轨迹的示例,演示一下CyFES的基本使用方法。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/cyfes.html
作者ID:DechinPhy
更多原著文章:https://www.cnblogs.com/dechinphy/
请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
使用CyFES对配体运动轨迹进行数据透视的更多相关文章
- EXCEL 2010学习笔记 —— 数据透视表
今天整理一下EXCEL2010 数据透视表的课程笔记,数据透视表可以对多组数据进行统计和整理,是一种基本的数据可视化工具. 记录6个方面的总结: 1.创建数据透视表 2.更改数据透视表的汇总方式 3. ...
- 【转载】使用Pandas创建数据透视表
使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...
- VBA学习之关于数据透视表的应用
工作中很多地方需要同时处理多个数据表,而且用数据透视表进行排版,排序,计算字段,一个一个的做非常累,这里给出批量处理的方法. 学习VBA之前最好懂一点点VB的基础知识,因为里面的很多语法问题都是由VB ...
- SQL pivot 基本用法 行列转换 数据透视
SQL通过pivot进行行列转换 数据透视 可直接在sql server 运行 传统操作 和 pivot create table XKCl (name nchar(10) not null, 学科 ...
- EXCEL数据透视相关知识
要边看边总结要点:1.部门管理,标准化作业流程,控制生产经营过程,预知风险2.这一项内容,用一个工作薄三个SHEET表来完成.分类汇总表(可变,N个),源数据表(标准.规范.通用.简洁.正确),1.符 ...
- SQL-PIVOT 数据透视 行列转换
-- 数据透视 -- PIVOT: 行转列 SELECT * FROM ( SELECT N'张三' AS 姓名, N'语文' AS 课程,70 AS 分数 UNION SELECT ...
- 我们无法找到服务器加载工作簿的数据模型"的 SharePoint 网站,当您刷新 Excel 2013 工作簿中的数据透视表时出错
假定您使用 Analysis Services 源在 Microsoft Excel 2013 中创建数据透视表.将 Excel 工作簿上载到 Microsoft SharePoint 网站中.当您尝 ...
- 利用excel数据透视表实现快速统计相关数据
昨天ytkah在做数据报表时需要做一些具体统计数字:公司每天都有人申请铅笔.笔记本等一些文具用品,现在想要统计每天申请铅笔多少支.笔记本多少本,如下图所示,这个要如何实现呢? excel数据透视表怎么 ...
- 【转】关于C#使用Excel的数据透视表的例子
收到消息,下星期又有导出 Excel 报表的代码要写.心想,不就是 OleDb 先 CREATE 表, 然后 INSERT 么?都是体力活啊...... 结果拿到纸张的报表,我就悲剧了.报表的结构,像 ...
- delphi 控制 EXCEL 数据透视表
虽说报表多又难做,做报表相当容易. 做报表也可以偷懒的,超级实用又省事.只需要做一个报表,这个报表里面包括几乎所有的数据字段,然后将查询到的数据导出到 excel中,利用excel自带的“数据透视”功 ...
随机推荐
- 【读论文】LLaMA: Open and Efficient Foundation Language Models
论文:LLaMA: Open and Efficient Foundation Language Models 模型代码:https://github.com/facebookresearch/lla ...
- [Java SE] Java-文件系统-常用文件路径的获取方法
1 获取相对路径 /** * 获取相对路径 [推荐] * 使用Java提供的Path类和Paths类来获取相对路径. * 例如,假设有两个路径a和b,我们可以使用Path类的relativize()方 ...
- springboot实现异步调用demo
springboot实现异步调用 异步调用特点 异步调用在开发程序中被广泛应用,在异步任务中,主线程不需要阻塞等待异步任务的完成,而是可以继续处理其他请求. 异步调用的特点如下: 非阻塞:主线程在调用 ...
- QAnything AI开源的企业级本地知识库问答解决方案,致力于支持任意格式文件或数据库的问答
QAnything AI简介 QAnything ai是一个本地知识库问答系统,旨在支持多种文件格式和数据库,允许离线安装和使用.您可以简单地删除任何格式的任何本地存储文件,并获得准确.快速和可靠的答 ...
- 妙趣横生:利用Echarts实现SpreadJS引用从属关系的可视化魅力
最新技术资源(建议收藏) https://www.grapecity.com.cn/resources/ 在金融行业,我们经常会有审计审查的需求,对某个计算结果进行审查,但是这个计算结果可能依赖多个单 ...
- 解决方案 | AutoCAD 版本+版本号+受支持的 .NET SDK版本+.NET Framework版本
关于 Managed .NET 兼容性 Managed .NET 应用程序通常与扩展基于 AutoCAD 的产品的行为和功能的公司和第三方应用程序关联. 在移植到最新版本后,并非所有 .NET 应用程 ...
- 解决方案 | PPT右键复制文本时右键粘贴选项按钮为空白
1.问题 2.解决方法 随便复制一些文字,不要采用CRTL+V,而是采用右键粘贴方法到ppt中,选择纯文本的"A"符号. 之后再使用CTRL+C复制,CTRL+V即正常.(好像只能 ...
- git将本地代码提交到远程仓库
来源:https://blog.csdn.net/gaoying_blogs/article/details/53337112 将本地代码上传到远程仓库的时候,打开命令行窗口,进入到本地代码的文件夹. ...
- 在Windows系统中解决端口占用问题
在Windows系统中,你可以通过以下步骤查询并结束占用8001端口的进程: 查询占用8001端口的进程: 打开命令提示符(CMD)或者PowerShell,并执行以下命令: netstat -a ...
- ArkTS基础知识
[习题]ArkTS基础知识 及格分85/ 满分100 判断题 1. 循环渲染ForEach可以从数据源中迭代获取数据,并为每个数组项创建相应的组件. 正确(True)错误(False) 回答正确 ...