Re: [modeller_usage] How to introduce a covalent bond in a model?
To: DimitryASuplatov <>, ModellerList <>
Subject: Re: [modeller_usage] How to introduce a covalent bond in a model?
From: Modeller Caretaker <>
Date: Fri, 19 Sep 2008 12:52:41 -0700
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
--
http://www.salilab.org/modeller/
Modeller mail list: http://salilab.org/mailman/listinfo/modeller_usage