Align two different protein compositions

22 views
Skip to first unread message

distribut...@googlemail.com

unread,
Nov 18, 2022, 7:17:47 AM11/18/22
to MDnalysis discussion
Hi all,

I'm trying to align protein A to protein B, then write out the new PDB coordinates for the adjusted.

I can find lots of notes and examples for when protein A and B are the same, they only differ in their conformation, but I can't find any examples when the two proteins differ in composition i.e., different number of residues and residue types. 

In context:
I have two proteins. They are almost identical in composition and conformation; however, protein B has nine additional residues (a tetracycline ligand, six metal ions, and the NME and ACE capping groups).  I would like to align protein B onto protein A, via their backbones, then write out the new coordinates of the aligned protein B. 

Thanks
Anthony

Oliver Beckstein

unread,
Nov 18, 2022, 10:18:55 AM11/18/22
to mdnalysis-...@googlegroups.com
Hi Anthony,

Sorry, this is only a short hint, I’m typing this on mobile…

The docs for alignto show that the select keyword can be a dict with TWO selections (reference and mobile). If you can engineer the selections to produce equivalent atoms (eg CA) then the superposition will be on these atoms. 

The fasta2select() helper function can produce the select dict from a sequence alignment:


And there’s also a convenience function to generate a pairwise alignment but I don’t remember how to use it with alignto(). 

The other tools relying on structural position have the same flexibility in setting different selections for ref and mobile. 

Alternatively, you should be able to pass in AtomGroups of corresponding residues. By default the WHOLE universe does a then reoriented with the optimal transformation (although that can changed with “subselection”.)

Oliver

Am 11/18/22 um 05:17 schrieb 'distribut...@googlemail.com' via MDnalysis discussion <mdnalysis-...@googlegroups.com>:

Hi all,
--
You received this message because you are subscribed to the Google Groups "MDnalysis discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mdnalysis-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/mdnalysis-discussion/86dfed88-bbca-4dc7-8232-a46e2588fbb4n%40googlegroups.com.

distribut...@googlemail.com

unread,
Nov 18, 2022, 12:06:32 PM11/18/22
to MDnalysis discussion
Hi Oliver,

Thanks so much for the reply, especially via your phone! 

Thank you for that information; that's great to know. MDAnalysis is becoming my default go-to MD analysis tool kit, so the more information the better :-)  

I managed to sort it using the following code:

import MDAnalysis
from MDAnalysis import transformations as trans

outputFile = "C:/Users/yewro/Documents/MINES_LECTURES/superimposed.pdb"

# The backbone structure WITH tetracycline needs to be moved
withTetracycline = "C:/Users/yewro/Documents/MINES_LECTURES/tetracycline_backbones.pdb"
universeWithTetracycline = mda.Universe(withTetracycline)

# The backbone structure WITHOUT tetracycline is the REFERENCE (template) This does not move
withoutTetracycline = "C:/Users/yewro/Documents/MINES_LECTURES/target_backbones.pdb"
universeWithoutTetracycline = mda.Universe(withoutTetracycline)

#move the structure WITH tetracycline onto the structure WITHOUT tetracycline (your MMP1 model) 
alignTransformation = trans.fit_rot_trans(universeWithTetracycline, universeWithoutTetracycline,
                                         weights=universeWithTetracycline.atoms.masses)

# apply the new transformation matrix to the complete file (not just the backbones) and then write it out
universeWithTetracycline.trajectory.add_transformations(alignTransformation)
universeWithTetracycline.atoms.write(outputFile)

The only none-MDAnalysis steps were using Gromacs to ensure only common backbone atoms were included. 
Reply all
Reply to author
Forward
0 new messages