Cython Based Fast FES Calculation Toolkit.
Project description
CyFES:GPU加速高性能数据透视工具
介绍
这是一个使用Cython+CUDA+Python编写的高性能FES计算软件,可以用于加速数据透视的计算:
$$ E(x)=-kT\log\left(\frac{\sum_{j=1}^Ne^{\frac{V_j}{kT}}e^{-\frac{(x-n_j)^2}{2}}}{N\Pi_i\sqrt{2\pi}\sigma_i}\right) $$
安装
pip安装
本项目可以直接使用pip进行安装:
$ python3 -m pip install cyfes --user --upgrade -i https://pypi.org/simple
源码安装
首先将本仓库clone到本地:
$ git clone https://gitee.com/dechin/cy-fes.git && cd cy-fes/
然后直接运行setup.py
进行安装:
$ python3 -m pip install .
安装测试
在本仓库的test路径下存放了一个测试用例,用于测试cyfes是否安装成功。用户可以直接简单的运行:
$ python3 tests/test_path_fes.py
[0.00902854 0. 0.09338432 0.02065182]
[0.03961432 0. 0.01514649 0.02259541]
[0.00129778 0. 0.02988457 0.0869869 ]
[0.01712827 0.01378975 0. 0.02229569]
[0.0114323 0.03356422 0. 0.0328276 ]
若输出为多个数组,则表示安装成功。也可以使用单元测试运行,但是这需要在本地先安装pytest
:
$ python3 -m pip install pytest
然后直接在仓库的根目录下运行:
$ py.test
============================ test session starts =============================
platform linux -- Python 3.7.5, pytest-7.4.4, pluggy-1.2.0
rootdir: /home/cy-fes
collected 5 items
tests/test_path_fes.py ..... [100%]
============================= 5 passed in 14.23s =============================
没有报错,则表示安装成功。
使用方法
在安装成功后,可以直接在Python脚本中调用:
import numpy as np
from cyfes import PathFES
np.random.seed(0)
def test_path_fes():
atoms = 4
cvs = 10000
crd = np.random.random((atoms, 3))
cv = np.random.random((cvs, 3))
bw = np.random.random(3)
bias = np.random.random(cvs)-1
fes = np.asarray(PathFES(crd, cv, bw, bias))
print (fes)
if __name__ == '__main__':
test_path_fes()
还可以使用命令行模式:
$ 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]
[-device DEVICE]
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
-device DEVICE Set the device ids separated with commas. Default: 0
假如我们有一个三维的CV,那么最简单的运行方式为:
$ python3 -m cyfes -i /home/Data/xyz_bias.txt -o ./work_dir/z.cub
那么最后产生的文件内容为:
$ head -n 10 work_dir/z.cub
Generated by CyFES
Total 1000 grids
1 21.6622 19.8498 42.3652
10 6.40465 0 0
10 0 7.02147 0
10 0 0 6.33118
1 1.000000 53.6854 54.9571 74.0211
450 450 450 450 450 450
450 450 450 450 450 450
450 450 70.0855 70.848 450 450
该cube格式的文件可以在支持的软件(如VMD)中进行可视化操作。
已知问题
- 使用numpy==1.22.2的版本中会出现
ImportError: numpy.core.multiarray failed to import
问题。解决方案:升级numpy版本:python3 -m pip install numpy --upgrade
。 - 执行
python3 -m cyfes --help
报错ModuleNotFoundError: No module named 'cyfes.wrapper'
,这是因为执行命令的目录下存在名为cyfes
的文件夹,需要切换执行命令的位置。 - 使用cyfes出现
Segmentation fault
段错误问题,是因为找不到编译好的动态链接库文件,大概率是系统环境下权限不足,没有site路径的权限,可以使用如下脚本进行检查:
# 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!')
使用python3运行该脚本,即可判断动态链接库是否被正确安装。
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file CyFES-2.9.tar.gz
.
File metadata
- Download URL: CyFES-2.9.tar.gz
- Upload date:
- Size: 346.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d37230a1f172c102c6d5ddcd2ae6ff4033278f5acb55db980ed3fc4d3fce4b1 |
|
MD5 | 0fd2d761808b410e2732b3c553ce2e8b |
|
BLAKE2b-256 | c7eac2b77907c4afa60d2353a0de912130f29efa8c878e4bfd98bb586f862268 |
File details
Details for the file CyFES-2.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: CyFES-2.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 597462048ff8a0b1ad744c4e5207e5891e617ae510cbf12ee17be3f6f1544dd8 |
|
MD5 | 7eb16b40508ec3b4642ceccc022e496f |
|
BLAKE2b-256 | 34d07d388adc6e896d46bdf2d1ca87435ae40eca1cf86a6b201ebab8abc20444 |
File details
Details for the file CyFES-2.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: CyFES-2.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e39f1329bff9ce20b1c89a6f66e7a09fb87f6259dd63cb3da169277a0ae008a7 |
|
MD5 | 3b12a0a949227f0a7df85ee8b83ea679 |
|
BLAKE2b-256 | b39b8657987c91704683e5bbec2bae1f589fe695581f4fe3d90b398b2c97361e |
File details
Details for the file CyFES-2.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: CyFES-2.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d7f10773eadede28b6c198f0836fb5893c1f2932deeabdd8669f800aaf62f187 |
|
MD5 | 9c9522c7a97bce97193e3794f37a6298 |
|
BLAKE2b-256 | 654052ea73070061825f5ebe2284225a7b87c84a2d1db25131254293763ae20a |
File details
Details for the file CyFES-2.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: CyFES-2.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21460ffd7c9522da58c42bb64f72830eea227c54f72044cdf35de9f07fc1c917 |
|
MD5 | 6290a3c31eef662362ecc611df2a1b72 |
|
BLAKE2b-256 | 698646d20fd417dacba593629cba17787bb528cf759db830dcedf09eda9d599e |