ROSETTA使用技巧随笔--RosettaLigand Docking
2018-01-23 16:28 丨o聽乄雨o丨 阅读(4256) 评论(11) 编辑 收藏 举报时间不充分,简单记录下自己实践过程中的做法:
1. 首先,非标准残基都需要转换成.params文件,使用 <path-to-Rosetta>/main/source/scripts/python/public/molfile_to_params.py -n TPP TPP.mol2 --chain=F --clobber --keep-names 转换,此命令会产生TPP_0001.pdb和TPP.params两个文件;
2. 其次,如果配体需要进行构象搜索,可以使用obabel,这个免费且简单,见博客http://www.cnblogs.com/wq242424/p/8231600.html,需要做限制性构象搜索的话,就比较难了,我用的是schrodinger的conformational search里的高级搜索;
3. 如果经过上一步产生了ligand_conformers.sdf,就需要为 <path-to-Rosetta>/main/source/scripts/python/public/molfile_to_params.py -n GAD -p GAD --chain=X --center=-31,-35.5,8 --clobber --keep-names --conformers-in-one-file GAD_confs.sdf 命令多加一个参数 --conformers-in-one-file GAD_confs.sdf ,这个参数会在产生的.params文件末尾加一句 PDB_ROTAMERS GAD_conformers.pdb 来表明你的多重构象的文件,此命令会产生GAD.pdb,GAD.params和GAD_conformers.pdb三个文件,其中GAD.pdb是以conformers中第一个构象为结构;
4. 多底物对接的问题,经过查阅手册和论坛,得出的结论是通过控制需要dock的链("X/Y/F/。。。")来指定需要对接的小分子,比如我要对接TPP和GAD,就需要在single movers后面及前面LIGAND_AREAS和INTERFACE_BUILDERS那里指定分别对“F”和“X”链进行dock,并在MOVERS处指定两底物分子分别对应的操作,options不必特意根据双底物改变,下面给出了我做的两个XML文件的示例;
5. StartFrom,Transform,Translate和Rotate的差别和比较。StartFrom是在底物不在蛋白口袋内部,需要程序先将底物以Coordinates为基准放到口袋中的程序;Transform是使用蒙特卡洛的方法,对对接过程的底物和蛋白小分子随机取样的过程;Translate和Rotate则是对处于口袋中的小分子进行平移旋转的操作。底物在蛋白口袋中时,就可以不使用StartFrom;使用Transform时,则需要指定GRID。
6. 执行过程中报 cannot find chain_id X 错误,这个错误很奇怪,有时候出现,有时候不出现,解决方法为在pdb文件开头指定号HETATM的chain id,如下所示:
HEADER xx-MMM-xx HETNAM HEM F 498 HEM HETNAM KAE X 499 KAE ATOM 1 N PRO A 1 34.936 -10.914 -32.480 1.00 0.00 N ATOM 2 CA PRO A 1 35.217 -12.093 -33.349 1.00 0.00 C ATOM 3 C PRO A 1 36.671 -12.422 -33.426 1.00 0.00 C ...... ......
7. 下面的high_resolution_dock XML文件,用途是在你已经知道你的底物的位置的情况下,对底物及周边残基进行高分辨率的对接,与其说对接,可能说packing和minimizing更恰当,因为它是对周围的残基优化的同时变换底物的构象,以求找到最优结果。
分享一下自己的两个xml文件及对应的flags:
low_resolution_dock+high_resolution_dock
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | This protocol will simply do low-resolution followed by high-resolution docking. It will also report the binding energy (ddg) and buried-surface area (sasa) in the score file. <ROSETTASCRIPTS> <SCOREFXNS> <ligand_soft_rep weights= "ligand_soft_rep" > </ligand_soft_rep> <hard_rep weights= "ligand" > </hard_rep> </SCOREFXNS> <LIGAND_AREAS> <docking_sidechain_X chain= "X" cutoff= "6.0" add_nbr_radius= "true" all_atom_mode= "true" minimize_ligand= "10" /> <final_sidechain_X chain= "X" cutoff= "6.0" add_nbr_radius= "true" all_atom_mode= "true" /> <final_backbone_X chain= "X" cutoff= "7.0" add_nbr_radius= "false" all_atom_mode= "true" Calpha_restraints= "0.3" /> </LIGAND_AREAS> <INTERFACE_BUILDERS> <side_chain_for_docking ligand_areas= "docking_sidechain_X" /> <side_chain_for_final ligand_areas= "final_sidechain_X" /> <backbone ligand_areas= "final_backbone_X" extension_window= "3" /> </INTERFACE_BUILDERS> <MOVEMAP_BUILDERS> <docking sc_interface= "side_chain_for_docking" minimize_water= "true" /> <final sc_interface= "side_chain_for_final" bb_interface= "backbone" minimize_water= "true" /> </MOVEMAP_BUILDERS> <MOVERS> single movers <StartFrom name= "start_from_X" chain= "X" > <Coordinates x= "-31" y= "-35.5" z= "8" /> </StartFrom> <CompoundTranslate name= "compound_translate" randomize_order= "false" allow_overlap= "false" > <Translate chain= "X" distribution= "uniform" angstroms= "2.0" cycles= "50" /> </CompoundTranslate> <Rotate name= "rotate_X" chain= "X" distribution= "uniform" degrees= "360" cycles= "500" /> <SlideTogether name= "slide_together" chains= "X" /> <HighResDocker name= "high_res_docker" cycles= "6" repack_every_Nth= "3" scorefxn= "ligand_soft_rep" movemap_builder= "docking" /> <FinalMinimizer name= "final" scorefxn= "hard_rep" movemap_builder= "final" /> <InterfaceScoreCalculator name= "add_scores" chains= "X" scorefxn= "hard_rep" /> compound movers <ParsedProtocol name= "low_res_dock" > <Add mover_name= "start_from_X" /> <Add mover_name= "compound_translate" /> <Add mover_name= "rotate_X" /> <Add mover_name= "slide_together" /> </ParsedProtocol> <ParsedProtocol name= "high_res_dock" > <Add mover_name= "high_res_docker" /> <Add mover_name= "final" /> </ParsedProtocol> </MOVERS> <PROTOCOLS> <Add mover_name= "low_res_dock" /> <Add mover_name= "high_res_dock" /> <Add mover_name= "add_scores" /> </PROTOCOLS> </ROSETTASCRIPTS> |
对应的flag options文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | - in :file:s inputs_GAD/GALS_TPP_GAD.pdb - in :file:extra_res_fa inputs_GAD/TPP. params inputs_GAD/GAD. params -packing -ex1 -ex2aro -ex2 -no_optH false -flip_HNQ true -ignore_ligand_chi true -parser -protocol inputs_GAD/ligand_dock.xml - out -path:all outputs_GAD -nstruct 1000 -overwrite |
high_resolution_dock_only
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | This protocol will simply do high-resolution docking. It will also report the binding energy (ddg) and buried-surface area (sasa) in the score file. <ROSETTASCRIPTS> <SCOREFXNS> <ligand_soft_rep weights= "ligand_soft_rep" > </ligand_soft_rep> <hard_rep weights= "ligand" > </hard_rep> </SCOREFXNS> <LIGAND_AREAS> <docking_sidechain_X chain= "X" cutoff= "6.0" add_nbr_radius= "true" all_atom_mode= "true" minimize_ligand= "10" /> <final_sidechain_X chain= "X" cutoff= "6.0" add_nbr_radius= "true" all_atom_mode= "true" /> <final_backbone_X chain= "X" cutoff= "7.0" add_nbr_radius= "false" all_atom_mode= "true" Calpha_restraints= "0.3" /> </LIGAND_AREAS> <INTERFACE_BUILDERS> <side_chain_for_docking ligand_areas= "docking_sidechain_X" /> <side_chain_for_final ligand_areas= "final_sidechain_X" /> <backbone ligand_areas= "final_backbone_X" extension_window= "3" /> </INTERFACE_BUILDERS> <MOVEMAP_BUILDERS> <docking sc_interface= "side_chain_for_docking" minimize_water= "true" /> <final sc_interface= "side_chain_for_final" bb_interface= "backbone" minimize_water= "true" /> </MOVEMAP_BUILDERS> <SCORINGGRIDS ligand_chain= "X" width= "15" > <classic grid_type= "ClassicGrid" weight= "1.0" /> </SCORINGGRIDS> <MOVERS> <Transform name= "transform" chain= "X" box_size= "7.0" move_distance= "0.2" angle= "20" cycles= "500" repeats= "1" temperature= "5" /> <HighResDocker name= "high_res_docker" cycles= "6" repack_every_Nth= "3" scorefxn= "ligand_soft_rep" movemap_builder= "docking" /> <FinalMinimizer name= "final" scorefxn= "hard_rep" movemap_builder= "final" /> <InterfaceScoreCalculator name= "add_scores" chains= "X" scorefxn= "hard_rep" /> </MOVERS> <PROTOCOLS> <Add mover_name= "transform" /> <Add mover_name= "high_res_docker" /> <Add mover_name= "final" /> <Add mover_name= "add_scores" /> </PROTOCOLS> </ROSETTASCRIPTS> |
对应的flag_options文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | - in :file:s inputs_IMA/GALS_IMA.pdb - in :file:extra_res_fa inputs_IMA/IMA. params -packing -ex1 -ex2aro -ex2 -no_optH false -flip_HNQ true -ignore_ligand_chi true -parser -protocol inputs_IMA/ligand_dock.xml - out -path:all outputs_IMA -nstruct 1000 -overwrite |
多底物对接(两个小分子的链分别对应“X”和“F”)
1. 手动指定两个小分子(“X”,“F”)的位置(使用StartFrom mover指定,对应的Coordinates)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | This protocol will simply do low-resolution followed by high-resolution docking. It will also report the binding energy (ddg) and buried-surface area (sasa) in the score file. <ROSETTASCRIPTS> <SCOREFXNS> <ligand_soft_rep weights= "ligand_soft_rep" > </ligand_soft_rep> <hard_rep weights= "ligand" > </hard_rep> </SCOREFXNS> <LIGAND_AREAS> <docking_sidechain_X chain= "X" cutoff= "6.0" add_nbr_radius= "true" all_atom_mode= "true" minimize_ligand= "10" /> <final_sidechain_X chain= "X" cutoff= "6.0" add_nbr_radius= "true" all_atom_mode= "true" /> <final_backbone_X chain= "X" cutoff= "7.0" add_nbr_radius= "false" all_atom_mode= "true" Calpha_restraints= "0.3" /> <docking_sidechain_F chain= "F" cutoff= "6.0" add_nbr_radius= "true" all_atom_mode= "true" minimize_ligand= "10" /> <final_sidechain_F chain= "F" cutoff= "6.0" add_nbr_radius= "true" all_atom_mode= "true" /> <final_backbone_F chain= "F" cutoff= "7.0" add_nbr_radius= "false" all_atom_mode= "true" Calpha_restraints= "0.3" /> </LIGAND_AREAS> <INTERFACE_BUILDERS> <side_chain_for_docking ligand_areas= "docking_sidechain_X,docking_sidechain_F" /> <side_chain_for_final ligand_areas= "final_sidechain_X,final_sidechain_F" /> <backbone ligand_areas= "final_backbone_X,final_backbone_F" extension_window= "3" /> </INTERFACE_BUILDERS> <MOVEMAP_BUILDERS> <docking sc_interface= "side_chain_for_docking" minimize_water= "true" /> <final sc_interface= "side_chain_for_final" bb_interface= "backbone" minimize_water= "true" /> </MOVEMAP_BUILDERS> <MOVERS> single movers_X <StartFrom name= "start_from_X" chain= "X" > <Coordinates x= "-31" y= "-35.5" z= "8" /> </StartFrom> <StartFrom name= "start_from_F" chain= "F" > <Coordinates x= "-27.26" y= "-34.56" z= "4.87" /> </StartFrom> <CompoundTranslate name= "compound_translate" randomize_order= "false" allow_overlap= "false" > <Translate chain= "X" distribution= "uniform" angstroms= "2.0" cycles= "50" /> <Translate chain= "F" distribution= "uniform" angstroms= "2.0" cycles= "50" /> </CompoundTranslate> <Rotate name= "rotate_X" chain= "X" distribution= "uniform" degrees= "360" cycles= "500" /> <Rotate name= "rotate_F" chain= "F" distribution= "uniform" degrees= "360" cycles= "500" /> <SlideTogether name= "slide_together" chains= "X,F" /> <HighResDocker name= "high_res_docker" cycles= "6" repack_every_Nth= "3" scorefxn= "ligand_soft_rep" movemap_builder= "docking" /> <FinalMinimizer name= "final" scorefxn= "hard_rep" movemap_builder= "final" /> <InterfaceScoreCalculator name= "add_scores" chains= "X,F" scorefxn= "hard_rep" /> compound movers <ParsedProtocol name= "low_res_dock" > <Add mover_name= "start_from_X" /> <Add mover_name= "start_from_F" /> <Add mover_name= "compound_translate" /> <Add mover_name= "rotate_X" /> <Add mover_name= "rotate_F" /> <Add mover_name= "slide_together" /> </ParsedProtocol> <ParsedProtocol name= "high_res_dock" > <Add mover_name= "high_res_docker" /> <Add mover_name= "final" /> </ParsedProtocol> </MOVERS> <PROTOCOLS> <Add mover_name= "low_res_dock" /> <Add mover_name= "high_res_dock" /> <Add mover_name= "add_scores" /> </PROTOCOLS> </ROSETTASCRIPTS> |
2. 其中一个小分子(“F”)位置已知,另一个小分子(“X”)的位置需要指定(首先需使用SCORINGGRIDS为已知位置的小分子指定盒子,然后使用Transform指定其动作模式)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | This protocol will simply do low-resolution followed by high-resolution docking. It will also report the binding energy (ddg) and buried-surface area (sasa) in the score file. <ROSETTASCRIPTS> <SCOREFXNS> <ligand_soft_rep weights= "ligand_soft_rep" > </ligand_soft_rep> <hard_rep weights= "ligand" > </hard_rep> </SCOREFXNS> <LIGAND_AREAS> <docking_sidechain_X chain= "X" cutoff= "6.0" add_nbr_radius= "true" all_atom_mode= "true" minimize_ligand= "10" /> <final_sidechain_X chain= "X" cutoff= "6.0" add_nbr_radius= "true" all_atom_mode= "true" /> <final_backbone_X chain= "X" cutoff= "7.0" add_nbr_radius= "false" all_atom_mode= "true" Calpha_restraints= "0.3" /> <docking_sidechain_F chain= "F" cutoff= "6.0" add_nbr_radius= "true" all_atom_mode= "true" minimize_ligand= "10" /> <final_sidechain_F chain= "F" cutoff= "6.0" add_nbr_radius= "true" all_atom_mode= "true" /> <final_backbone_F chain= "F" cutoff= "7.0" add_nbr_radius= "false" all_atom_mode= "true" Calpha_restraints= "0.3" /> </LIGAND_AREAS> <INTERFACE_BUILDERS> <side_chain_for_docking ligand_areas= "docking_sidechain_X,docking_sidechain_F" /> <side_chain_for_final ligand_areas= "final_sidechain_X,final_sidechain_F" /> <backbone ligand_areas= "final_backbone_X,final_backbone_F" extension_window= "3" /> </INTERFACE_BUILDERS> <MOVEMAP_BUILDERS> <docking sc_interface= "side_chain_for_docking" minimize_water= "true" /> <final sc_interface= "side_chain_for_final" bb_interface= "backbone" minimize_water= "true" /> </MOVEMAP_BUILDERS> <SCORINGGRIDS ligand_chain= "F" width= "15" > <classic grid_type= "ClassicGrid" weight= "1.0" /> </SCORINGGRIDS> <MOVERS> single movers_X <StartFrom name= "start_from_X" chain= "X" > <Coordinates x= "-31" y= "-35.5" z= "8" /> </StartFrom> <Transform name= "transform_F" chain= "F" box_size= "7.0" move_distance= "0.2" angle= "20" cycles= "500" repeats= "1" temperature= "5" /> <CompoundTranslate name= "compound_translate" randomize_order= "false" allow_overlap= "false" > <Translate chain= "X" distribution= "uniform" angstroms= "2.0" cycles= "50" /> <Translate chain= "F" distribution= "uniform" angstroms= "2.0" cycles= "50" /> </CompoundTranslate> <Rotate name= "rotate_X" chain= "X" distribution= "uniform" degrees= "360" cycles= "500" /> <Rotate name= "rotate_F" chain= "F" distribution= "uniform" degrees= "360" cycles= "500" /> <SlideTogether name= "slide_together" chains= "X,F" /> <HighResDocker name= "high_res_docker" cycles= "6" repack_every_Nth= "3" scorefxn= "ligand_soft_rep" movemap_builder= "docking" /> <FinalMinimizer name= "final" scorefxn= "hard_rep" movemap_builder= "final" /> <InterfaceScoreCalculator name= "add_scores" chains= "X,F" scorefxn= "hard_rep" /> compound movers <ParsedProtocol name= "low_res_dock" > <Add mover_name= "start_from_X" /> <Add mover_name= "transform_F" /> <Add mover_name= "compound_translate" /> <Add mover_name= "rotate_X" /> <Add mover_name= "rotate_F" /> <Add mover_name= "slide_together" /> </ParsedProtocol> <ParsedProtocol name= "high_res_dock" > <Add mover_name= "high_res_docker" /> <Add mover_name= "final" /> </ParsedProtocol> </MOVERS> <PROTOCOLS> <Add mover_name= "low_res_dock" /> <Add mover_name= "high_res_dock" /> <Add mover_name= "add_scores" /> </PROTOCOLS> </ROSETTASCRIPTS> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架