Na

rmsd:
/home/databank/ydn/DRAK2/MD3/Mg/system2/check/RMSD/
/home/databank/ydn/DRAK2/MD/Re/noMg/check/RMSD/
  • show sticks, resn MOL
  • select ion_test, inorganic
  • show spheres, ion_test
  • set sphere_scale, 0.5, ion_test

  • label sele, "Na 302"
  • set float_labels,1

Step 0:准备干燥轨迹

  • # 建索引文件(蛋白+配体+Na+)gmx_mpi make_ndx -f ../../md.gro -o protein_na_lig.ndx# 输入:1|13|14 → q# 提取干燥轨迹gmx_mpi trjconv \    -f ../../md.xtc \    -s ../../md.tpr \    -n protein_na_lig.ndx \    -o dry-na.xtc \    -pbc mol -ur compact# 选择:18 (Protein_MOL_Na+)

Step 1:建native_na.prmtop

bash
  • # 从complex.prmtop去掉水cpptraj << 'EOF'parm ../../../parameters/complex.prmtopparmstrip :WATparmwrite out native_na.prmtopquitEOF

Step 2:对齐轨迹

  • cpptraj << 'EOF'parm native_na.prmtoptrajin dry-na.xtcautoimagerms first :1-291@CAtrajout dry-na-align.xtcrunquitEOF
  • cpptraj << 'EOF'
  • parm native_na.prmtop
  • trajin dry-na.xtc
  • autoimage
  • rms first :1-291@CA
  • trajout dry-na-align.xtc
  • run
  • quit
  • EOF

Step 3:抽帧检查

  • cpptraj << EOF
  • parm native_na.prmtop
  • trajin dry-na-align.xtc 1 10000000000 1000
  • trajout check.pdb
  • run
  • quit
  • EOF

Step 4:找最近Na+

bash
  • # 计算所有Na+到配体距离(300-500ns)cpptraj << 'EOF'parm native_na.prmtoptrajin dry-na-align.xtc 150001 250001 1000distance na293 :293 :292 out dist_na.datdistance na294 :294 :292 out dist_na.datdistance na295 :295 :292 out dist_na.datdistance na296 :296 :292 out dist_na.datdistance na297 :297 :292 out dist_na.datdistance na298 :298 :292 out dist_na.datdistance na299 :299 :292 out dist_na.datdistance na300 :300 :292 out dist_na.datdistance na301 :301 :292 out dist_na.datdistance na302 :302 :292 out dist_na.datdistance na303 :303 :292 out dist_na.datdistance na304 :304 :292 out dist_na.datdistance na305 :305 :292 out dist_na.datdistance na306 :306 :292 out dist_na.datdistance na307 :307 :292 out dist_na.datdistance na308 :308 :292 out dist_na.datdistance na309 :309 :292 out dist_na.datdistance na310 :310 :292 out dist_na.datdistance na311 :311 :292 out dist_na.datrunquitEOF# 排序awk 'NR==1{next} {for(i=2;i<=NF;i++) sum[i]+=$i; count++} \    END{for(i=2;i<=NF;i++) printf "Na%d\t%.2f Å\n", i+291, sum[i]/count}' \    dist_na.dat | sort -k2 -n | head -5

Step 5:建prmtop(以Na302为例)

bash
  • mkdir na302# native(蛋白+Na302+配体)cpptraj << 'EOF'parm ../../../parameters/complex.prmtopparmstrip :WATparmstrip :293-301,303-311parminfoparmwrite out na302/native_na302.prmtopquitEOF# pro两步法(蛋白+Na302)cpptraj << 'EOF'parm ../../../parameters/complex.prmtopparmstrip :WATparmstrip :MOLparmstrip :293-301parmwrite out na302/pro_na302_temp.prmtopquitEOFcpptraj << 'EOF'parm na302/pro_na302_temp.prmtopparmstrip :Na+&!:292parminfoparmwrite out na302/pro_na302.prmtopquitEOFrm na302/pro_na302_temp.prmtop# 验证 native = pro + lig# 4672 + 127 = 4799 ✅

Step 6:提取Na302轨迹

bash
  • cpptraj << 'EOF'parm native_na.prmtoptrajin dry-na-align.xtcstrip :293-301,303-311trajout na302/dry-na302-align.xtcrunquitEOF# 抽帧检查cpptraj << 'EOF'parm na302/native_na302.prmtoptrajin na302/dry-na302-align.xtc 1 10000000000 1000trajout na302/check_na302.pdbrunquitEOF

Step 7:跑MMGBSA

bash
  • cd ../MMGBSA-NA/mkdir na302cp /path/to/igb5_300-500ns.in na302/cd na302nohup mpirun -np 20 MMPBSA.py.MPI \    -i igb5_300-500ns.in \    -o final_na302.dat \    -cp ../../RMSD-NA/na302/native_na302.prmtop \    -rp ../../RMSD-NA/na302/pro_na302.prmtop \    -lp ../../../../parameters/lig.prmtop \    -y ../../RMSD-NA/na302/dry-na302-align.xtc \    -eo mmgbsa_na302.csv > mmpbsa_na302.log 2>&1 &echo "PID: $!"# 查看结果grep "DELTA TOTAL" final_na302.dat

注意事项

  • :292         → 配体MOL编号(根据实际确认):293-311     → 19个Na+编号(根据实际确认)两步法建pro  → 因cpptraj strip后残基重新编号cp=rp+lp    → 原子数必须匹配否则MMGBSA报错300-500ns   → 对应帧150001-250001(每2ps一帧)native_na.prmtop → 所有md共用(同一parameters)