2021-04-23 15:40 丨o聽乄雨o丨 閱讀(3) 評論(0) 編輯 收藏docker
在自然環境下,HEM輔酶的Fe原子會與蛋白中一個處於垂直位置的脫氫CYS(CYM)的S造成一個共價鍵,此共價鍵基本垂直於HEM平面,其間的距離、角度、二面角都保持在一直相對穩定的狀態。ide
在實際的計算模擬過程當中,尤爲是用rosetta作對接或者設計的過程當中,咱們不可避免的會遇到CYM與HEM進行共價鍵鏈接的問題,由於rosetta不能對CYM以及HEM這類非自然殘基進行識別,且在計算中還須要考慮CYM與HEM間的共價鍵,因此這是一個異常棘手的問題,今天我就來分享一種解決方案,此方案是我一個師弟偶然中想出來的。ui
在我之前的方案中,我會設計一個全新的非自然殘基CYM,基本相似於CYS,區別在於少了一個HG,此CYM須要使用molfiletoparams命令生成相應的params,在計算中要考慮CYM與上下游氨基酸的肽鍵鏈接以及與HEM-Fe的共價鏈接,因此在matchCST裏面至少要有3個block,這大大的增長了計算的複雜度及操做難度,由於任何一個小小的錯誤都有可能形成CST的失誤並最終使對接和設計失敗。atom
今天要提出的方案中乃是源於使用老方案對一個P450酶進行對接時,報的一個莫名的錯誤,且找不到出錯緣由,因此師弟在苦思冥想中提出了一個全新的方案,這個方案在設計matchCST時,僅須要一個block,不用額外考慮CYM與上下游氨基酸的肽鍵鏈接問題,下面對這個方案進行詳解。設計
首先,準備一個CYM的params文件,將其添加到rosetta fa_standard的l-caa識別庫中(其餘talaris庫也能夠以此方式添加) (~/rosetta_src/main/database/chemical/residue_type_sets/fa_standard/residue_types/l-caa) ,且這個params應該繼承rosetta庫裏自然CYS的屬性,這樣咱們就無需額外構建CYS與上下游氨基酸的肽鍵,下面的CYM.params脫胎於rosetta標準庫裏的CYS.params文件,咱們刪除了HG原子及相關信息,修改了CYS的名稱,AA後改成UNK,刪除了ROTAMER_AA,刪除了PROTON_CHI項,保留了其餘的關鍵條目,保證rosetta能夠對其進行識別,並構建肽鍵:rest
#rosetta residue topology file NAME CYM IO_STRING CYM Z TYPE POLYMER #residue type AA UNK ATOM N Nbb NH1 -0.6046255 -0.350 ATOM CA CAbb CT1 0.0900506 0.100 ATOM C CObb C 0.6884871 0.550 ATOM O OCbb O -0.6884871 -0.550 ATOM CB CH2 CT2 -0.1178426 0.000 ATOM SG SH1 S -0.2463981 -0.290 ATOM H HNbb H 0.3987955 0.250 ATOM HA Hapo HB 0.1157793 0.000 ATOM 1HB Hapo HA 0.0964167 0.000 ATOM 2HB Hapo HA 0.0964167 0.000 LOWER_CONNECT N UPPER_CONNECT C BOND N CA BOND N H BOND CA C BOND CA CB BOND CA HA BOND_TYPE C O 2 BOND CB SG BOND CB 1HB BOND CB 2HB CHI 1 N CA CB SG PROPERTIES PROTEIN ALPHA_AA L_AA SC_ORBITALS METALBINDING METAL_BINDING_ATOMS O SG DISULFIDE_ATOM_NAME SG NBR_ATOM CB # APL O to CB distance -- max O-CB observed in ubiquitin NBR_RADIUS 3.4473 FIRST_SIDECHAIN_ATOM CB RAMA_PREPRO_FILENAME all.ramaProb prepro.ramaProb ACT_COORD_ATOMS SG END ICOOR_INTERNAL N 0.000000 0.000000 0.000000 N CA C ICOOR_INTERNAL CA 0.000000 180.000000 1.458001 N CA C ICOOR_INTERNAL C 0.000000 68.800003 1.523258 CA N C ICOOR_INTERNAL UPPER 150.000000 63.800018 1.328685 C CA N ICOOR_INTERNAL O 180.000000 59.200008 1.231015 C CA UPPER ICOOR_INTERNAL CB -121.600000 69.400000 1.528861 CA N C ICOOR_INTERNAL SG 0.000000 65.900000 1.808803 CB CA N ICOOR_INTERNAL 1HB 121.200000 70.500000 1.090249 CB CA SG ICOOR_INTERNAL 2HB 117.600000 70.500000 1.089821 CB CA 1HB ICOOR_INTERNAL HA -119.000000 71.500000 1.090059 CA N CB ICOOR_INTERNAL LOWER -150.000000 58.299995 1.328685 N CA C ICOOR_INTERNAL H 180.000000 60.849998 1.010000 N CA LOWER
其次,更改fa_standard文件夾下的residue_types.txt,在記錄CYS條目的行下添加CYM的記錄行:orm
residue_types/l-caa/CYM.params
而後,修改prepro.ramaProb文件(/rosetta/main/database/scoring/score_functions/rama/fd/prepro.ramaProb),在這裏直接複製的該文件裏關於CYS的記錄條目,改爲相應的CYM,文件太大,這裏就不上傳了。這樣就實現了自定義拓展rosetta的params庫,rosetta就能夠識別咱們模擬分子裏的CYM殘基了。xml
最後,準備CYM與HEM的matchCST文件,準備方法能夠參考rosetta geometric constraint file(用於match和design) - 丨o聽乄雨o丨 - 博客園 (cnblogs.com)和enzyme design 總體流程及感想 - 丨o聽乄雨o丨 - 博客園 (cnblogs.com)這兩篇博客,下面也附上咱們所用的CST文件內容及options和XML文件。blog
#block 1 for covalent bond for CYM and CPD1 CST::BEGIN TEMPLATE:: ATOM_MAP: 1 atom_name: FE1 N2 N1 TEMPLATE:: ATOM_MAP: 1 residue3: HEM TEMPLATE:: ATOM_MAP: 2 atom_name: SG CB CA TEMPLATE:: ATOM_MAP: 2 residue3: CYM CONSTRAINT:: distanceAB: 2.00 0.20 180.00 1 CONSTRAINT:: angle_A: 98.00 3.00 100.00 360.00 CONSTRAINT:: angle_B: 120.00 10.00 50.00 360.00 CONSTRAINT:: torsion_A: -98.00 5.00 50.00 360.00 CONSTRAINT:: torsion_B: 103.00 5.00 25.00 360.00 CONSTRAINT:: torsion_AB: -176.60 5.00 5.00 360.00 CST::END
-in:file:s Sbai.pdb -in:file:extra_res_fa HEM.params AGI.params -run::preserve_header -packing -ex1 -ex2aro -ex2 -no_optH false -flip_HNQ true -ignore_ligand_chi true -enzdes -cstfile LIG.cst -parser -protocol ligand_dock_2018.xml -out # -level 100 -nstruct 100 #-overwrite
<ROSETTASCRIPTS>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. <SCOREFXNS> <ScoreFunction name="ligand_soft_rep" weights="ligand_soft_rep"> </ScoreFunction> <ScoreFunction name="hard_rep" weights="ligand"> </ScoreFunction> </SCOREFXNS> <LIGAND_AREAS> <LigandArea name="docking_sidechain_X" chain="X" cutoff="6.0" add_nbr_radius="true" all_atom_mode="true" minimize_ligand="10"/> <LigandArea name="final_sidechain_X" chain="X" cutoff="6.0" add_nbr_radius="true" all_atom_mode="true"/> <LigandArea name="final_backbone_X" chain="X" cutoff="7.0" add_nbr_radius="false" all_atom_mode="true" Calpha_restraints="0.3"/> <LigandArea name="docking_sidechain_F" chain="F" cutoff="6.0" add_nbr_radius="true" all_atom_mode="true" minimize_ligand="10"/> <LigandArea name="final_sidechain_F" chain="F" cutoff="6.0" add_nbr_radius="true" all_atom_mode="true"/> <LigandArea name="final_backbone_F" chain="F" cutoff="7.0" add_nbr_radius="false" all_atom_mode="true" Calpha_restraints="0.3"/> </LIGAND_AREAS> <INTERFACE_BUILDERS> <InterfaceBuilder name="side_chain_for_docking" ligand_areas="docking_sidechain_X,docking_sidechain_F"/> <InterfaceBuilder name="side_chain_for_final" ligand_areas="final_sidechain_X,final_sidechain_F"/> <InterfaceBuilder name="backbone" ligand_areas="final_backbone_X,final_backbone_F" extension_window="3"/> </INTERFACE_BUILDERS> <MOVEMAP_BUILDERS> <MoveMapBuilder name="docking" sc_interface="side_chain_for_docking" minimize_water="true"/> <MoveMapBuilder name="final" sc_interface="side_chain_for_final" bb_interface="backbone" minimize_water="true"/> </MOVEMAP_BUILDERS> <SCORINGGRIDS ligand_chain="X" width="20"> <ClassicGrid grid_name="classic" weight="1.0"/> </SCORINGGRIDS> <MOVERS> single movers_X <AddOrRemoveMatchCsts name="cstadd" cst_instruction="add_new"/> add catalytic constraints <Transform name="transform_F" chain="F" box_size="7.0" move_distance="0.2" angle="20" cycles="700" repeats="1" temperature="5"/> <Transform name="transform_X" chain="X" box_size="8.0" move_distance="0.2" angle="20" cycles="700" repeats="1" temperature="5"/> <AddOrRemoveMatchCsts name="cstrem" cst_instruction="remove" keep_covalent="1"/> remove constraints <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"/> <AddOrRemoveMatchCsts name="cstfinadd" cst_instruction="add_pregenerated"/> <InterfaceScoreCalculator name="add_scores" chains="X,F" scorefxn="hard_rep"/> compound movers <ParsedProtocol name="low_res_dock"> <Add mover_name="cstadd"/> <Add mover_name="transform_F"/> <Add mover_name="transform_X"/> <Add mover_name="cstrem"/> </ParsedProtocol> <ParsedProtocol name="high_res_dock"> <Add mover_name="high_res_docker"/> <Add mover_name="final"/> <Add mover_name="cstfinadd"/> </ParsedProtocol> </MOVERS> <PROTOCOLS> <Add mover_name="low_res_dock"/> <Add mover_name="high_res_dock"/> <Add mover_name="add_scores"/> </PROTOCOLS> </ROSETTASCRIPTS>