7

I want to align to ligands in PyMOL like one would do it with protein structures, but I get an error message:

ExecutiveAlign: mobile selection must derive from one object only

I also copied the ligands into separate PDB files, renamed the HETATM entries to ATOM, but still I get this error. I am wondering why PyMOL has problems aligning those small molecules.

PS: Those ligands have similar structure, only different coordinates.

3 Answers3

4

Did you do this through the GUI? That's a bug, the align function never works from the GUI. Try doing it by command line.

align mol1, mol2

Chad Bernier
  • 386
  • 1
  • 10
3

When you align with the align function pymol seeds the structural alignment by doing a sequence alignment first.

You can use the pair_fit function but will have to specify the corespondency between atoms. This function takes two selections, one for each element, that have the same number of atoms.

If the ligands have the exact same chemical structure you can pass the objects directly, if not you will have to make the appropriate selections.

Javier Castellanos
  • 9,346
  • 2
  • 15
  • 19
0

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) :

enter image description here

And only the ATPs :

enter image description here

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}

pippo1980
  • 2,181
  • 3
  • 14
  • 30