技术背景

如果我们有一个蛋白质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对配体运动轨迹进行数据透视的更多相关文章

  1. EXCEL 2010学习笔记 —— 数据透视表

    今天整理一下EXCEL2010 数据透视表的课程笔记,数据透视表可以对多组数据进行统计和整理,是一种基本的数据可视化工具. 记录6个方面的总结: 1.创建数据透视表 2.更改数据透视表的汇总方式 3. ...

  2. 【转载】使用Pandas创建数据透视表

    使用Pandas创建数据透视表 本文转载自:蓝鲸的网站分析笔记 原文链接:使用Pandas创建数据透视表 目录 pandas.pivot_table() 创建简单的数据透视表 增加一个行维度(inde ...

  3. VBA学习之关于数据透视表的应用

    工作中很多地方需要同时处理多个数据表,而且用数据透视表进行排版,排序,计算字段,一个一个的做非常累,这里给出批量处理的方法. 学习VBA之前最好懂一点点VB的基础知识,因为里面的很多语法问题都是由VB ...

  4. SQL pivot 基本用法 行列转换 数据透视

    SQL通过pivot进行行列转换 数据透视 可直接在sql server 运行 传统操作 和 pivot create table XKCl (name nchar(10) not null, 学科 ...

  5. EXCEL数据透视相关知识

    要边看边总结要点:1.部门管理,标准化作业流程,控制生产经营过程,预知风险2.这一项内容,用一个工作薄三个SHEET表来完成.分类汇总表(可变,N个),源数据表(标准.规范.通用.简洁.正确),1.符 ...

  6. SQL-PIVOT 数据透视 行列转换

    -- 数据透视 -- PIVOT: 行转列 SELECT * FROM (     SELECT N'张三' AS 姓名, N'语文' AS 课程,70 AS 分数 UNION     SELECT ...

  7. 我们无法找到服务器加载工作簿的数据模型"的 SharePoint 网站,当您刷新 Excel 2013 工作簿中的数据透视表时出错

    假定您使用 Analysis Services 源在 Microsoft Excel 2013 中创建数据透视表.将 Excel 工作簿上载到 Microsoft SharePoint 网站中.当您尝 ...

  8. 利用excel数据透视表实现快速统计相关数据

    昨天ytkah在做数据报表时需要做一些具体统计数字:公司每天都有人申请铅笔.笔记本等一些文具用品,现在想要统计每天申请铅笔多少支.笔记本多少本,如下图所示,这个要如何实现呢? excel数据透视表怎么 ...

  9. 【转】关于C#使用Excel的数据透视表的例子

    收到消息,下星期又有导出 Excel 报表的代码要写.心想,不就是 OleDb 先 CREATE 表, 然后 INSERT 么?都是体力活啊...... 结果拿到纸张的报表,我就悲剧了.报表的结构,像 ...

  10. delphi 控制 EXCEL 数据透视表

    虽说报表多又难做,做报表相当容易. 做报表也可以偷懒的,超级实用又省事.只需要做一个报表,这个报表里面包括几乎所有的数据字段,然后将查询到的数据导出到 excel中,利用excel自带的“数据透视”功 ...

随机推荐

  1. Windows无法访问vsftpd

    在搭建vsftpd的时候注意放行相应的服务,注意,是服务,不是端口!! 如果你简单的--add-port放行20和21端口,那么恭喜你,就是访问不了. 正确的方法是--add-service=ftp, ...

  2. Django-缓存、信号与序列化

    缓存 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作 ...

  3. Swoole v6 能否让 PHP 再次伟大?

    大家好,我是码农先森. 现状 传统的 PHP-FPM 也是多进程模型的的运行方式,但每个进程只能处理完当前请求,才能接收下一个请求.而且对于 PHP 脚本来说,只是接收请求和响应请求,并不参与网络通信 ...

  4. PHP接入苹果支付

    Ios苹果支付流程: 客户端先从苹果获取内购Id. 客户端将内购id,金额.用户id等传给服务端获取一个自己服务端生成的订单号. 客户端向苹果发起支付. 支付成功后,客户端从本地拿支付凭证.将支付凭证 ...

  5. 从 Dict 转到 Dataclass

    从 dataclass 转到 dict 可以用 asdict 函数 , 反向转换的时候 就比较困难. 不用外部的包的情况下, 提供一种思路. def mask(v, d): #v 是 dict 数据, ...

  6. Http基础协议

    浏览器请求方法 http1.0定义了三种: GET: 向服务器获取资源,比如常见的查询请求 POST: 向服务器提交数据而发送的请求 Head: 和get类似,返回的响应中没有具体的内容,用于获取报头 ...

  7. 什么情况下会使用array.reduce函数

    当业务需要从一个数组里求出某项的和的时候. 1.for遍历 var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] var resulte = 0; for (let inde ...

  8. MongoDB分片+副本集高可用集群的启停步骤

    ■■ 集群启动步骤 1.先启动各节点的 config server mongod -f ${MongoDir}/conf/config.conf 2.再启动各节点的 shard server mong ...

  9. leetcode简单(数组,字符串,链表):[1, 9, 13, 14, 20, 21, 26, 27, 35, 58]

    目录 1. 两数之和 9. 回文数 13. 罗马数字转整数 14. 最长公共前缀 20. 有效的括号 21. 合并两个有序链表 26. 删除有序数组中的重复项 27. 移除元素 35. 搜索插入位置 ...

  10. [oeasy]python0041_teletype历史_博多码_shift_capslock_字符数字切换_gear

    teletypewriter 历史 回忆上次内容 上次见到了一个真的机械打字机 感受到了蒸汽朋克的时代背景 上上次区分了一些概念 terminal终端,电脑连线最终的端点 TeleTYpewriter ...