晶体结构口袋复现
- 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 进度:
- pymol super 将 apo构象叠合至complex,从而便于redock;
- rdkit 计算配体间rmsd(非常准确!)
2025-10-28 进度:
- 完成glide SP/XP/smina 三种方法的redock 与 rmsd计算
- 结果待分析并发给师姐(可待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
已完成叠合脚本的撰写,有几点需要注意:
- 一组结构中的蛋白原子序列需要一致(尽可能每一个原子都能保持一致)
- 需要校对,配体的序号是否正确,这决定了口袋周围原子的Index是否正确
- 叠合模式 是直接对口袋原子进行叠合,还是先对蛋白整体进行主链叠合再口袋叠合
晶体结构复现的简单脚本写了一下,存在问题如下:
- 撇开apo的叠合问题,complex本身的复现结果就很差,pymol人工看着跟晶体结构差距不小
- 自动计算rmsd以定量评估复现效果的这部分代码尚未完成
- 17:36
- # 测试路径 /home/databank/MD_traj_dataset/D3PM/analysis/crystal_redock/test2/redock
- # 用 com-dry.pdb 非MOL 做对接受体
- # 用 com-dry.pdb MOL 做对接配体
