[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[modeller_usage] alignment using multiple templates



HI there,

	I am working my way through the tutorials, playing with the Python
scripts to get a better understanding of how things work. I have
successfully done a multiple structural alignment using a modified
version of the salign.py script in the advanced tutorial aligning
multiple sequences for a protein from several different species using
the pdb files as input. The protein is a homopentamer, and using the
example script, I aligned the "A" chains and everything worked fine.
	Since I really want to work on modeling a homopentamer, I then tried to
do the alignment on the pentamers. I receive the following error:
*************************************************************************
linux:/home/mike/Modeller_files/Modelling_projects/Test_run/Mult_align #
mod8v2 salignPentamer.py
Traceback (most recent call last):
  File "salignPentamer.py", line 11, in ?
    mdl = model(env, file=code, model_segment=('FIRST:@, LAST:'))
  File "/usr/bin/modeller8v2/modlib/modeller/model.py", line 23, in
__init__
    self.read(io, aln, libs, **vars)
  File "/usr/bin/modeller8v2/modlib/modeller/model.py", line 40, in read
    io=io.modpt, libs=libs.modpt, **vars)
  File "/usr/bin/modeller8v2/modlib/modeller/util/top.py", line 189, in
read_model
    return _modeller.read_model(mdl, aln, io, libs, *args)
ValueError: Expected a sequence for model_segment
*************************************************************************

I assume that the problem is in reading the pdb files and getting the
information.The pdb files do contain the chain ID's (A-E). Here is the
Python script I used, which is essentially a slightly modified version
of the example script:

*********************************************************************

from modeller import *

log.verbose()
env = environ()
env.io.atom_files_directory = './:../atom_files/'

aln = alignment(env)
for (code, chain) in (('1i9b', 'A'), ('2br7', 'A'), ('2bj0', 'A')):
    mdl = model(env, file=code, model_segment=('FIRST:@, LAST:'))
    aln.append_model(mdl, atom_files=code, align_codes=code+chain)

for (weights, write_fit, whole) in (((1., 0., 0., 0., 1., 0.), False,
True),
                                    ((1., 0.5, 1., 1., 1., 0.), False,
True),
                                    ((1., 1., 1., 1., 1., 0.), True,
False)):
    aln.salign(rms_cutoffs=(3.5, 6., 60, 60, 15, 60, 60, 60, 60, 60,
60),
               normalize_pp_scores=False,
               rr_file='$(LIB)/as1.sim.mat', overhang=30,
               gap_penalties_1d=(-450, -50),
               gap_penalties_3d=(0, 3), gap_gap_score=0,
gap_residue_score=0,
               dendrogram_file='fm00495.tree',
               alignment_type='tree', # If 'progresive', the tree is not
                                      # computed and all structues will
be
                                      # aligned sequentially to the
first
               feature_weights=weights, # For a multiple sequence
alignment only
                                        # the first feature needs to be
non-zero
               improve_alignment=True, fit=True, write_fit=write_fit,
               write_whole_pdb=whole, output='ALIGNMENT QUALITY')

aln.write(file='achbpsPentamer.pap', alignment_format='PAP')
aln.write(file='achbpsPentamer.ali', alignment_format='PIR')

aln.salign(rms_cutoffs=(1.0, 6., 60, 60, 15, 60, 60, 60, 60, 60, 60),
           normalize_pp_scores=False, rr_file='$(LIB)/as1.sim.mat',
overhang=30,
           gap_penalties_1d=(-450, -50), gap_penalties_3d=(0, 3),
           gap_gap_score=0, gap_residue_score=0,
dendrogram_file='1is3A.tree',
           alignment_type='progressive', feature_weights=[0]*6,
           improve_alignment=False, fit=False, write_fit=True,
           write_whole_pdb=False, output='QUALITY')
**********************************************************************************
the only change that I made from the script that worked on the single
subunits was to change the "model_segment" parameters from
"('FIRST:'+chain, 'LAST:'+chain)" to "('FIRST:@, LAST:'))". I couldn't
find anything in the Online manual concerning the arguments on the line
before (for (code,chain) in.....)- should I have replaced chain "A" with
something else to read the entire set of chains? 

Thanks for whatever help you can provide. I am sure that as I get deeper
into things that I'll have more questions- hopefully not so basic.

Mike White