diff --git a/MindSPONGE/README.md b/MindSPONGE/README.md index 7af776d4fa26d83eb1a276ad225779ed0e8bfe04..aa1257a85aef449b97734a7ae211463225408151 100644 --- a/MindSPONGE/README.md +++ b/MindSPONGE/README.md @@ -42,7 +42,7 @@ MindSPONGE(Simulation Package tOwards Next GEneration molecular modelling)是基 - 蛋白质 violation 计算 - ##### 使蛋白质推理模型预测的pdb虽然在绝大多数原子上都准确预测出理想的键长和键角,然而原子间是否存在冲突以及肽键信息对于真实结构也尤为重要,violation 则计算了预测pdb的总原子间冲突程度以及肽键键长键角是否满足一定的限制条件。该计算数值对于评估预测蛋白质结构是否合理以及后续做蛋白质relax尤其重要 + ##### 使蛋白质推理模型预测的pdb虽然在绝大多数原子上都准确预测出理想的键长和键角,然而原子间是否存在冲突以及肽键信息对于真实结构也尤为重要,violation 则计算了预测pdb的总原子间冲突程度以及肽键键长键角是否满足一定的限制条件。该计算数值对于评估预测蛋白质结构是否合理以及后续做蛋白质松弛尤其重要 ```bash from mindsponge.loss import get_violation_loss @@ -71,7 +71,7 @@ transformed_quat = rot_to_quat(rot) **更多应用案例请见**: -- [蛋白质结构松弛](https://gitee.com/mindspore/mindscience/tree/dev-md/MindSPONGE/applications/molecular_dynamics/protein_relax/) +- [蛋白质结构松弛](https://gitee.com/mindspore/mindscience/tree/dev-md/MindSPONGE/applications/molecular_dynamics/protein_relax) - [蛋白质结构预测 MEGA-Fold](https://gitee.com/mindspore/mindscience/tree/dev-md/MindSPONGE/applications/MEGAProtein/) - [蛋白质结构评估 MEGA-Assessment](https://gitee.com/mindspore/mindscience/tree/dev-md/MindSPONGE/applications/MEGAProtein/) - [共进化数据引擎 MEGA-EvoGen](https://gitee.com/mindspore/mindscience/tree/dev-md/MindSPONGE/applications/MEGAProtein/) diff --git a/MindSPONGE/applications/molecular_dynamics/protein_relax/README.md b/MindSPONGE/applications/molecular_dynamics/protein_relax/README.md new file mode 100644 index 0000000000000000000000000000000000000000..f3dda4fb0002a2798f28204ac810fbb34c2c3aa8 --- /dev/null +++ b/MindSPONGE/applications/molecular_dynamics/protein_relax/README.md @@ -0,0 +1,53 @@ +# Protein_Relax + +- [概述](#概述) +- [环境准备](#环境准备) +- [脚本执行](#脚本执行) + +## 概述 + +使用蛋白质结构推理工具预测出的蛋白质结构文件通常都含有一定的violation(原子间存在冲突,原子间肽键键长键角无法满足一定的物理限制条件), 为了预测所得蛋白质结构更加准确,可以参考本案例对蛋白质结构进行松弛。通过引入额外的损失来修正这些结构的violations,构建损失的方式为:无损失的结构能通过lDDT(局部距离差测试)中的立体化学结构质量检查。损失的构建包括三个部分,键长violation损失、键角violation损失、碰撞损失。 + +键长violation损失由flat-bottom L1 损失表示(由一定的公差$\tau$修正),计算如下式: + +$$ +\mathcal{L}_{\text {bondlength }}=\frac{1}{N_{\text {bonds }}} \sum_{i=1}^{N_{\text {bonds }}} \max \left(\left|\ell_{\text {pred }}^{i}-\ell_{\text {lit }}^{i}\right|-\tau, 0\right) +$$ + +其中$\ell_{\text {pred }}^{i}$是预测结构的键长,$\ell_{\text {lit }}^{i}$是文献记录的键长值,$N_{\text {bonds }}$是结构中的键的总数。公差$\tau$设定为$12\sigma_{lit}$($\sigma_{lit}$为文献所记录的该键长的标准差)。系数选择12是为了确保产生的键长能通过lDDT的立体化学结构质量检测(默认公差因子为12)。 + +键角的violation损失偏差也使用flat-bottom L1损失来修正,通过计算成键方向上的单位向量的点积获得键角的余弦值,$\cos \alpha=\hat{\overrightarrow{\mathbf{v}}}_{1}^{\top} \hat{\overrightarrow{\mathbf{v}}}_{2}$ +$$ +\mathcal{L}_{\text {bondangle }}=\frac{1}{N_{\text {angles }}} \sum_{i=1}^{N_{\text {angles }}} \max \left(\left|\cos \alpha_{\text {pred }}^{i}-\cos \alpha_{\text {lit }}^{i}\right|-\tau, 0\right) +$$ + +其中$\ \alpha_{\text {pred }}^{i}$是预测结构中的键角,$\ \alpha_{\text {lit }}^{i}$是文献记录的角度值。${N_{\text {angles }}}$是结构中的键角总数。公差$\tau$设定为文献中键角标准偏差的-12到12倍。 + +碰撞损失的计算使用单边的flat-bottom势,只对极小的距离进行修正。 + +$$ +\mathcal{L}_{\mathrm{clash}}=\sum_{i=1}^{N_{\text {nbpairs }}} \max \left(d_{\mathrm{lit}}^{i}-\tau-d_{\mathrm{pred}}^{i}, 0\right) +$$ + +其中$d_{\mathrm{pred}}^{i}$是预测结构中两个非键原子间的距离,$d_{\mathrm{lit}}^{i}$是文献里由范德华半径得到的碰撞距离。${N_{\text {nbpairs }}}$是结构中所有非键原子对的数目。公差$\tau$设定为1.5Å。 + +这些损失一起构成了violation损失。 + +$$ +\mathcal{L}_{\text {viol }}=\mathcal{L}_{\text {bondlength }}+\mathcal{L}_{\text {bondangle }}+\mathcal{L}_{\text {clash }} . +$$ + +这种violation损失只在微调训练阶段应用。在更早阶段的训练中应用violation损失会造成严重的动力学不稳定。 + +## 环境准备 + + 1. 安装Xponge模拟软件, 参考[Xponge安装页面](https://pypi.org/project/Xponge/0.0.7/) + 2. 安装MindSponge工具包, 见[MindSponge主页](https://gitee.com/mindspore/mindscience/tree/dev-md/MindSPONGE) + +## 脚本执行 + +进入 mindscience/MindSPONGE/applications/molecular_dynamics/protein_relax, 执行如下脚本即可(xxx.pdb 为输入pdb, yyy.pdb 为输出pdb文件) + +```bash + python protein_relax_pipeline.py -i xxx.pdb -o yyy.pdb +```