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

Re: [modeller_usage] Modeling loop using template from PDB file



> -----Original Message-----
> From: Modeller Caretaker [">mailto:]
> Sent: Wednesday, December 07, 2016 9:00 AM
> To: Markus Heller; 
> Subject: Re: [modeller_usage] Modeling loop using template from PDB
> file
> 
> On 12/6/16 3:54 PM, Markus Heller wrote:
> > I have a structure (A) which is missing a stretch of a dozen or so
> > residues.  I also have the structure of the protein from a different
> > organism which has said stretch of residues resolved (B).  Now I'd
> > like to take the coordinates of A and model the missing residues
> using
> > the relevant coordinates (i.e. for these residues only) from B.
> >
> > How would I go about doing this?
> 
> Just make an alignment containing both proteins A and B, and align the
> missing region with B and the rest with A, as per
> https://salilab.org/modeller/FAQ.html#1
> 
> If you're happy with the A coordinates and don't want them to move at
> all, select only the B region in select_atoms():
> https://salilab.org/modeller/9.17/manual/node23.html

I have it working with modeling for 1 chain with the following class definition:

class MyModel(automodel):
    def select_atoms(self):
        # Select residues 1 and 2 (PDB numbering)
        return selection(self.residue_range('339:A', '372:A'))

I can't get it to work for both chains.

This

class MyModel(automodel):
    def select_atoms(self):
        # Select residues 1 and 2 (PDB numbering)
        return selection(self.residue_range('339:A', '372:A', '809:B', '842:B'))

gives:

TypeError: residue_range() takes exactly 3 arguments (5 given)

Each chain is 470 AA, so 339:A and 372:A should be 809:B and 842:B in modeller nnumbering.

On the other hand, this, assuming we're using PDB numbering here, according to which 339 through 372 exist in both chains,

class MyModel(automodel):
    def select_atoms(self):
        # Select residues 1 and 2 (PDB numbering)
        return selection(self.residue_range('339:', '372:'))

gives 

KeyError: 'No such residue: 339:'

What's my mistake?

Thanks
Markus