My attempt using ATP of 4gt3.pdb
, 2p09.pdb
and 3dgl.pdb
as ligand.
Structures are aligned to 3dgl.pdb's ATP
via fit
Pymol command (https://pymolwiki.org/index.php/Fit). My Pymol version is 2.3.0
:
import pymol
print('########## PYMOL VERSION ##########################################')
print(' ', pymol.cmd.get_version() )
print('###################################################################')
pymol.finish_launching()
pymol.cmd.load('4gt3.pdb' , '4gt3')
pymol.cmd.load('2p09.pdb' , '2p09')
pymol.cmd.load('3dgl.pdb' , '3dgl')
pymol.cmd.remove('resn HOH')
pymol.cmd.select('4gt3_ATP' , '4gt3 and resn ATP')
pymol.cmd.select('2p09_ATP' , '2p09 and resn ATP')
pymol.cmd.select('3dgl_ATP' , '3dgl and resn ATP')
pymol.cmd.fit('2p09_ATP' , '3dgl_ATP' , matchmaker = 2 , object = '2p09_ATP_moved' , quiet = 1)
pymol.cmd.fit('4gt3_ATP' , '3dgl_ATP' , matchmaker = -1 , object = '4gt3_ATP_moved', quiet = 1)
pymol.cmd.save('2p09_ATP_moved.pdb' , '2p09_ATP_moved')
pymol.cmd.save('4gt3_ATP_moved.pdb' , '4gt3_ATP_moved')
pymol.cmd.save('4gt3_moved_on_3gdl.pdb' , '4gt3')
pymol.cmd.save('2p09_moved_on_3fdl.pdb' , '2p09')
pymol.cmd.reinitialize()
pymol.cmd.load('4gt3_moved_on_3gdl.pdb' , '4gt3_moved_on_3gdl.pdb')
pymol.cmd.load('2p09_moved_on_3fdl.pdb' , '22p09_moved_on_3fdl')
pymol.cmd.load('3dgl.pdb' , '3dgl')
pymol.cmd.remove('resn HOH')
Results, image of the three aligned structure by ATP alignment (see pymol.cmd.fit('2p09_ATP' , '3dgl_ATP' , matchmaker = 2 , object = '2p09_ATP_moved' , quiet = 1)
:

And only the ATPs :

be sure to use the right matchmaker
parameter for the alignment:
fit mobile, target [, mobile_state [, target_state [, quiet [, matchmaker [, cutoff [, cycles [, object ]]]]]]]
ARGUMENTS
mobile = string: atom selection
target = string: atom selection
mobile_state = integer: object state {default=0, all states)
target_state = integer: object state {default=0, all states)
matchmaker = integer: how to match atom pairs {default: 0}
....-1: assume that atoms are stored in the identical order
....0/1: match based on all atom identifiers (segi,chain,resn,resi,name,alt)
....2: match based on ID
....3: match based on rank
....4: match based on index (same as -1 ?)
cutoff = float: outlier rejection cutoff (only if cycles>0) {default: 2.0}
cycles = integer: number of cycles in outlier rejection refinement {default: 0}
object = string: name of alignment object to create {default: None}