PLUMED质量和电荷:读入、取值与文件往返
plumed读取自定义四粒子质量和中性电荷,实际演示零起文件索引、值向量选取和DUMPMASSCHARGE。
阅读本篇目录
计算质量中心或偶极矩前,要确认PLUMED拿到的是哪组质量和电荷。尤其离线分析XYZ时,坐标文件本身通常不提供这些信息。
1. 下载与模型#
下载完整输入、原生结果和绘图包,保存为example.zip:
python3 -m zipfile -e example.zip .
cd plumed-mass-charge-centers
bash results.sh
bash read.sh
bash plot.sh
先读取保存的真实结果;原生输出在reference-results/qualified/,CSV在data/,图在figures/。默认使用集群ASE环境Python,可用YS_ANALYSIS_PYTHON指定含NumPy、ASE和Matplotlib的解释器。
本例有32帧人工四粒子构型,分别指定质量[1,2,3,4] amu和电荷[1,−1,0.5,−0.5] e,总电荷为0。它们是用于工具演示的赋值,不是真实分子的力场参数或DFT电荷预测。
2. 质量/电荷文件#
cat inputs/mass-charge.dat
#! FIELDS index mass charge
0 1 1
1 2 -1
2 3 0.5
3 4 -0.5
文件的index从0开始,对应第1到第4个粒子。它与PLUMED命令里通常从1开始的原子编号不同;不要直接把两者混用。
mc: READMASSCHARGE FILE=mass-charge.dat
3. 读取一个值与整组向量#
mass2vector: SELECT_COMPONENTS ARG=mc.mass COMPONENTS=2
charge3vector: SELECT_COMPONENTS ARG=mc.charges COMPONENTS=3
m: SUM ARG=mass2vector PERIODIC=NO
q: SUM ARG=charge3vector PERIODIC=NO
DUMPVECTOR ARG=mc.mass,mc.charges FILE=mass-charge-vectors.dat STRIDE=1 PRINT_ONE_FILE FMT=%.14g
mc.mass与mc.charges是读回的完整向量。SELECT_COMPONENTS编号从1开始,选第2个质量、第3个电荷;对长度1的向量求和取得标量,本例分别为2 amu和0.5 e。
当前安装的MASS、CHARGE快捷入口在这个模型中不能给出一致的标量/质量向量,因此本文使用上面直接读取值向量的方式。不要只看任务正常结束就假定质量、电荷已经正确。
4. 完整输入与运行#
cat inputs/plumed.dat
展开完整PLUMED输入
UNITS LENGTH=nm ENERGY=kj/mol TIME=ps
mc: READMASSCHARGE FILE=mass-charge.dat
mass2vector: SELECT_COMPONENTS ARG=mc.mass COMPONENTS=2
charge3vector: SELECT_COMPONENTS ARG=mc.charges COMPONENTS=3
m: SUM ARG=mass2vector PERIODIC=NO
q: SUM ARG=charge3vector PERIODIC=NO
cm: CENTER_FAST ATOMS=1-4 MASS NOPBC
cg: CENTER_FAST ATOMS=1-4 NOPBC
cw: CENTER_FAST ATOMS=1-4 WEIGHTS=4,3,2,1 NOPBC
pcm: POSITION ATOM=cm NOPBC
pcg: POSITION ATOM=cg NOPBC
pcw: POSITION ATOM=cw NOPBC
dip: DIPOLE GROUP=1-4 NOPBC
dipvec: DIPOLE GROUP=1-4 NOPBC COMPONENTS
PRINT ARG=m,q,pcm.x,pcm.y,pcm.z,pcg.x,pcg.y,pcg.z,pcw.x,pcw.y,pcw.z,dip,dipvec.x,dipvec.y,dipvec.z FILE=COLVAR STRIDE=1 FMT=%.14g
DUMPVECTOR ARG=mc.mass,mc.charges FILE=mass-charge-vectors.dat STRIDE=1 PRINT_ONE_FILE FMT=%.14g
DUMPMASSCHARGE ATOMS=1-4 FILE=dumped.mc
snapshot: CONSTANT NROWS=1 NCOLS=12 VALUES=0.1,0.31609819355968,0.18,0.2,0.1,0.15,0.3994235584121,0.23,0.1,0.13,0.17,0.4423463313527
DUMPPDB ATOMS=snapshot ATOM_INDICES=1-4 FILE=final.pdb STRIDE=0 OCCUPANCY=1,1,1,1 BETA=1,-1,0.5,-0.5
在新解压目录运行短串行driver:
bash run.sh
bash read.sh work analysis-new
bash plot.sh analysis-new figures-new work
程序采用CP2K2026.2依赖中的PLUMED2.10.1,run.py已设置程序和动态库路径。本包只有坐标前后处理,没有做DFT、力场参数拟合或物理MD。
5. 导出并比较#
cat reference-results/qualified/dumped.mc
head reference-results/qualified/mass-charge-vectors.dat
cat data/PLUMED-assigned-particle-properties.csv
DUMPMASSCHARGE ATOMS=1-4使用从1开始的原子列表,输出文件仍用从0开始的index列。本例导出的四个质量和电荷与输入逐项相同,32帧值向量也保持一致。
这些值随后用于中心和中性模型偶极。直接把XYZ中的元素名当成已经加载了所需质量/部分电荷,容易使后续CV含义发生变化;自己的体系应使用与模型一致的参数来源。