MD Analysis (以下简称mda) 是一款分子动力学后处理代码,具有优秀的后处理函数库,高效的处理速度,可并行的计算功能。通过mda可以读取LAMMPS的单个data、连续dump轨迹文件,做一些基本结构计算不是问题。但其对dump文件的读取仅限于id, type, x, y, z这几类。对于dump的不足,本人改动了一下源文件,支持读取dump的其他列的数据信息,需要的同学可以留言或邮件(yunai2384@163.com)。In addition, for beginner of molecular dynamics, ASE is more suggested.

一、MD Analysis 安装

MD Analysis相关网站见:
官方网站
官方文档

普通安装

(1) 从pip:

pip install --upgrade MDAnalysis
# pip install --upgrade MDAnalysisTests   # 安装测试数据

(2) 从Conda:

conda install -c conda-forge mdanalysis
# conda update mdanalysis # 升级
# conda install -c conda-forge MDAnalysisTests  # 安装测试数据

从源码安装:

# git clone https://github.com/MDAnalysis/mdanalysis.git  # 下载mda
git clone https://gitee.com/yunai9/mdanalysis.git # 我已备份至gitee,速度更快
cd mdanalysis/package/
pip install -r requirements.txt  --upgrade
python setup.py install

二、MD Analysis使用

mda支持二十多种文件格式,包括LAMMPS (dump, data格式),xyz格式,CHARMM,Gromacs (xtc, trr格式),AMBER相关格式,DL_Poly,MOL2,NAMD相关格式。而就我所知,支持的LAMMPS的dump格式中,对除了id type x y z 之外的列并不读取。之所以还要选择mda,主要是能够直接接触底层数据,并直接进行相关处理,包括近邻相关计算,结构分析等。
LAMMPS read and write info
基本使用方法:

读取文件

import MDAnalysis as mda
from MDAnalysis.lib import NeighborSearch
u = mda.Universe('lammps.data', atom_style='id type charge x y z imx imy imz')
# 选择原子种类
Type1 = u.select_atoms("type  1")
# Type1原子总数
nType1 = Type1.atoms.n_atoms
# 所搜Type1每个原子在截断半径2 A中的其他原子
for i in range(nType1):
    neAtom = ns.search(Type1.atoms[i], 2.0)
    # do something else
# 读取lammps dump轨迹文件
u = mda.Universe('lammps.data', format='LAMMPSDUMP')
# 对dump文件的每一帧进行处理
for ts in u.trajectory:
	# ts 中的选项和u中的选项有所区别,请注意
	# do something else
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐