Files
pymol/script/show_protein_protein_interaction.py
2024-09-07 09:12:14 +08:00

92 lines
2.8 KiB
Python

from pymol import cmd
from pymol.cmd import util
import sys
from pymol_color_plugin import colorp
def HBond(ChA,ChB):
name = f'Hbond'
dist = cmd.distance(name, ChA,ChB, '3.5', '2')
return name
def Pi_Pi_interaction(ChA,ChB):
name = f'PI_PI'
cmd.distance(name,ChA, ChB,'5.5','6')
return name
def Cation_Pi_interaction(ChA,ChB):
name = f'PI_Cation'
cmd.distance(name, ChA, ChB, '5.5', '7')
return name
def Salt_bridge_positive(ChA,ChB):
name = f'SBP'
selection_1 = f'{ChB} and ((resn LYS and name NZ) or (resn ARG and name NE+NH*))'
selection_2 = f'{ChA} and resn ASP+GLU and name OD*+OE*'
cmd.distance(name,selection_1,selection_2,'5.0','0')
return name
def Salt_bridge_negative(ChA,ChB):
name = f'SBN'
selection_1 = f'{ChA} and ((resn LYS and name NZ) or (resn ARG and name NE+NH*))'
selection_2 = f'{ChB} and resn ASP+GLU and name OD*+OE*'
cmd.distance(name,selection_1,selection_2,'5.0','0')
return name
# def T_stacking(ChA, ChB):
# name = 'T_stacking'
# # 添加适当的距离和选择标准
# cmd.distance(name, ChA, ChB, '5.5', '2')
# return name
# def Hydrophobic_interaction(ChA, ChB):
# name = 'Hydrophobic'
# # 添加适当的距离和选择标准
# cmd.distance(name, ChA, ChB, '7.0', '2')
# return name
# def VDW_interaction(ChA, ChB):
# name = 'VDW'
# # 添加适当的距离和选择标准
# cmd.distance(name, ChA, ChB, '4.0', '2')
# return name
def show_label_name(obj:str):
cmd.label(f'name CA and {obj}', 'oneletter+resi')
cmd.set('label_bg_color', -7, '', 0)
cmd.set('label_size', 18, '', 0)
cmd.set('label_font_id', '7')
def interact(obj:str='epitope', distance:int=5):
cmd.show('stick',f'{obj}')
cmd.set('stick_radius', '0.3', f'{obj}')
colorp.color_mole(obj)
#show_label_name(obj)
cmd.select('nearby',f'byres {obj} around {distance}')
cmd.show('stick','nearby')
cmd.set('stick_radius', '0.1', 'nearby')
cmd.set('cartoon_transparency', 0.7, selection='nearby')
Hbond = HBond(obj, 'nearby')
PI = Pi_Pi_interaction(obj, 'nearby')
C_PI = Cation_Pi_interaction(obj, 'nearby')
SBP = Salt_bridge_positive(obj, 'nearby')
SBN = Salt_bridge_negative(obj, 'nearby')
cmd.set('dash_color', 'yellow', Hbond)
cmd.set('dash_color', 'blue', PI)
cmd.set('dash_color', 'blue', C_PI)
cmd.set('dash_color', 'orange', SBP)
cmd.set('dash_color', 'orange', SBN)
cmd.set('dash_radius', '0.07')
cmd.set('dash_gap', '0.3')
#cmd.remove('e. h and neighbor(name C*)')
cmd.zoom('Hbond')
def main():
cmd.reinitialize()
cmd.fetch('5sws',type='pdb')
colorp.pretty()
cmd.select('epitope','chain C and resi 1-9')
cmd.zoom('nearby')
interact()
cmd.save(f'5sws_interaction.pse')