How to introduce a covalent bond in a model?
Hello, I want to link N-end of the chain alpha with C-end of the chain beta in my peptide. Terminal acids are quite near to each other (4 A), thus it is possible. I have made up some workarounds like switching the chains in pdb and seq files before making the alignment for modeller etc.; I dont like it though. I suggest that there should be some universal function built-in modeller for this kind of purpose. Do you know how to manage this?
Thank you. I appreciate your help. SDA
DimitryASuplatov wrote: > I want to link N-end of the chain alpha with C-end of the chain beta in > my peptide. Terminal acids are quite near to each other (4 A), thus it > is possible. > I have made up some workarounds like switching the chains in pdb and seq > files before making the alignment for modeller etc.; I dont like it > though. > I suggest that there should be some universal function built-in modeller > for this kind of purpose. Do you know how to manage this?
Sure - modifications such as these to the protein topology are made using the model.patch() method, which applies a CHARMM-style patch. To link two amino acids with a peptide bond, you can use the LINK patch. There is a similar example in the wiki (for making a cyclic protein) at http://salilab.org/modeller/wiki/Cyclic%20protein
In your case, you will still need to disable the default NTER and CTER patches (since you are applying your patch to the termini) but then manually apply these patches for the other termini that you are not patching with LINK. For example, if your protein has two chains labeled A and B, for automodel you'd want something like
from modeller.automodel import *
log.verbose() env = environ()
# Disable default NTER and CTER patching env.patch_default = False
class MyModel(automodel): def special_patches(self, aln): # Link A chain NTER with B chain CTER (CTER must be given # first to the LINK patch) self.patch(residue_type='LINK', residues=(self.chains['B'].residues[-1], self.chains['A'].residues[0])) # Manually apply other termini patches: self.patch(residue_type='CTER', residues=self.chains['A'].residues[-1]) self.patch(residue_type='NTER', residues=self.chains['B'].residues[0])
# Use the new 'MyModel' class rather than 'automodel' a = MyModel(env, alnfile='alignment.ali', knowns='5fd1', sequence='1fdx')
a.starting_model = a.ending_model = 1 a.make()
If you have extra chains, you'd have to apply the CTER and NTER patches to the ends of each extra chain, since you turned off patch_default.
If you want to make some other kind of linkage between the two residues (not the regular peptide bond) then you'll have to define your own patching residue type in modlib/top_heav.lib.
Ben Webb, Modeller Caretaker
participants (2)
-
DimitryASuplatov
-
Modeller Caretaker