晶体结构口袋复现

  • 75.2 /home/databank/MD_traj_dataset/D3PM/analysis/crystal_redock
  • 75.2 /home/databank/MD_traj_dataset/D3PM/analysis/crystal_redock/test3-pymol-align/test-redock-rmsd_cal
2025-10-25 进度:
  1. pymol super 将 apo构象叠合至complex,从而便于redock;
  2. rdkit 计算配体间rmsd(非常准确!)
2025-10-28 进度:
  1. 完成glide SP/XP/smina 三种方法的redock 与 rmsd计算
  2. 结果待分析并发给师姐(可待29号与师姐线下讨论)

glide redock

smina 实现批量redock 较容易,薛定谔的流程我不太熟悉
  • 24 /home/databank/zzy/project/MD/glide-redock-d3pm

受体文件准备

配体sdf转pdb(便于将其整合到蛋白的pdb中)
  • # obabel 实测下来会有部分配体的转换存在问题(残基名称不一致),使用rdkit可以保证转换的稳定
  • python sdf_to_pdb_resname.py ../../data/com_crystal/${lig_name}*.sdf ${lig_name}.pdb
  • grep HETATM 1nvq-lig.pdb >lig.pdb
  • cat 1nvq_A-pdb2pqr.pdb lig.pdb >complex.pdb
第一种尝试:不改变任何信息,仅是把pdb转成mae便于后续操作
  • # 85.24 /home/databank/zzy/project/MD/glide-redock-d3pm/gridbox/no_prepwizard
  • source ~/zzy/env/zzy.sh
  • # pdb转mae
  • $SCHRODINGER/utilities/structconvert complex.pdb complex.mae
这样得到的复合物mae文件在后续生成grid文件时,存在部分体系报错
第二种尝试:对蛋白进行优化
  • 24 /home/databank/zzy/project/MD/glide-redock-d3pm/gridbox/prepwizard
  • # 10-27 20:06 任务进行中
  • $SCHRODINGER/utilities/prepwizard -rehtreat -disulfides -fillsidechains -fillloops complex-lig_${i}.pdb com_lig_${i}.maegz

generate_glide_grid

  • $SCHRODINGER/utilities/generate_glide_grids grid_info.csv

redock

  • $SCHRODINGER/glide docking.in

配体RMSD计算

  • 24 /home/databank/zzy/project/MD/glide-redock-d3pm/redock/test4
  • glide 对接的结果maegz文件转sdf
  • obabel 将构象拆分为一个个单独的sdf
  • 分别计算每个构象与晶体构象间的rmsd
  • # 需要index,non_aligned_rmsd.py以及对接完成的结果文件
  • bash rmsd_cal.sh
  • 将rmsd最小的结果整理出来
  • # complex
  • for i in {1..22};do best_rmsd=`awk -F ',' -v var=system$i -v OFS='\t' '$1==var{print $6}' glide_non_aligned_rmsd_results.csv|sort -g|head -n1`;awk -F ',' -v var=system$i -v OFS='\t' '$1==var{print $1,$4,$5,$6}' glide_non_aligned_rmsd_results.csv|grep $best_rmsd >>best_complex.txt;done

  • # apo
  • for i in {1..22};do best_rmsd=`awk -F ',' -v var=system$i -v OFS='\t' '$1==var{print $7}' glide_non_aligned_rmsd_results.csv|sort -g|head -n1`;awk -F ',' -v var=system$i -v OFS='\t' '$1==var{print $1,$4,$5,$7}' glide_non_aligned_rmsd_results.csv|grep $best_rmsd >>best_apo.txt;done
  • 将complex 每个体系复现  结果最好的构象 整理,便于pymol中检查
  • mkdir best_fit_complex
  • for i in {1..22};do best_rmsd=`awk -F ',' -v var=system$i -v OFS='\t' '$1==var{print $6}' smina_redock_rmsd_results.csv|sort -g|head -n1`;conf=`awk -F ',' -v var=system$i '$1==var{print $5,$6}' smina_redock_rmsd_results.csv|grep $best_rmsd|awk '{print $1}'|head -n1|sed 's/conf//g'`;cp system$i/com${i}*conf_${conf}.sdf best_fit_complex/;done

top1 构象rmsd check

  • 24 /home/databank/zzy/project/MD/glide-redock-d3pm/redock/top1
  • 75.2 /home/databank/MD_traj_dataset/D3PM/analysis/crystal_redock/test3-pymol-align/smina_conf1_rmsd.txt
  • 75.2 /home/databank/MD_traj_dataset/D3PM/sys_md_parameters/

蛋白叠合

pymol 蛋白叠合

  • 75.2 /home/databank/MD_traj_dataset/D3PM/analysis/crystal_redock/pymol-align

cpptraj-效果不佳

  • 75.2 /home/databank/MD_traj_dataset/D3PM/analysis/crystal_redock/md_auto_input/apo_align_cpptraj

  • # 在确保两个蛋白序列一致的情况下 do.sh 可以正确叠合
  • 75.2 /home/databank/MD_traj_dataset/D3PM/analysis/crystal_redock/md_auto_input/tleap
  • # 计划删除B链 280位的氨基酸,手动写成ALA(与A链一致)用tleap补齐
代码框架
  • cpptraj << EOF
  • parm ../COM
  • reference ../COM [ref]
  • trajin ../APO
  • rms initial_fit ref [ref] @N,CA,C,O
  • rms core_fit ref [ref] :1-50&@N,CA,C,O nofit out rmsd_pkt.dat
  • trajout RESULT
  • run
  • EOF
已完成叠合脚本的撰写,有几点需要注意:
  1. 一组结构中的蛋白原子序列需要一致(尽可能每一个原子都能保持一致)
  2. 需要校对,配体的序号是否正确,这决定了口袋周围原子的Index是否正确
  3. 叠合模式 是直接对口袋原子进行叠合,还是先对蛋白整体进行主链叠合再口袋叠合
晶体结构复现的简单脚本写了一下,存在问题如下:
  1. 撇开apo的叠合问题,complex本身的复现结果就很差,pymol人工看着跟晶体结构差距不小
  2. 自动计算rmsd以定量评估复现效果的这部分代码尚未完成
  • 17:36 
  • # 测试路径 /home/databank/MD_traj_dataset/D3PM/analysis/crystal_redock/test2/redock

  • # 用 com-dry.pdb 非MOL 做对接受体
  • # 用 com-dry.pdb MOL 做对接配体