24小时热门版块排行榜    

查看: 7479  |  回复: 18
【奖励】 本帖被评价15次,作者量化新手增加金币 12

量化新手

新虫 (正式写手)


[资源] xtd转换为xyz坐标,可使用vmd打开

ms的轨迹文件xtd转成vmd等可读的xyz文件脚本
http://hi.baidu.com/sobereva/blo ... 04ddfc037fc1.html#0
引用回帖:
将Material Studio的xtd轨迹文件导出为xyz轨迹文件的方法
文/Sobereva  First release: 2012-May-23



Material Studio(MS)的xtd文件包含了原子或者粗理化模拟中的bead的轨迹信息。这是MS的私有格式,为了能将轨迹放到其它程序,比如VMD中做更灵活细致的分析,需要转换为通用轨迹格式。xtd文件内含的实际轨迹信息实际上储存在同目录下的同名的.trj隐藏文件里(二进制文件),一种转换成通用格式的方法是利用MS自带的trj2ascii.exe程序将.trj文件内容转换成普通文本文件,然后再写个程序将其转换成其它轨迹格式。但这样步骤稍微麻烦些。

另一种做法是直接利用MS内部支持的Perl脚本,循环每一帧每一个原子或Bead,将其坐标属性写入到外部文本文件。比如按照常见的xyz坐标格式来写,就可以生成xyz轨迹了,可以被VMD等程序直接载入。

http://chembytes.wikidot.com/materials-studio上有人提供了现成的这样的Perl脚本将原子轨迹转换成xyz轨迹。我进一步对其进行了修改使之用起来更方便些,另外加入了对周期性体系的支持。脚本如下所示

#!perl
#**********************************************************
#*                                                        *
#*     XTD2XYZ - Convert XTD files into XYZ ormat        *
#*                                                        *
#**********************************************************
# Version: 0.1
# Author: Andrea Minoia
# Date: 08/09/2010
#
# Convert MS trajectory xtd file into xYZ trajectory file.
# Backup of files that are about to be overwritten is managed
# by MS. The most recent file is that with higher index number (N)
# The script has to be in the same directory of the
# structure to modify and the user has to update the
# variable $doc (line 31) according to the name of the
# file containing the trajectory.
# The xmol trajectory is stored in trj.txt file and it is not
# possible to rename the file within MS, nor it is possible to
# automatically export it as xyz or car file. You should manage
# the new trajectory manually for further use (e.g. VMD)
#
# Modificator: Sobereva ()
# Date: 2012-May-23
# The range of the frames to be outputted can be altered by line 49 and 51

use strict;
use MaterialsScript qw(:all);

#open the multiframe trajectory structure file or die
my $doc = $Documents{"./benzene.xtd"};

if (!$doc) {die "no document";}

my $trajectory = $doc->Trajectory;

if ($trajectory->NumFrames>1) {

    print "Found ".$trajectory->NumFrames." frames in the trajectory\n";
    # Open new xmol trajectory file
    my $xmolFile=Documents->New("trj.txt";
   
    #get atoms in the structure
#    my $atoms = $doc->Atoms;
    my $atoms = $doc->DisplayRange->Atoms;
    my ;

    # loops over the frames
    my $framebegin=1;
    my $frameend=$trajectory->NumFrames;
#    my $frameend=10;
    for (my $frame=$framebegin; $frame<=$frameend; ++$frame){
        $trajectory->CurrentFrame = $frame;
        #write header xyz
        $xmolFile->Append(sprintf "%i \n", $Natoms);
        $xmolFile->Append(sprintf "%s %i \n", "Frame",$frame);
        foreach my $atom (@$atoms) {
            # write atom symbol and x-y-z- coordinates
            $xmolFile->Append(sprintf "%s %f  %f  %f \n",$atom->ElementSymbol, $atom->X, $atom->Y, $atom->Z);
        }   
    }
    #close trajectory file
    $xmolFile->Close;
}
else {
    print "The " . $doc->Name . " is not a multiframe trajectory file \n";
}

使用时先将这些内容复制到一个文本文件里,后缀名改为.pl。然后在MS里将这个.pl加入到项目中。要转换哪个目录下的xtd文件就把这pl文件挪到哪个目录中,并且把my $doc = $Documents{"./benzene.xtd"}; 当中的文件名改成要转换的文件名。之后,保持此脚本文件窗口处于激活状态,选tools-scripting-debug(或者直接按F5,或者按工具栏的蓝色三角按钮)就开始对xtd文件进行转换,转换结束后在当前目录下会输出trj.txt文件。将其后缀改为.xyz之后就能被VMD等程序直接读取了。

debug模式对于大体系、帧数较多的轨迹转换起来颇慢,可以用tools-scripting-Run on server模式来运行,这样转换速度明显快得多,trj.txt将会生成到新的目录,当前目录下的其它文件也会被强行复制过去一份。

此脚本默认转换所有帧。如果想转换指定帧数范围,就把my $framebegin=1;和my $frameend=10;改成自定的起止帧号就行了,需要先将my $frameend=10;前面的注释去掉。

如果是周期性体系,那么在MS当中看起来轨迹是什么样转换过去就是什么样。比如,如果在display style-lattice中在某个方向上多显示一个周期,那么转换出的轨迹在相应方向上也会多出一倍原子。Default、In-Cell、Original的显示模式下转换出的原子坐标也会相应地可能有所不同。

上面的这个名为xtd2xyz脚本只能转换全原子模拟的轨迹,如Forcite的xtd轨迹,却不能转换粗理化模拟的轨迹,如Mesocite的以bead描述粒子的xtd轨迹。我将之修改成下面的xtdbead2xyz脚本,专门用来转换粗理化模拟的轨迹(但不能转换全原子的),用法同前。

#!perl
# XTDbead2XYZ - Convert the XTD files containing beads into XYZ format
# Creator: Sobereva ()
# Date:    2012-May-23

use strict;
use MaterialsScript qw(:all);

#open the multiframe trajectory structure file or die
my $doc = $Documents{"./bilayer.xtd"};

if (!$doc) {die "no document";}

my $trajectory = $doc->Trajectory;

if ($trajectory->NumFrames>1) {

    print "Found ".$trajectory->NumFrames." frames in the trajectory\n";
    # Open new xmol trajectory file
    my $xmolFile=Documents->New("trj.txt";
   
    #get atoms in the structure
    my $Beads = $doc->DisplayRange->Beads;
    my ;

    # loops over the frames
    my $framebegin=1;
    my $frameend=$trajectory->NumFrames;
#    my $frameend=10;
    for (my $frame=$framebegin; $frame<=$frameend; ++$frame){
        $trajectory->CurrentFrame = $frame;
        #write header xyz
        $xmolFile->Append(sprintf "%i \n", $NBeads);
        $xmolFile->Append(sprintf "%s %i \n", "Frame",$frame);
        foreach my $Bead (@$Beads) {
            # write atom symbol and x-y-z- coordinates
            $xmolFile->Append(sprintf "%s %f  %f  %f \n",$Bead->Name, $Bead->X, $Bead->Y, $Bead->Z);
        }   
    }
    #close trajectory file
    $xmolFile->Close;
}
else {
    print "The " . $doc->Name . " is not a multiframe trajectory file \n";
}


这两个脚本文件也可以从此处下载:http://dl.dbank.com/c0830hbbpr


转换说明出处
http://www.mdbbs.org/viewthread.php?tid=35210
引用回帖:
MS支持客户/服务器结构,用户即使在本地机器建模并提交计算任务,MS也会遵循这个架构,只是把任务提交给本地服务网关而已。
这个结构没有什么稀奇,但是如果经常提交非本地任务的话,经常会出现异常。比如,客户端中止连接或者网络故障,再次打开客户端,有时会无法成功链接远端服务器,造成不能自动回传计算结果。MS帮助说明用户可以自己手工下载结果文件,没有下载也没有存档的计算结果都位于服务器网关目录下,即your MS installation folder\Gateway\root_default\dsd\jobs\下面,文件夹的名称就是任务描述(通常为系统自动分配)。你可以把整个文件夹复制到你本地机器上,可以用MS打开。
根据计算的模块不同,你可能会看到his或者arc文件,他们都是轨迹记录文件,包含位置,速度以及其他体系性质随时间演化的历史。但是你会发现,MS有的模块不能直接处理这些文件。比如,Forcite模块可以分析很多轨迹文件性质,例如,你想得到体系压强随时间的变化,Forcite可以分析。不幸的是Forcite只支持MS本地轨迹文件格式xtd。 帮助文档说明,Forcite还可以分析his和arc格式,但是即使你激活了当前窗口为his动画窗口,Forcite的分析功能仍然是禁用的。
网上搜索相关信息未果。其实解决办法很简单:
1. 在MS中打开或导入his或arc文件;
2. 点击另存为,把his或arc文件存为MS的xtd格式。如果你把xtd存到和his相同的目录,系统会提示你不能复制关联的his文件。你只要换个目录存储就好了。
3. 把存好的xtd(也许包括his)文件移动到原来his或arc文件所在的目录,以后在MS中打开这个xtd,系统会自动调用相关的his或arc。
4. 在xtd为激活窗口的条件下,打开Forcite分析对话框,你会发现所有的分析功能都激活了。
基本的原理是,MS本地xtd格式实际上是一个XML文档,里面仅规定了分子结构和属性列表,真正的历史信息都在与之同名的his或者arc文件里面。真想不通为什么Accelrys不让所有模块直接支持多种轨迹文件格式,非要xtd做个中介!

当只有his时,也可将his-xtd-xyz,看上帖就可以
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : xtd2xyz.pl
  • 2012-06-25 11:31:14, 2.18 K
  • 附件 2 : xtd-xyz.pl
  • 2012-06-25 11:31:43, 2.39 K

» 收录本帖的淘帖专辑推荐

分子动力学-初级问题资源 麦子专属

» 猜你喜欢

» 本主题相关商家推荐: (我也要在这里推广)

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

dying999

铁虫 (小有名气)


★★★★★ 五星级,优秀推荐

我为什么不行的?得到的trj文件是空的,错误原因:
Cannot operate upon infinite SymmetrySystem (function/property "Atoms" at -e line 42
3楼2015-03-17 16:33:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shyt007

新虫 (初入文坛)


引用回帖:
3楼: Originally posted by dying999 at 2015-03-17 16:33:28
我为什么不行的?得到的trj文件是空的,错误原因:
Cannot operate upon infinite SymmetrySystem (function/property "Atoms" at -e line 42

我的也是,楼主知道原因吗?
14楼2016-11-08 16:50:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

448112596

新虫 (初入文坛)


★★★★★ 五星级,优秀推荐

正好需要啊~~楼主好人呢!!
2楼2014-04-16 11:12:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

oudegeshen

银虫 (小有名气)


顶一下,感谢分享!
爱死楼主了 爱死写脚本的人了
12楼2015-12-31 06:46:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jugengfans

金虫 (正式写手)


★★★★★ 五星级,优秀推荐

正在学perl 不过discover没了真是麻烦,.his 和.car以前可以直接用excel打开的。
13楼2016-01-19 04:19:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

799778539

新虫 (初入文坛)


★★★★★ 五星级,优秀推荐

顶一下,感谢分享!nice
15楼2016-12-26 22:55:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
简单回复
yaokara4楼
2015-04-14 23:01   回复  
五星好评  顶一下,感谢分享!
2015-04-20 13:59   回复  
五星好评  顶一下,感谢分享!
2015-04-20 14:01   回复  
顶一下,感谢分享!
2015-04-24 11:12   回复  
五星好评  顶一下,感谢分享!
2015-07-20 15:41   回复  
五星好评  顶一下,感谢分享!
赵红霞9楼
2015-07-22 10:30   回复  
五星好评  顶一下,感谢分享!
sunday32510楼
2015-09-07 15:22   回复  
五星好评  顶一下,感谢分享!
oudegeshen11楼
2015-12-31 06:29   回复  
五星好评  顶一下,感谢分享!
2017-01-19 10:02   回复  
五星好评  顶一下,感谢分享!
awmc200817楼
2017-01-21 11:16   回复  
五星好评  顶一下,感谢分享!
ysu00718楼
2017-02-15 12:55   回复  
五星好评  顶一下,感谢分享!
shuang022019楼
2017-05-04 10:52   回复  
五星好评  顶一下,感谢分享!
相关版块跳转 我要订阅楼主 量化新手 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见