5.12-16 MD auto test & modify
标注解读
git上版本存在的问题
zyzhou的修改
zyzhou修改后待解决/优化的残余问题(时间关系,先以跑通流程为首要目标)
待解决问题汇总
mdp 需要进一步核对
amber_to_gmx-add_restraint.py 调试的时候输出了一大堆debug信息,后续需要从脚本中将其删除
pre_equ.py 程序运行完成后无法退出
total_control.py 自动判断每个文件夹内有哪些文件,来判断执行哪个模式(0/1)
total_control.py 后续可以让用户指定高斯优化check的间隔时间,或者根据分子量来自动赋值
单个体系,空蛋白,无二硫键,无离子,CSX替换为CYS(2FJT)
- 75.2 /home/databank/zyzhou/project/D3PM/3N0Y_2FJT/2FJT/MD-automation-main
- # 将准备好的pdb放入 该工作路径下的system1文件下
- (ambertools) dddc@SR665-V3:/home/databank/zyzhou/project/D3PM/3N0Y_2FJT/2FJT/MD-automation-main$ ls system1/
- 2fjt-pdb4amber-CYS-chainA.pdb
- # 测试总控脚本的0模式(apo)
- python total_control.py 0
- # 报错“No SDF files found in system directories.”说明总控的0模式没有跳过配体准备步骤
- # 简单修改总控脚本,测试剩余部分
- # 当输入参数为 "0" 时,跳过配体相关处理步骤(步骤1-3),直接执行体系参数生成及后续步骤(步骤4-6)
- # 再次测试发现虽然流程可以正常运行不报错,最后显示“Workflow completed successfully!”但是实际上amber_to_gmx-add_restraint.py没有任何输出,且不会生成报错信息。
- # 后面的pre_equ也没有生成报错信息
- # 检查了一下脚本,amber_to_gmx-add_restraint.py是没有考虑apo体系的情况的
- # 2025-5-13 对 amber_to_gmx-add_restraint.py 和 total_control.py 做了修改,目前执行总控脚本0模式可实现apo体系的自动准备,但是程序无法退出(master.log 输出“全部流程完成”,但是程序仍在运行)
- # CPU服务器的测试结果:
- # 75.2 /home/databank/zyzhou/project/D3PM/3N0Y_2FJT/2FJT/MD-automation-main
- # 75.2 需要调用 conda activate ambertools + source ~/.gmx2024.sh
- # GPU服务器的测试结果:
- # 75.3 /home/data/zyzhou/project/D3PM/2FJT/MD-automation-main
- # 75.3 需要调用 conda activate AmberTools25 + source ~/.gmx2024.sh
单个体系,复合物,无二硫键,一个锰离子(3N0Y)
3N0Y原配体无法高斯优化成功,去掉核苷部分可以优化成功,故先尝试把去掉核酸部分作为配体进行脚本测试。
- conda activate ambertools
- source ~/.gmx2024.sh
- 75.2 /home/databank/zyzhou/project/D3PM/test-MD-auto/3N0Y/MD-automation-main
- conda activate AmberTools25
- source ~/.gmx2024.sh
- 75.3 /home/data/zyzhou/project/D3PM/test-MD-auto/3N0Y/MD-automation-main
- 5-14 15:51 total_control.py 对于 lig_parameter_cal.py的调用有错误,已修改,可以正常提交
- # 发现高斯优化任务进行时,total_control.py 不会等待,而是继续向下执行,这显然会出错
- # 16:10 修改 total_control.py,使其能够正确调用lig_parameter_cal.py,且在高斯优化任务提交后,每间隔一段时间检查log文件,直到所有文件夹下的log文件都出现"Normal termination of Gaussian 16 ...",workflow才向下进行
- # 5-14 17:49-18:56 修改 amber_to_gmx-add_restraint.py,使其可以正确处理复合物体系
- # 5-14 19:35 75.2 (CPU服务器)跑通流程,CPU调用的有点多(占用到了80%+)
- # 5-14 19:59 75.3 (GPU服务器)跑通流程,GPU的调用存在问题,默认是0盘
多个体系
从git上hsp90-29sys里面随机选了两个体系测试
- 75.3 /home/data/zyzhou/project/D3PM/test-MD-auto/multi-sys/separate_scripts_test
- 75.3 /home/data/zyzhou/project/D3PM/test-MD-auto/multi-sys/MD-automation-main
- # lig_parameter_cal.py 可以直接指定 其本身的路径,在这个路径里寻找文件夹进行处理
- # 修改 total_control.py,使其能够正确执行lig_parameter_cal.py(system1的上级目录运行),等待一段时间后检查log文件使其不会因为高斯需要启动时间而报错
- # 5-14 20:35 已交上任务,高斯优化进行中
- nohup python total_control-v2.py 1 &
- # 5-15 9:04 查看任务进展,发现已报错中断,原因是lig_parameter_cal.py的下一个脚本命令行有错误,需要检查
- # 5-15 21:41 发现 total_control-v2.py 路径改一下就可以解决上面这个问题,所以先测试脚本能不能进行批量处理
- # 5-15 21:11 已全部测试通过,amber_to_gmx-add_restraint.py 又做了小修改,使其能够判断金属离子,配体同时存在时,在哪里添加蛋白位置限制索引
- # 提交 pre_equ.py 进行测试
- # 5-15 23:01 pre_equ.py 测试完成,两个体系npt3正常且合理,但是程序仍然无法自动退出
- # 5-15 23:04 提交总控脚本测试
- # 5-15 23:59 总控脚本测试通过,mpt3.gro 检查,看起来无明显错误
5.16
空蛋白,力场本身不支持的离子(以硫酸根为例)
像硫酸根这样的,一共4个原子,如果准备体系的时候稍微处理下,确保蛋白文件里的原子名称与高斯优化的NEWPDB.PDB 一致(例如,对于硫酸根离子,需要把蛋白质结构文件中SO4的硫原子S改为S1),这样就可以不用把硫酸根作为单独的结构文件导入,少去了很多麻烦
注意,在准备体系时,拟合离子resp电荷需要用 -rn 参数指定 输出的prep文件的residue name,-rn 指定的名字需要与蛋白质结构文件里离子的名称一致(例如,对于硫酸根离子,是SO4)
- # 模式0
- 75.3 /home/data/zyzhou/project/D3PM/test-MD-auto/2FJT_SO4/MD-automation-main
- # 模式1
- 75.3 /home/data/zyzhou/project/D3PM/test-MD-auto/mode1-so4/MD-automation-main
- # 修改了md_parm_gen.py ,硫酸根和锰离子地位是一样的,如果输入文件里有 prep,frcmod文件,那么就会把这两个文件读取进来(tleap)
5.19 溶质溶剂组索引生成,预平衡
修改了 amber_to_gmx-add_restraint.py和 pre_equ.py,现在能自动识别 体系中的溶质溶剂组并生成index.ndx 文件,对mdp文件做修改从而实现更准确的双组控温
测试体系准备
空蛋白,无二硫键,无离子,CSX替换为CYS(2FJT)
已准备好,作为自动化脚本最简单版本的测试,已通过
- # 75.2 /home/databank/zyzhou/project/D3PM/3N0Y_2FJT/2FJT
- # PDB下载2fjt.pdb
- pdb4amber -i 2fjt.pdb -o 2fjt-pdb4amber.pdb --dry --reduce
- # 文本操作:将CSX全部替换为CYS,删除CSX的OD原子
- # 文本操作:删去B链蛋白链及 所有SO4离子
空蛋白,无二硫键,含硫酸根离子,CSX替换为CYS(2FJT)
硫酸根离子需要额外准备
- 75.2 /home/databank/zyzhou/project/D3PM/test-MD-auto/2FJT_SO4/so4
- antechamber -i 2fjt_C_SO4.sdf -fi sdf -o SO4.gjf -fo gcrt -at gaff2 -gn %nproc=4 -gm %mem=4GB -gk "#B3LYP/6-31G* em=gd3bj pop=MK iop(6/33=2,6/42=6) opt" -rn MOL -nc -2
- antechamber -i SO4.log -fi gout -o SO4.prep -fo prepi -c resp -rn SO4;parmchk2 -i SO4.prep -f prepi -o SO4.frcmod -a y
复合物,无二硫键,一个锰离子(3N0Y)
锰不需要额外准备
配体带4个负电荷,正在23上跑高斯,直接b3lyp优化不通过
pm7也不通过,在水溶液中才能通过
- 23 /home/dddc/zzy/test/g16/75.2
- # 5-16 15:50
- # 发现晶体结构解析条件,pH为5.6,这个条件下,APC应该不再带4个负电荷。氧原子是否电离不影响其与锰离子之间的配位键。
- # 和师姐讨论后,计划用pH=5.6进行配体准备
- # 尝试schrodinger2017本地版,直接对3N0Y进行蛋白准备(pH=5.6),预测的配体为中性,保存为sdf,生成gjf
- antechamber -i APC-schrodinger-propre.sdf -fi sdf -o APC.gjf -fo gcrt -at gaff2 -gn %nproc=4 -gm %mem=4GB -gk "#B3LYP/6-31G* em=gd3bj pop=MK iop(6/33=2,6/42=6) opt" -rn MOL
- # 5-16 18:04 23 /home/dddc/zzy/test/g16/75.2/netural g16 running
- # 尝试直接调用2021 schrodinger ligprep,pH=5.6,预测得到带三个负电荷的配体
- # 23 /home/dddc/zzy/test/g16/75.2/ligprep
- ~/software/Schrodinger_Suites_2021-2/ligprep -R e -epik -ph 5.6 -pht 0.0 -isd 3n0y_C_APC.sdf -osd APC-epik_ph5.6.sdf
- 23 /home/dddc/zzy/test/g16/75.2/5.6/b3lyp
- antechamber -i APC-epik_ph5.6.sdf -fi sdf -o APC.gjf -fo gcrt -at gaff2 -gn %nproc=4 -gm %mem=4GB -gk "#B3LYP/6-31G* em=gd3bj pop=MK iop(6/33=2,6/42=6) opt" -rn MOL -nc -3
- # 5-16 17:03 23 /home/dddc/zzy/test/g16/75.2/5.6/b3lyp g16 running
配体优化
5-14 经师兄指点,尝试把磷酸部分和非磷酸部分分开优化,看看哪个部分出了问题
- 23 /home/dddc/zzy/test/g16/75.2/seperate
- # 以分子中间的磷酸根后面一个氧原子后面的碳原子做分界,两个片段都包含这个碳原子,这个碳原子用氢饱和
- # 两个都成功了,磷酸部分的优化比非磷酸部分更快
- # 那为什么合起来就报错呢?
- # B3lyp,pm7 在水溶剂里都可以优化完成,但是真空就不行,水的优化结果去真空优化还是会报错
- 23 /home/dddc/zzy/test/g16/75.2/b3lyp_water_nowater