VMD统计氢不能统计PBC(周期性边界条件)。
HBondStats.pl脚本内容如下:
#!perl
# Purpose: Calculate statistics (Min/Max/Mean) on the Hydrogen Bonds
# in a structure. Put the results in a Study Table.
use strict;
use warnings;
use MaterialsScript qw(:all);
#Initialize variables for the stats calculations
my $totalLength = 0;
my $minLength = 99999.9; #Arbitrary Big Num
my $maxLength = 0;
my $row = 0;
#Get all the HBonds in the UnitCell
my $hbonds = $Documents{"urea.xsd"}->UnitCell->HydrogenBonds;
#Create a new Study Table for the results
my $statsDoc = Documents->New("HBondStats.std");
foreach my $hbond (@$hbonds) {
#Output the bond length for each HBond
$statsDoc->Cell($row, 0) = "HBond $row";
$statsDoc->Cell($row, 1) = $hbond->Length;
#Update the statistics information
$totalLength += $hbond->Length;
if($hbond->Length < $minLength) {
$minLength = $hbond->Length;
}
elsif($hbond->Length > $maxLength) {
$maxLength = $hbond->Length;
}
++$row;
}
#printout the overall statistics
$statsDoc->Cell($row, 0) = "Average";
$statsDoc->Cell($row, 1) = $totalLength/$row;
$statsDoc->Cell($row, 2) = "Min";
$statsDoc->Cell($row, 3) = $minLength;
$statsDoc->Cell($row, 4) = "Max";
$statsDoc->Cell($row, 5) = $maxLength;
将17行的urea.xsd改为需要统计的文件名。
File->import导入perl脚本。
运行脚本。
出现报错:42行除数等于0。
检查后发现因为氢键总数为0,所以$row变量的值也为初始值0。
原因是运行脚本前没有calculate hydrogen bond,计算一下重新运行脚本。
最终输出结果如下: