24小时热门版块排行榜    

查看: 4277  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zhuhongaaa

金虫 (正式写手)

[交流] 【转帖】【ZZ】使用xdrfile读取gromacs的trr和xtc文件 已有7人参与

xdrfile是gmx开发的一个用来读取trr文件和xtc文件的库,可以在gmx的主页上下载安装。安装不需要一共gmx的安装路径。
安装后生成一个trr2xtc可执行文件。可以简单的把trr文件转化问xtc文件来减小体积,节约空间。
更为主要的是我们可以利用xdrfile中的库自行编写程序读取gmx的trr文件和xtc文件,用于轨迹分析,相当方便。


xdrfile/include/xdrfile/目录下面有三个用C写的头文件,可以include到我们自己的C程序和C++程序中。
下面是一个读取trr文件的C程序示例:
/*
file name is
trr.c
*/
#include
#include
#include
int natoms,step,natom,read_return;
float time,lambda;
matrix box;
rvec *x,*v,*f;
XDRFILE *trr;
main ()
{
trr=xdrfile_open (“traj.trr”,”r”);
read_return=read_trr_natoms (“traj.trr”,&natoms);
x = calloc(natoms, sizeof(x[0]));
while (1)
{
read_return=read_trr (trr,natoms,&step,&time,box,lambda,x,v,f);
if (read_return!=0)
{
break;
}
for (natom=1;natom<=natoms;natom++)
{
printf (“%d %f %d %f %f %f\n”,step,time,natom,x[natom-1][0],x[natom-1][1],x[natom-1][2]);
}
}
xdrfile_close (trr);
}
~
~
~
可以用gcc 直接编译运行。编译的时候注意添加头文件的路径。
下面是用C++写的读取xtc文件的一个示例:
/*
file name is
xtc.cpp
*/
#include
extern “C”
{
#include
}
using namespace std;
int main (int argc,char * argv[])
{
char * filename;
int natoms,step;
filename=”traj.xtc”;
float time;
float p;
matrix box;
rvec *x;
XDRFILE *xtc;
xtc=xdrfile_open(filename,”r”);
int read_return=read_xtc_natoms(filename,&natoms);
x=(rvec * )calloc(natoms,sizeof(x[0]));
while(1)
{
read_return=read_xtc(xtc,natoms,&step,&time,box,x,&p);
if(read_return!=0)
{
break;
}
for(int natom=0;natom {
cout< }
}
xdrfile_close(xtc);
return 0;
}
~
可以用g++ 直接编译运行。编译的时候注意添加头文件的路径。
http://zhuhong.freetzi.com/wordpress/?p=57
有问题欢迎留言或mail。
转载请注明。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

分子模拟的主页http://varmilion.tk/
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhuhongaaa 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见