The new loop optimization method relies on a scoring function and optimization schedule adapted for loop modeling [Fiser et al., 2000]. It is used automatically to refine comparative models if you use the loopmodel class rather than automodel; see the example below.
# Homology modelling by the automodel class from modeller.automodel import * # Load the automodel class log.verbose() env = environ() # directories for input atom files env.io.atom_files_directory = './:../atom_files' a = loopmodel(env, alnfile = 'alignment.ali', # alignment filename knowns = '5fd1', # codes of the templates sequence = '1fdx') # 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.md_level = None # No refinement of model a.loop.starting_model = 1 # First loop model a.loop.ending_model = 4 # Last loop model a.loop.md_level = refine.fast # Loop model refinement level a.make() # do homology modelling
After generating the standard model(s), a number of loop models are generated for each model, from loopmodel.loop.starting_model to loopmodel.loop.ending_model. Each loop model is written out with the .BL extension. See section 6.5 for more information.
The loopmodel class can also be used to refine a region of an existing PDB file, without comparative modeling, as in the example below. Note that this example also redefines the loopmodel.select_loop_atoms routine. This is necessary in this case, as the default selection selects all gaps in the alignment for refinement, and in this case no alignment is available. You can also redefine this routine in the above case if you want to select a different region for optimization.
# Loop refinement of an existing model from modeller.automodel import * log.verbose() env = environ() # directories for input atom files env.io.atom_files_directory = './:../atom_files' # Create a new class based on 'loopmodel' so that we can redefine # select_loop_atoms (necessary) class myloop(loopmodel): # This routine picks the residues to be refined by loop modeling def select_loop_atoms(self): # 4 residue insertion (1st loop) self.pick_atoms(selection_segment=('19:', '28:'), selection_status='INITIALIZE') m = myloop(env, inimodel='1fdx.B99990001.pdb', # initial model of the target sequence='1fdx') # code of the target m.loop.starting_model= 20 # index of the first loop model m.loop.ending_model = 23 # index of the last loop model m.loop.md_level = refine.very_fast # loop refinement method m.make()