之前写过一篇关于计算分子间作用能的文章,那如何计算轨迹的分子间相互作用能呢?此时,需要利用perl脚本进行计算。

MS的help已经给出了计算单个xsd文件相互作用能的脚本,我们需要做的就是将它进一步优化,用于轨迹文件分子间作用能的计算。主要思想包括以下几个部分:(1)提取各个Layer,用于后面的计算(2)计算各个Layer能量及总能量(3)采用循环语句,循环(1)(2)步

1 创建列表 这是所有工作之前的准备工作,需要创建一个列表存储layer和计算数据

my $doc = $Documents{"Layer.xtd"};
my $newStudyTable = Documents->New("InteractionEnergy.std");
my $calcSheet = $newStudyTable->ActiveSheet;
# 创建列表抬头
$calcSheet->ColumnHeading(0) = "Cell";
$calcSheet->ColumnHeading(1) = "Total Energy of Cell";
$calcSheet->ColumnHeading(2) = "layer1";
$calcSheet->ColumnHeading(3) = "Energy of layer1";
$calcSheet->ColumnHeading(4) = "layer2";
$calcSheet->ColumnHeading(5) = "Energy of layer2";

2 提取各个Layer

my $layer1Doc = Documents->New("bottom.xsd");
my $layer2Doc = Documents->New("top.xsd");$allDoc->CopyFrom($doc);
$layer1Doc->CopyFrom($doc);
$layer1Doc->UnitCell->Sets("Layer 2")->Atoms->Delete;
$layer2Doc->CopyFrom($doc);
$layer2Doc->UnitCell->Sets("Layer 1")->Atoms->Delete; #取消所有原子的固定
my $atoms = $allDoc->UnitCell->Atoms;
$atoms->Unfix("XYZ");
my $atoms = $layer1Doc->UnitCell->Atoms;
$atoms->Unfix("XYZ");  #将结构放到表格对应的位置
$calcSheet->Cell($counter-1,0) = $allDoc;
$calcSheet->Cell($counter-1,2) = $layer1Doc;
$calcSheet->Cell($counter-1,4) = $layer2Doc;

3 能量计算 首先是基本参数设置,然后进行计算。其中,由于有一步是删除计算后的.xsd文件,这是因为计算过程中会产生大量的过程文件,这样可以防止内存不够。

#首先是forcite的设置,这一步你可以直接打开forcite,设置完所有选项后粘贴过来
my $forcite = Modules->Forcite;
$forcite->ChangeSettings(Settings(Quality => "Fine",CurrentForcefield => "COMPASS"));#计算每个layer的能量及总能量
$forcite->Energy->Run($allDoc);
$calcSheet->Cell($counter-1, 1) = $allDoc->PotentialEnergy;
$forcite->Energy->Run($layer1Doc);
$calcSheet->Cell($counter-1, 3) = $layer1Doc->PotentialEnergy;
$forcite->Energy->Run($layer2Doc);
$calcSheet->Cell($counter-1, 5) = $layer2Doc->PotentialEnergy; $calcSheet->Cell($counter-1,0) = $allDoc-> UnitCell->Atoms->Delete;
$calcSheet->Cell($counter-1,2) = $layer1Doc-> UnitCell->Atoms->Delete;
$calcSheet->Cell($counter-1,4) = $layer2Doc-> UnitCell->Atoms->Delete;my $interactionEnergy = $totalEnergy - ($layer1Energy + $layer2Energy);
$calcSheet->Cell($counter-1, 6) = $interactionEnergy;#删除过程文件
my $totalEnergy = $calcSheet->Cell($counter-1, 1);
my $layer1Energy = $calcSheet->Cell($counter-1, 3);
my $layer2Energy = $calcSheet->Cell($counter-1, 5);

4循环计算 以轨迹的帧数为循环次数,设定自己的循环步长,然后将计算主体塞入循环即可

my $numFrames = $doc->Trajectory->NumFrames;
for (my $counter = 1; $counter <= $numFrames ; ++$counter) {#sets the current frame to the value of counter$doc->Trajectory->CurrentFrame = $counter;...循环主体...
}

最后提醒大家,help文件是学习每个软件最好的教程。对于这类程序的编写,基本上都可以通过help文件进行改编,整合为自己所用。也希望大家多多贡献自己的代码,互相学习!

MS计算轨迹的分子间作用能相关推荐

  1. Java Geometry计算轨迹与围栏交集效率测试及异常处理

    本文涉及异常问题比较普遍:https://cn.bing.com/search?q=found+non-noded+intersection+between&qs=n&form=QBR ...

  2. MS计算界面相互作用

    MS计算界面相互作用 界面上材料的相互作用在包括粘合剂,嫁接材料,复合材料,薄膜,润滑剂,油漆和印刷油墨等多方面具有一定的研究价值. 研究人员感兴趣的特性包括界面或中间相的结构,它与体积,表面张力,润 ...

  3. 利用MS计算水分子的径向分布和扩散系数

    1.建立初始结构 (1)建造一个的水分子 运行MS,新建一个Project命名为water molecular.打开一个新的xsd文档命名为H2O.xsd.在工具栏选择Sketch Atom工具绘制一 ...

  4. 滑动轨迹 曲线 python_python – 计算轨迹(路径)中的转折点/枢轴点

    您可以使用 Ramer-Douglas-Peucker (RDP) algorithm来简化路径.然后,您可以计算简化路径每段的方向变化.对应于方向最大变化的点可以称为转折点: RDP算法的Pytho ...

  5. matlab 计算数据转折点,计算轨迹(路径)中的转折点/枢轴点

    小编典典 您可以使用Ramer-Douglas-Peucker(RDP) 算法来简化路径.然后,您可以计算沿简化路径的每个线段的方向变化.与方向最大变化相对应的点可以称为转折点: 可以在github上 ...

  6. 多无人机辅助移动边缘计算中的任务卸载和轨迹优化

    摘要: 提出了一个多无人机辅助移动边缘计算系统,系统部署了多个配备计算资源的无人机为本地资源有限的移动用户提供计算卸载机会.每个用户的计算任务分为两部分:一部分卸载到关联的无人机进行计算,剩余部分在本 ...

  7. 计算倒车引导线并给出轨迹(附python和C++代码)

    计算倒车引导线并给出轨迹 一.所需参数 轴距:前后轮轴心距 轮距/车宽:不知道这两个应该用哪个合适,暂时用的车宽 前轮角度/方向盘角度:如果给的方向盘角度,还需要方向盘角度和前轮角度的关系 二.计算轨 ...

  8. 滑动轨迹 曲线 python_python处理滑块验证的轨迹计算问题

    在上一回中说了五行代码找图中滑块验证的缺口位置<python五行代码解决滑块验证的缺口距离识别,破解滑块验证>,本章讲轨迹相关的问题. 滑块验证核心是后台验证轨迹参数,效验轨迹取点的分布, ...

  9. TrajGAT:轨迹相似度计算模型

    轨迹相似度衡量任务 背景&应用: 随着物联网设备和定位技术的发展,会产生许多时空相似度很高的轨迹,例如: 对于单个个体:其轨迹可能会被多个定位系统所采集,比如当你驾驶汽车在高速上行驶,手机或汽 ...

最新文章

  1. 非常有用的css使用总结
  2. 包+类导入+静态导入+类放入包中+包作用域
  3. Python Ctypes结构体指针处理(函数参数,函数返回)
  4. Online Judge系统常见返回信息分析
  5. uctf-杂项题目分析
  6. 使用ExposedObject对Asp.net MVC中匿名类型的JsonResult做单元测试
  7. spring使用 hibernate jpa JpaRepository
  8. 在Lua中“优雅”地使用Protobuf
  9. Redis常用命令、数据类型讲解
  10. C语言程序设计基础篇
  11. matlab 参数辨识,Matlab系统辨识尝试之详细过程1
  12. 软件测试培训一般多少钱?
  13. [软件更新]vidalia 0.2.0.32
  14. HTML- 01:HTML 语言简介
  15. 李宏毅作业十二 Transfer Learning(迁移学习)
  16. java 利用飞信,Java利用飞信API给自己或者好友发信息
  17. 国际c语言混乱编码大赛,国际C语言混乱代码大赛优胜作品详解之“A clock in one line”...
  18. 【IDA*】codevs 2495:水叮当的舞步
  19. 2019广西普法考试云平台自动登录考试python
  20. 手机控制电脑定时关机,重启WiFi

热门文章

  1. vga转html电脑打不开,如何解决HDMI到VGA转换的常见故障_四种解决方法
  2. 人群计数:人群计数研究综述(2018.11)
  3. linux中pid gid tgid tid的区别和联系
  4. iOS12.3正式版不能更新是怎么回事(解决办法)
  5. 解决Ubuntu强制获取root权限后只剩下客人会话而无法正常登录
  6. 记录清理服务器挖矿木马warmup的命令
  7. 燕千云 YQCloud 数智化业务服务管理平台发布1.11版本
  8. Maya - 后缀为xgen文件导出到虚幻引擎
  9. 高仿优酷Android客户端图片左右滑动(自动切换)
  10. word修改后没保存/打开了自动保存没有恢复