Cpptraj 终极指南:从入门到精通
Cpptraj 是 AmberTools 套件中用于处理和分析分子动力学轨迹的核心工具。它功能强大、速度快,并且通过脚本支持高度可定制化的分析流程。无论你是 MD 新手还是经验丰富的老手,掌握 Cpptraj 都将极大地提升你的数据分析效率。
本指南旨在成为一个全面的 Cpptraj 命令手册,按照功能对所有可用命令进行分类,并提供清晰的示例。
目录
Cpptraj 启动与使用方式 核心概念 原子选择语法详解 文件导入与管理 拓扑结构修改 轨迹处理与坐标操作 结构分析 高级分析与数据挖掘 能量计算与分解 专门分析 系统检查与信息获取 数据处理与数学操作 Analysis 命令 控制流与变量 完整分析脚本示例 命令行执行方式
1. Cpptraj 启动与使用方式
基本运行模式
Cpptraj 有以下几种主要运行模式:
1.1 交互模式
cpptraj
CPPTRAJ> parm system.prmtop
CPPTRAJ> trajin traj.nc
CPPTRAJ> rmsd @CA
CPPTRAJ> go
CPPTRAJ> quit
1.2 脚本模式(推荐)
echo "parm system.prmtop" > analysis.in
echo "trajin traj.nc" >> analysis.in
echo "rmsd @CA out rmsd.dat" >> analysis.in
echo "go" >> analysis.in
cpptraj -i analysis.in
1.3 单命令模式
cpptraj -p system.prmtop -y traj.nc -x output.pdb
1.4 并行执行
export OMP_NUM_THREADS = 8
cpptraj -i analysis.in
mpirun -np 8 cpptraj.MPI -i analysis.in
2. 核心概念
在深入学习命令之前,理解 Cpptraj 的几个核心概念至关重要:
2.1 基本概念
状态 (State) : Cpptraj 内部会维护一个当前状态,包含了加载的拓扑文件、轨迹文件以及处理后的坐标。所有命令都是在这个状态上执行的。拓扑 (Topology) : 通常是 .prmtop
, .parm7
, .pdb
等文件,定义了系统的分子结构、原子信息、键合等。轨迹 (Trajectory) : 通常是 .nc
, .dcd
, .trj
等文件,记录了系统随时间变化的原子坐标快照(帧)。原子掩码 (Atom Mask) : 这是 Cpptraj 最强大的功能之一,允许你通过一套选择语法精确地选中你感兴趣的原子、残基或分子。数据集 (Dataset) : Cpptraj 计算产生的各种数据(如RMSD、距离、角度等)都以数据集的形式存储。动作 (Action) : 在轨迹处理过程中对每一帧执行的操作(如RMSD计算、叠合等)。分析 (Analysis) : 对已生成的数据集进行后处理的操作(如统计分析、聚类等)。
2.2 执行流程
Cpptraj 的典型执行流程为:
加载拓扑文件 加载轨迹文件 定义要执行的动作(Actions) 运行轨迹处理(go
命令) 执行分析(Analysis) 输出结果
3. 原子选择语法详解 (Atom Mask Selection)
原子选择语法是 Cpptraj 的核心功能,掌握这套语法对于高效使用 Cpptraj 至关重要。
3.1 基本选择语法
语法格式 描述 示例 @{atom numlist}
通过原子编号选择 @12,17
, @54-85
, @12,54-85,90
@{atom namelist}
通过原子名称选择 @CA
, @CA,C,O,N,H
@%{atom type name}
通过原子类型选择 @%CT
, @%N3
@/{atom_element_name}
通过元素名称选择 @/N
, @/C
:{residue numlist}
通过残基编号选择 :1-10
, :1,3,5
, :1-3,5,7-9
:{residue namelist}
通过残基名称选择 :LYS
, :ARG,ALA,GLY
::{chain id}
通过链ID选择(需要拓扑包含链信息) ::B
, ::A,D
:;{pdb residue number}
通过PDB残基编号选择 :;2-4,8
^{molecule numlist}
通过分子编号选择 ^1-10
, ^23,84,111
3.2 通配符支持
通配符 描述 示例 *
或 =
零个或多个字符 :*
(所有残基), @*
(所有原子)?
一个字符 :?0
(选择 :10,20,30…90)
3.3 逻辑运算符
运算符 描述 示例 &
逻辑与 :1-10 & @CA
(1-10号残基的CA原子)` ` 逻辑或 !
逻辑非 !(:WAT,Na+,Cl-)
(非水、钠离子、氯离子)
3.4 距离选择
语法 描述 示例 <mask><operator><distance>
基于距离的选择 :LIG<:5.0
(距离配体5埃内的原子)<mask><operator><distance><mask2>
基于两个掩码间距离的选择 :1-10<:3.5::WAT
(距离1-10号残基3.5埃内的水分子)
距离操作符包括:<
(小于), >
(大于), <=
(小于等于), >=
(大于等于)
3.5 复合表达式示例
:1-10@CA
:*& ! @H=
@N,CA,C,O
:ALA,TRP
( :LIG< :3.5) & ! @H*& ! :LIG
::A& :1-50
@/C& ! :LIG
3.6 预检查选择结果
在正式分析前,可以使用以下命令检查原子选择是否正确:
parm system.prmtop
select :1-10@CA
4. 文件导入与管理 (Input/Output)
这是所有分析的第一步:加载你的数据。
命令 功能描述 示例 parm
加载一个或多个拓扑文件。支持多种格式。 parm my_system.prmtop [name]
trajin
加载一个或多个轨迹文件。可以指定读取的范围和步长。 trajin run1.nc 1 last 10
(从第1帧读到最后,每10帧取一帧)trajout
将当前状态下的轨迹帧写入新文件。 trajout processed.nc netcdf
reference
加载参考结构文件,用于叠合或RMSD计算。 reference first_frame.rst7 [refname]
parmwrite
将当前(可能已修改的)拓扑信息写入新文件。 parmwrite out stripped.prmtop
readdata
读取由其他命令(如rmsd
, distance
)生成的纯文本数据文件。 readdata my_rmsd.dat name MyRMSD
writedata
将 Cpptraj 内部的数据集写入文件。 writedata MyRMSD out rmsd_values.txt
ensemble
加载集合轨迹(用于集合分析)。 ensemble input_*.nc
loadtraj
将轨迹加载到内存中(适用于小轨迹)。 loadtraj trajectory.nc
4.1 支持的文件格式
拓扑文件格式:
Amber prmtop/parm7 (.prmtop
, .parm7
) PDB (.pdb
) Mol2 (.mol2
) Tinker (.xyz
) CHARMM PSF (.psf
)
轨迹文件格式:
Amber NetCDF (.nc
) Amber ASCII trajectory (.trj
, .crd
) DCD (.dcd
) PDB (.pdb
) XYZ (.xyz
) TRR/XTC (Gromacs格式) CCP4 trajectory
5. 拓扑结构修改 (Topology Modification)
在分析前,我们常常需要对系统进行简化,比如删除溶剂、离子,或者提取特定部分。
命令 功能描述 示例 strip
从轨迹处理过程中删除指定的原子(临时删除,不修改拓扑)。 strip :WAT,Na+,Cl-
parmstrip
永久性 地从拓扑文件中删除指定原子,修改拓扑本身。parmstrip :WAT,Na+,Cl-
unstrip
恢复之前被strip删除的原子。 unstrip
closest
保留距离指定原子最近的N个原子/分子,并删除其余部分。 closest 10 :LIG
closestwaters
closest
的别名,专门用于保留最近的水分子。closestwaters 100 :1-200
solvent
标记指定掩码为溶剂(影响某些分析)。 solvent :WAT
parmmod
修改拓扑中的参数(如原子类型、电荷等)。 parmmod changeLJEpsilon @%CT 0.1094
scaledihedrals
按比例缩放二面角参数。 scaledihedrals :RES 0.8
5.1 内存管理命令
命令 功能描述 示例 clear
清除各种对象,释放内存。 clear trajin
/ clear parm
/ clear all
6. 轨迹处理与坐标操作 (Trajectory Processing)
这是轨迹分析的核心,用于消除周期性边界效应、平动和转动,使分子结构具有可比性。
6.1 周期性边界处理
命令 功能描述 示例 autoimage
自动处理周期性边界(PBC),将分散的分子"包装"回主盒子中。这是处理PBC的首选方法。 autoimage anchor :1-250
image
autoimage
的底层命令,提供更精细的PBC处理控制。image center :1-250 familiar
unwrap
移除分子在周期性边界条件下的"跳跃",使轨迹连续。 unwrap :1-250
wrap
将原子包装到周期性盒子中。 wrap :LIG
fixatomorder
修复原子顺序(某些情况下PBC处理会打乱原子顺序)。 fixatomorder
fiximagedbonds
修复因周期性边界而被"切断"的化学键。 fiximagedbonds
6.2 坐标变换
命令 功能描述 示例 center
将指定的原子组置于盒子中心,但不进行包装。 center :1-250 mass origin
align
/ rms
将所有帧与一个参考结构进行叠合对齐。这是消除全局转动/平动的关键步骤。 rms first :1-250@CA
rotate
围绕指定轴旋转分子。 rotate x 90 @CA
translate
沿指定向量平移分子。 translate x 5.0 :LIG
scale
按比例缩放坐标。 scale 1.1 :*
principal
计算并选择性地对齐到主轴。 principal :1-200 doRotation
6.3 特殊处理
命令 功能描述 示例 outtraj
在action列表中写出轨迹帧到文件。 outtraj snapshot.pdb onlyframes 1,10,20
createcrd
从当前坐标创建坐标数据集。 createcrd mycrd
7. 结构分析 (Structural Analysis)
这些命令用于计算各种衡量结构变化的几何参数。
7.1 基本结构参数
命令 功能描述 示例 rmsd
计算均方根偏差(Root Mean Square Deviation)。 rmsd ToFirst :1-150@CA out rmsd_ca.dat
rmsf
/ atomicfluct
计算均方根涨落(Root Mean Square Fluctuation)。 rmsf @CA out rmsf_by_atom.dat
radgyr
计算回旋半径(Radius of Gyration)。 radgyr :1-150 out rg.dat mass
distance
计算两个原子组之间的距离。 distance d1 :10@CA :50@CA out dist.dat
angle
计算三个原子组定义的角度。 angle a1 :10@N :10@CA :10@C out angle.dat
dihedral
计算四个原子组定义的二面角。 dihedral phi :9@C :10@N :10@CA :10@C out phi.dat
multidihedral
同时计算多个二面角。 multidihedral phi psi out dihedrals.dat resrange 1-100
7.2 高级几何分析
命令 功能描述 示例 pucker
计算糖环的褶皱参数。 pucker :1@C1,C2,C3,C4,O4 out pucker.dat
vector
计算和分析向量(如偶极矩、键向量等)。 vector v1 :10@CA :20@CA out vector.dat
minimage
计算两点间的最小映像距离(考虑PBC)。 minimage :LIG@C1 :PROT@CA out mindist.dat
bounds
计算指定原子的边界框(最大最小坐标)。 bounds :LIG out bounds.dat
molsurf
计算分子表面积。 molsurf :1-200 out molsurf.dat
surf
计算溶剂可及表面积(SASA)。 surf :1-150 out sasa.dat
volume
计算分子体积或盒子体积。 volume :1-150 out volume.dat
7.3 氢键和接触分析
命令 功能描述 示例 hbond
分析氢键。功能强大,可设置几何标准。 hbond series out hbond_series.dat dist 3.2 angle 135
nativecontacts
计算天然接触对的形成比例。 nativecontacts :PROA :PROB byresidue out contacts.dat
contacts
计算原子间接触。 contacts :LIG :PROT distance 4.0 out contacts.dat
watershell
分析水化层。 watershell :LIG out watershell.dat
8. 高级分析与数据挖掘 (Advanced Analysis)
这些命令用于更复杂的分析,如相关性运动、熵计算、聚类等。
8.1 主成分分析与准谐波分析
命令 功能描述 示例 matrix
计算协方差矩阵(covar
)、距离矩阵(dist
)等。 matrix covar @CA out covar.dat
diagmatrix
对角化矩阵,得到特征值和特征向量。 diagmatrix covar.dat out evecs.dat vecs 10
projection
将轨迹投影到特征向量上。 projection modes evecs.dat out proj.dat beg 1 end 3 @CA
modes
准谐波分析,估算构象熵。 modes quasi temp 300 evecs.dat out entropy.dat
tica
时间无关成分分析。 tica @CA out tica.dat lag 10
8.2 聚类分析
命令 功能描述 示例 cluster
对轨迹构象进行聚类分析。支持多种算法。 cluster dbscan minpoints 5 epsilon 2.0 @CA out cluster.dat
聚类算法选项:
hierarchical
: 层次聚类kmeans
: K均值聚类dbscan
: 基于密度的聚类
8.3 密度和体积分析
命令 功能描述 示例 grid
创建3D网格,计算密度分布。 grid water_density.dx 100 100 100 :WAT
volmap
创建体积密度图。 volmap :LIG 0.5 0.5 0.5 out ligand_density.dx
gist
Grid Inhomogeneous Solvation Theory分析。 gist out gist.dx refdens 0.0334
density
计算密度分布。 density :WAT out density.dat x 0.1
8.4 动力学分析
命令 功能描述 示例 diffusion
计算扩散常数。 diffusion :1-160 out diffusion.dat
velocityautocorr
计算速度自相关函数。 velocityautocorr :LIG out vacf.dat
ired
各向同性重取向特征模动力学分析。 ired order 2 tstep 0.1 tcorr 10.0 out ired.dat
9. 能量计算与分解 (Energy Analysis)
命令 功能描述 示例 energy
计算分子力学能量。 energy :LIG out energy.dat
esander
使用sander进行能量计算。 esander out sander_energy.dat
enedecomp
能量分解分析。 enedecomp out decomp.dat
lie
Linear Interaction Energy分析。 lie :LIG :* out lie.dat
10. 专门分析 (Specialized Analysis)
10.1 生物分子结构分析
命令 功能描述 示例 dssp
/ secstruct
二级结构分析(DSSP算法)。 dssp out dssp.dat
nastruct
核酸结构参数分析。 nastruct resrange 1:36 out na_params.dat
10.2 物理化学性质
命令 功能描述 示例 radial
径向分布函数(RDF)。 radial :WAT@O :WAT@O 0.5 10.0 out rdf.dat
dipole
计算电偶极矩。 dipole :1-160 out dipole.dat
10.3 特殊轨迹处理
命令 功能描述 示例 randomizeions
随机化离子位置。 randomizeions @Na+ around :PROT 5.0
spam
Spherical Projection Analysis Method。 spam out spam.dat
stfcdiffusion
Single Trajectory Finite Cell Diffusion分析。 stfcdiffusion :LIG out diff.dat
temperature
计算温度(基于动能)。 temperature :* out temp.dat
pairdist
计算原子对距离分布。 pairdist :LIG :PROT out pairdist.dat
change
修改轨迹中的坐标、盒子等信息。 change box 50.0 50.0 50.0
crankshaft
分析曲柄轴运动。 crankshaft phi psi out crank.dat
average
计算平均结构。 average crdset avgcrd :1-200@CA
2drmsd
计算二维RMSD矩阵。 2drmsd @CA out 2drmsd.dat
11. 系统检查与信息获取 (System Check & Info)
这些命令用于检查拓扑文件或系统的状态。
命令 功能描述 示例 check
检查拓扑文件中的几何参数是否存在异常。 check :1-10
parminfo
显示拓扑文件的详细信息。 parminfo
charge
计算指定原子组的总电荷。 charge :LIG
mass
计算指定原子组的总质量。 mass :LIG
box
报告盒子的尺寸信息。 box
molinfo
显示分子信息。 molinfo
resinfo
显示残基信息。 resinfo :1-10
atominfo
显示原子信息。 atominfo @CA
bondinfo
显示键连信息。 bondinfo :1-10
summary
总结 Cpptraj 的当前状态。 summary
show
显示版本信息或变量值。 show
12. 数据处理与数学操作 (Data Processing)
12.1 基本数学运算
命令 功能描述 示例 calc
评估数学表达式。 calc pi*2
createset
从数学表达式创建数据集。 createset x = 1,2,3,4,5
12.2 数据集操作
命令 功能描述 示例 dataset
操作数据集(重命名、复制、数学运算等)。 dataset rmsd_data copy newrmsd
datafilter
根据条件过滤数据集。 datafilter rmsd_data min 2.0 max 5.0
flatten
将2D矩阵展平为1D数组。 flatten matrix_data out flattened.dat
precision
改变数据集的输出精度。 precision rmsd_data 6
12.3 文件操作
命令 功能描述 示例 create
创建(但暂不写入)数据文件。 create mydata.dat
datafile
操作数据文件。 datafile mydata.dat write
13. Analysis 命令
Analysis命令对已生成的数据集进行后处理分析。这些命令通常在 go
命令执行轨迹处理后运行。
13.1 统计分析
命令 功能描述 示例 avg
计算数据集的平均值、标准差、最值。 avg rmsd_data out average.dat
statistics
/ stat
计算各种统计参数。 stat rmsd_data out stats.dat
hist
/ histogram
创建数据的直方图。 hist rmsd_data bins 50 out histogram.dat
multihist
为多个数据集创建直方图。 multihist rmsd_data1 rmsd_data2 out histograms.dat
kde
使用核密度估计创建直方图。 kde rmsd_data out kde.dat
13.2 相关分析
命令 功能描述 示例 autocorr
计算自相关函数。 autocorr distance_data out autocorr.dat
crosscorr
计算交叉相关矩阵。 crosscorr rmsd_data rg_data out crosscorr.dat
corr
计算两个数据集间的相关系数。 corr rmsd_data rg_data out correlation.dat
rmsavgcorr
计算COORDS数据集的RMS平均相关曲线。 rmsavgcorr coords_data out rmsavgcorr.dat
timecorr
使用球谐函数计算时间相关函数。 timecorr vector_data out timecorr.dat
13.3 数据变换
命令 功能描述 示例 integrate
对数据进行积分。 integrate distance_data out integral.dat
runningavg
计算移动平均。 runningavg rmsd_data window 10 out running_avg.dat
FFT
执行快速傅里叶变换。 FFT velocity_data out fft.dat
spline
计算三次样条插值。 spline data out splined.dat
wavelet
进行小波分析。 wavelet coords_data out wavelet.dat
13.4 拟合与回归
命令 功能描述 示例 curvefit
执行非线性曲线拟合。 curvefit exp data out fitted.dat
multicurve
对多个数据集进行曲线拟合。 multicurve exp data1 data2 out fitted.dat
regress
执行线性回归分析。 regress data1 data2 out regression.dat
13.5 特殊分析
命令 功能描述 示例 lifetime
执行生存期分析。 lifetime hbond_data out lifetime.dat
divergence
计算Kullback-Leibler散度。 divergence data1 data2 out divergence.dat
meltcurve
基于简单二态动力学计算熔解曲线。 meltcurve temp_data out meltcurve.dat
lowestcurve
计算追踪最低N个点的曲线。 lowestcurve energy_data bins 20 out lowestcurve.dat
calcstate
基于数据集和条件计算状态。 calcstate criteria "rmsd_data < 2.0" out states.dat
phipsi
分析phi/psi二面角数据。 phipsi phi_data psi_data out ramachandran.dat
hausdorff
计算Hausdorff距离。 hausdorff matrix_data out hausdorff.dat
evalplateau
评估数据是否达到单指数平台。 evalplateau data out plateau.dat
13.6 REMD分析
命令 功能描述 示例 remlog
分析副本交换日志。 remlog remlog.dat out exchange_stats.dat
13.7 热力学积分
命令 功能描述 示例 ti
执行高斯求积热力学积分。 ti dvdl_data out free_energy.dat
14. 控制流与变量 (Control Flow)
14.1 变量操作
命令 功能描述 示例 set
设置变量。 set MASK = ":1-10@CA"
show
显示变量值。 show MASK
14.2 控制流
命令 功能描述 示例 for
创建循环结构。 for i=1;i<10;i++
if
条件判断。 if $TEMP > 300
14.3 其他控制命令
命令 功能描述 示例 go
/ run
开始轨迹处理运行。 go
quit
/ exit
退出程序。 quit
help
获取帮助信息。 help rmsd
list
列出当前状态中的对象。 list parm
noexitonerror
遇到错误时继续执行。 noexitonerror
noprogress
不显示进度条。 noprogress
silenceactions
禁止Actions输出信息。 silenceactions
usediskcache
启用磁盘缓存。 usediskcache
readinput
从文件读取输入。 readinput script.in
15. 完整分析脚本示例
下面是一个典型的分析流程,将许多命令串联起来:
set PRMTOP = "protein_ligand.prmtop"
set TRAJ = "production.nc"
set PROTEIN = ":1-200"
set LIGAND = ":LIG"
set PROTEIN_CA = ":1-200@CA"
set ALL_HEAVY = "!@H="
usediskcache
parm $PRMTOP
trajin run1.nc 1 last 10
trajin run2.nc 1 last 10
trajin run3.nc 1 last 10
reference starting_structure.pdb [ ref1]
strip :WAT,Na+,Cl-
autoimage anchor $PROTEIN
center $PROTEIN mass origin
rms reference [ ref1] $PROTEIN_CA mass
rmsd protein_backbone $PROTEIN_CA reference [ ref1] out rmsd_protein_ca.dat mass
rmsd ligand_heavy $LIGAND $ALL_HEAVY reference [ ref1] out rmsd_ligand_heavy.dat
rmsd protein_all $PROTEIN $ALL_HEAVY reference [ ref1] out rmsd_protein_all.dat
rmsf protein_ca_rmsf $PROTEIN_CA out rmsf_protein_ca.dat byres
rmsf ligand_rmsf $LIGAND $ALL_HEAVY out rmsf_ligand.dat
radgyr protein_rg $PROTEIN out rg_protein.dat mass
radgyr ligand_rg $LIGAND out rg_ligand.dat mass
distance binding_distance $LIGAND @C1 $PROTEIN @ASP45@OD1 out binding_dist.dat
distance key_contact :TYR88@OH :LIG@O2 out key_contact.dat
angle binding_angle :ASP45@OD1 :LIG@C1 :LIG@C2 out binding_angle.dat
dihedral chi1_45 :45@N :45@CA :45@CB :45@CG out chi1_45.dat
multidihedral phi psi out backbone_dihedrals.dat resrange 1 -50
hbond protein_ligand $LIGAND $PROTEIN dist 3.5 angle 120 \ out hbond_prot_lig.dat series solventdonor :WAT
nativecontacts protein_ligand_contacts $PROTEIN $LIGAND byresidue \ distance 4.5 out native_contacts.dat
surf protein_sasa $PROTEIN out protein_sasa.dat
surf ligand_sasa $LIGAND out ligand_sasa.dat
go
matrix covar $PROTEIN_CA out covar_matrix.dat
diagmatrix covar_matrix.dat out evecs.dat vecs 10 name myEvecs
projection $PROTEIN_CA modes myEvecs out projections.dat beg 1 end 3
modes quasi temp 300 evecs myEvecs out entropy.dat
cluster dbscan $PROTEIN_CA minpoints 5 epsilon 2.0 \ out cluster_info.dat summary cluster_summary.dat \ saveframes repout cluster_reps.nc
avg rmsd_protein_ca out rmsd_stats.dat
hist rmsd_protein_ca bins 50 out rmsd_histogram.dat
autocorr rmsd_protein_ca out rmsd_autocorr.dat
crosscorr rmsd_protein_ca rg_protein out rmsd_rg_crosscorr.dat
runningavg rmsd_protein_ca window 100 out rmsd_running_avg.dat
trajout processed_trajectory.nc netcdf
average crdset avg_structure $PROTEIN_CA
createcrd avg_coords
crdout avg_coords average_structure.pdb pdb
writedata
clear all
quit
15.1 脚本组织最佳实践
1. 模块化脚本结构:
readinput preprocessing.in
readinput structural_analysis.in
readinput advanced_analysis.in
go
readinput postprocessing.in
2. 使用变量提高可维护性:
set SYSTEM_NAME = "protein_complex"
set TRAJ_PREFIX = "md"
set OUTPUT_PREFIX = "${SYSTEM_NAME} _analysis"
trajin ${TRAJ_PREFIX} _*.nc
rmsd protein @CA out ${OUTPUT_PREFIX} _rmsd.dat
3. 条件执行:
if $TEMP > 300 cluster dbscan @CA minpoints 5 epsilon 2.0
endif
16. 命令行执行方式
Cpptraj 提供了多种灵活的命令行执行方式:
16.1 基本命令行选项
cpptraj -h
-i < file>
-p < file>
-y < file>
-x < file>
-o < file>
-debug < int>
--log < file>
16.2 快速执行模式
cpptraj -p system.prmtop -y traj.nc -x output.pdb
cpptraj -p system.prmtop -y traj.nc -i analysis.in -o results.log
cpptraj -p system.prmtop -y "traj*.nc" -c "rmsd @CA; go; quit"
16.3 批量处理脚本
Bash脚本示例:
#!/bin/bash
SYSTEMS = ( "system1" "system2" "system3" )
CPPTRAJ_SCRIPT = "template_analysis.in" for sys in "${SYSTEMS[ @] } " ; do echo "Processing $sys ..." sed "s/SYSTEM_NAME/$sys /g" $CPPTRAJ_SCRIPT > ${sys} _analysis.incpptraj -i ${sys} _analysis.in > ${sys} _analysis.log 2 >&1 echo "Finished $sys "
done
16.4 并行执行
export OMP_NUM_THREADS = 8
cpptraj -i analysis.in
mpirun -np 16 cpptraj.MPI -i analysis.in
echo "parallelanalysis" > parallel_analysis.in
echo "parm system.prmtop" >> parallel_analysis.in
echo "trajin traj.nc" >> parallel_analysis.in
echo "rmsd @CA" >> parallel_analysis.in
echo "rmsf @CA" >> parallel_analysis.in
echo "radgyr" >> parallel_analysis.in
echo "go" >> parallel_analysis.inmpirun -np 3 cpptraj.MPI -i parallel_analysis.in
16.5 高级执行选项
cpptraj -i analysis.in --traj-cache-size 1000
cpptraj -i analysis.in -debug 2 --log debug.log
sbatch << EOF
#!/bin/bash
#SBATCH --job-name=cpptraj_analysis
#SBATCH --ntasks=16
#SBATCH --time=24:00:00
#SBATCH --mem=64Gmodule load amber
export OMP_NUM_THREADS=8
mpirun -np 2 cpptraj.MPI -i analysis.in > analysis.log 2>&1
EOF
16.6 实用技巧
1. 进度监控:
cpptraj -i analysis.in | tee analysis.log
nohup cpptraj -i analysis.in > analysis.log 2 >&1 &
2. 错误处理:
noexitonerror
3. 资源监控:
while true ; do ps aux | grep cpptraj | grep -v grep sleep 60
done & cpptraj -i analysis.in
4. 轨迹预检查:
cpptraj -p system.prmtop -y traj.nc -c "trajinfo; quit" > traj_info.log
总结
这份完整的 Cpptraj 指南涵盖了:
核心概念 :状态管理、原子选择语法、数据流完整的命令参考 :超过100个命令,按功能分类实践指导 :从简单分析到复杂工作流执行方式 :交互式、脚本式、命令行、并行等多种方式最佳实践 :脚本组织、性能优化、错误处理
无论你是初学者还是高级用户,这份指南都将是你使用 Cpptraj 进行轨迹分析的重要参考。记住,每个命令都有更多高级选项,你可以通过 help <command>
或查阅官方手册获取更详细信息。
通过掌握这些命令和技巧,你将能够高效地分析分子动力学轨迹,从基本的结构参数到复杂的动力学性质,从单个分析到大规模批量处理。祝你分析顺利!