How to include alignment to model_symmetry_define()
Hi Modellers,
I need to obtain loop conformation distributions in a tetramer structure. So I used loopmodel() to redefine the 4 loops in each subunit. I found that the 4 loops in each tetramer is not symmetrical. I therefore applied model_symmetry_define() in order to fix them the same during the optimisation.
Here I have a question. The code I have used is at http://salilab.org/modeller/manual/node160.html
However, in define_symmetry-3.atm file, the structure looks very bizarre. It has lost its secondary structure elements and 4 loops are not symmetrical at all.
So I tried to add the sequence alignment between the loop model and the template. I cannot work out the python code. Could some one kindly have a look what I have done wrongly please.
Here is the code:
# Example for: model.symmetry.define()
# This will force two copies of RCK4 to have similar mainchain # conformation.
log.level(1, 1, 1, 1, 0) env = environ() env.libs.topology.read(file='$(LIB)/top_heav.lib') env.libs.parameters.read(file='$(LIB)/par.lib')
#env.io.atom_files_directory = 'xxx' env.io.atom_files_directory = '.'
def defsym(lop, aln, seg1, seg2): for (set, seg) in [(2, seg1), (3, seg2)]: lop.pick_atoms(aln, pick_atoms_set=set, selection_segment=seg, atom_types='All', selection_status='INITIALIZE', selection_search='SEGMENT') lop.symmetry.define(symmetry_weight=1.0, add_symmetry=(True, False))
# Generate two copies of a segment: lop = model(env, file='model-nam', model_segment=('1:A', '110:D')) aln = alignment(env) aln.append_model(lop, align_codes='model-nam', atom_files='tmp-nam') aln.append_model(lop, align_codes='model-nam'+'_ini', atom_files='tmp-nam'+'_ini') lop.generate_topology(aln, sequence='model-nam'+'_ini') lop.transfer_xyz(aln) lop.build(initialize_xyz=False, build_method='INTERNAL_COORDINATES') #lop.rename_segments(segment_ids=('A', 'B')) #, renumber_residues=(1, 1))
myedat = energy_data(dynamic_sphere = False) lop.energy(edat=myedat) lop.randomize_xyz(deviation=6.0) # Define the two segments (chains in this case) to be identical: defsym(lop, aln, seg1=('39:A', '49:A'), seg2=('39:B', '49:B'))
# Make them identical by optimizing the initial randomized structure # without any other restraints: lop.energy(edat=myedat) lop.write(file='define_symmetry-1.atm') lop.optimize(max_iterations=300, edat=myedat) lop.write(file='define_symmetry-2.atm') lop.energy(edat=myedat)
# Now optimize with stereochemical restraints so that the # result is not so distorted a structure (still distorted # because optimization is not thorough): myedat.dynamic_sphere = True lop.restraints.make(aln, restraint_type='stereo', spline_on_site=False, edat=myedat) lop.randomize_xyz(deviation=3.0) for method in (1, 3, 1): # 1 = conjugate gradients, 3 = molecular dynamics lop.optimize(max_iterations=300, md_return='FINAL', edat=myedat, optimization_method=method, output='REPORT') lop.write(file='define_symmetry-3.atm') lop.energy(edat=myedat)
# Create a blank alignment so that superpose uses its 1:1 default aln = alignment(env)
lop = model(env, file='define_symmetry-3.atm', model_segment=('39:A', '49:A')) lop2 = model(env, file='define_symmetry-3.atm', model_segment=('39:B', '49:B')) lop.pick_atoms(aln, atom_types='All') lop.superpose(lop2, aln)
Also, what does aln.append_model(lop, align_codes='model-nam'+'_ini', atom_files='tmp-nam'+'_ini') mean?
The erro message by executing the above .py file is: "_modeller.error: transfe_682E> Structural information is not available for all sequences in the alignment. Aborting."
Thank you very much.
Binbin
bmbbl@leeds.ac.uk wrote: > I need to obtain loop conformation distributions in a tetramer structure. So I > used loopmodel() to redefine the 4 loops in each subunit. I found that the 4 > loops in each tetramer is not symmetrical. I therefore applied > model_symmetry_define() in order to fix them the same during the optimisation.
If you want to do loop modeling with symmetry restraints, you would be better off overriding the special_restraints function in the loopmodel class, rather than trying to do the entire optimization by hand. See, for example, http://salilab.org/archives/modeller_usage/2005/msg00298.html
> Also, what does aln.append_model(lop, align_codes='model-nam'+'_ini', > atom_files='tmp-nam'+'_ini') mean?
It adds the sequence of the model 'lop' to the alignment 'aln'. That sequence can then be refered to with the align code 'model-nam_ini', and if the structure corresponding to the sequence is required, Modeller will read it from the atom file 'tmp-nam_ini'.
> The erro message by executing the above .py file is: > "_modeller.error: transfe_682E> Structural information is not available for all > sequences in the alignment. Aborting."
This means that Modeller was unable to read the structural information (i.e. atom coordinates) from the atom file. This is probably because you called it 'tmp-nam_ini'. You probably want to call it the same thing as your original PDB file, as in the example.
Ben Webb, Modeller Caretaker
participants (2)
-
bmbbl@leeds.ac.uk
-
Modeller Caretaker