Hi all, I want to force a non-proline peptide bond to the cis configuration in a 64-residue model. I found a routine to force Pro residue to the cis configuration in the FAQ. I assumed that it would not make a difference if the residue it applies to is not an actual proline and I include the routine in my .py script, but I got only models with the trans peptide configuration. This is an example of my .py file :
# Homology modelling by the automodel class from modeller import * # Load standard Modeller classes from modeller.automodel import * # Load the automodel class
# Redefine the special_patches routine to include the additional disulfides # (this routine is empty by default): class mymodel(automodel): def special_patches(self, aln): # A disulfide between residues 12 and 63: self.patch(residue_type='DISU', residues=(self.residues['12'],
self.residues['63']))
# A disulfide between residues 16 and 36: self.patch(residue_type='DISU', residues=(self.residues['16'],
self.residues['36']))
# A disulfide between residues 22 and 46: self.patch(residue_type='DISU', residues=(self.residues['22'],
self.residues['46']))
# A disulfide between residues 26 and 48: self.patch(residue_type='DISU', residues=(self.residues['26'],
self.residues['48']))
# Redefine the special_restraints routine to force Pro to cis conformation: # (this routine is empty by default): class mymodel(automodel): def special_restraints(self, aln): a = self.atoms cispeptide(self.restraints, atom_ids1=(a['O:9'], a['C:9'], a['N:10'], a['CA:10']), atom_ids2=(a['CA:9'], a['C:9'], a['N:10'], a['CA:10']))
log.verbose() # request verbose output env = environ() # create a new MODELLER environment to build this model in
# directories for input atom files
env.io.atom_files_directory = ['./']
a = automodel(env, alnfile = 'AahII-cis.ali', # alignment filename knowns = '1PTX', # codes of the templates sequence = 'AahII-cis') # code of the target
a.starting_model= 1 # index of the first model
a.ending_model = 1 # index of the last model # (determines how many models to calculate)
a.make() # do the actual homology modelling
----------------------------------------------------------------------------------------------
I noticed only 3 lines in the log file with warnings: ... getf_______W> RTF restraint not found in the atoms list: residue type, indices: 7 64 atom names : C +N atom indices : 503 0
getf_______W> RTF restraint not found in the atoms list: residue type, indices: 7 64 atom names : C CA +N O atom indices : 503 496 0 504
...
mdtrsr__446W> A potential that relies on one protein is used, yet you have at least one known structure available. MDT, not library, potential is used. ...
----------------------------------------------------------------------------------------------
Please could somebody tell me what is wrong in this modeling?
Thank you!
Regards,
François Sampieri
François Sampieri wrote: > I want to force a non-proline peptide bond to the cis configuration in > a 64-residue model.
That should be fine - there's no requirement that the residue is proline.
> I assumed that it would not make a difference if the residue it applies > to is not an actual proline > and I include the routine in my .py script, but I got only models with > the trans peptide configuration.
The problem is in your script - looks like the models won't include the disulfide bridges you've set up either:
1. You have defined the subclass 'mymodel' twice, once containing a special_patches method (for disulfides) and the second time containing a special_restraints method (for the cis peptide). This won't work - the second 'mymodel' class will simply override the first (so you'll get cis peptide but no disulfides). The simple solution: just remove the second class mymodel(automodel): line, so that both the special_patches and special_restraints methods live in the same 'mymodel' class.
2. After you went to all that trouble to define a 'mymodel' class, you went and used the 'automodel' class at the end of your script! To actually get the changes you made, you need to actually use the mymodel class, i.e. change a = automodel(env, to read a = mymodel(env,
Otherwise, all looks fine to me.
> I noticed only 3 lines in the log file with warnings:
All three of these warnings are normal - you'll see them in almost any automodel run.
Ben Webb, Modeller Caretaker
participants (2)
-
François Sampieri
-
Modeller Caretaker