Ligand alignment to a fragment of a protein structure
Entering edit mode
5.3 years ago
kazenokizi ▴ 30

Hello all,

I am trying to align a ligand to a protein fragment using their pdb files. The two do not have the same number of atoms, neither do they have the same number of atoms of the same type. Sequence-based alignment is not successful in pymol or chimera, as the ligand does not have amino acids in. Are there any pure structure-based alignment packages/online tools that are able to achieve some success in this case?

Thank you and looking forward to your input.


alignment ligand pymol chimera command line • 2.0k views
Entering edit mode
5.3 years ago

If I get it right you want to do virtual small ligand docking (molecular docking): to model how ligand is located inside of the available pockets in pdb structure. I am using commercial tools to model this. There are programs from Molsoft like ICM Pro to do it and from Schrodinger like Glide. I might be able to help you with your task depending on your goals. Unfortunately, I am not very familiar with good free tools for molecular docking.

Entering edit mode

Hello. Thank you for the comment, but I am not sure molecular docking is what I am thinking. Say I have a segment of alpha helix, and I have a molecule which has similar number of atoms to the fragment, and its structure is a bit alike to the helix, though the molecule does not have amino acid in it. I have tried PYMOL to overlap them by 'align', but the result is a random overlapping. I understand PYMOL uses sequential alignment in the first place, so in my case the alignment did not work out. May you comment on this? Thank you.

Entering edit mode

What you are describing to me sounds more like molecular superposition or structure similarity. Have you tried saving pymol as pdb and using biopython's Bio.PDB.Superposition() method? This should do the trick for "rigid" superposition (also you will need to install python and biopython).

import Bio.PDB
pdb_parser = Bio.PDB.PDBParser(QUIET = True)
ref_structure = pdb_parser.get_structure("reference", "1CDW.pdb")
sample_structure = pdb_parser.get_structure("samle", "1TGH.pdb")
ref_model = ref_structure[0]
sample_model = sample_structure[0]
ref_atoms = []
sample_atoms = []

for ref_chain in ref_model:
  for ref_res in ref_chain:

for sample_chain in sample_model:
  for sample_res in sample_chain:

super_imposer = Bio.PDB.Superimposer()
super_imposer.set_atoms(ref_atoms, sample_atoms)

# print RMSD that is a measure of average distance between the atoms in two structures
print super_imposer.rms

# sample_structure now holds superimposed "aligned" structure.

Depending on your PyMOL molecule content, you may want to choose different types of atoms in protein structure and in your molecule for superposition. In get_structure() you can use local path to files.

Please let us know if this is what you were looking for and if it works.

In general, this is optimization question and the way to do it properly depends on the purpose. There are ways to do flexible superposition, use physical/chemical properties for it, use biological function. Most of the times refinements to the structures before and after superposition are needed, some changes to charge of different residues, mutations, phosphorylation and so on.

Entering edit mode

This looks like it might work if the number of atoms is the same between the two molecules, and the original post said this is not the case. In other words, ref_atoms and samples_atoms needs to be identical in length. Am I wrong here?


Login before adding your answer.

Traffic: 883 users visited in the last hour
Help About
Access RSS

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6