Modelling a protein loop close to DNA .....
Hi all
I have obtained a reasonably good model of protein dimer close to a DNA molecule just copying the DNA template into my target. But now I want to refine a protein loop close to DNA molecule but taking into account all "real" interactions between the atoms of my protein and DNA. At the moment I was not able to make modeller to recognize my target dna bases. So, my question is: if the ordering of the DNA base atoms in my pdb record are different to the one in top_heav.lib, Should I change it in my pdb or Should I rewrite the top in order to it matches with that of pdb file. Which method would be easier? . Below I paste a desoxi Gua from top_heav.lib (left) and a Gua residue from my template pdb in order to show the differences (right):
RESI DGUA -1.00000 ATOM P P 1.50000 // ATOM 37 P DG A 3 49.258 12.669 8.835 ATOM OP1 ON3 -0.80000 // ATOM 38 OP1 DG A 3 48.625 13.322 7.669 ATOM OP2 ON3 -0.80000 // ATOM 39 OP2 DG A 3 49.792 11.303 8.659 ATOM O5' ON2 -0.55000 // ATOM 40 O5' DG A 3 50.393 13.597 9.434 ATOM C5' CN8 0.10000 // ATOM 41 C5' DG A 3 50.007 14.836 10.056 ATOM C4' CN6 0.20000 // ATOM 42 C4' DG A 3 50.897 15.123 11.268 ATOM O4' ON6 -0.40000 // ATOM 43 O4' DG A 3 50.655 14.196 12.319 ATOM C1' CN6B 0.20000 // ATOM 44 C3' DG A 3 52.366 15.009 10.907 ATOM N9 NN2 -0.14000 // ATOM 45 O3' DG A 3 53.017 15.983 11.686 ATOM C4 CN5 0.14000 // ATOM 46 C2' DG A 3 52.724 13.583 11.293 ATOM N3 NN3A -0.66000 // ATOM 47 C1' DG A 3 51.785 13.331 12.470 ATOM C2 CN2 0.76000 // ATOM 48 N9 DG A 3 51.356 11.909 12.533 ATOM N1 NN2G -0.10000 // ATOM 49 C4 DG A 3 51.166 11.181 13.676 ATOM N2 NN1 0.00000 // ATOM 50 C8 DG A 3 51.170 11.020 11.508 ATOM C6 CN1 0.55000 // ATOM 51 N7 DG A 3 50.833 9.812 11.874 ATOM O6 ON1 -0.47000 // ATOM 52 C5 DG A 3 50.777 9.903 13.268 ATOM C5 CN5 -0.08000 // ATOM 53 C6 DG A 3 50.374 8.977 14.276 ATOM N7 NN4 -0.69000 // ATOM 54 O6 DG A 3 49.799 7.879 14.135 ATOM C8 CN4 0.69000 // ATOM 55 N1 DG A 3 50.574 9.420 15.560 ATOM C2' CN6C 0.00000 // ATOM 56 C2 DG A 3 51.068 10.663 15.839 ATOM C3' CN6 0.10000 // ATOM 57 N3 DG A 3 51.310 11.614 14.951 ATOM O3' ON2 -0.55000 // ATOM 58 N2 DG A 3 51.319 10.942 17.075
I also changed my alignment in order to the bases can be recognized:
>P1; TCP16 sequence:TCP16:::::::0.00:0.00 tjltllljjjejle / tjltllljjjejle / TPKDRHLKIGGRDRRIRI-----PPSVAPQLFRLTKELGFKTDGETVSWLLQNAEPAIFA ATGHG / TPKDRHLKIGGRDRRIRI-----PPSVAPQLFRLTKELGFKTDGETVSWLLQNAEPAIFA ATGHG * >P1; TCP16 structureX:TCP16:1:A:148:D:::-1.00:-1.00 tjltllljjjejle / tjltllljjjejle / TPKDRHLKIGGRD-----RRIRIPPSVAPQLFRLTKELGFKTDGETVSWLLQNAEPAIFA ATGHG / TPKDRHLKIGGRD-----RRIRIPPSVAPQLFRLTKELGFKTDGETVSWLLQNAEPAIFA ATGHG * Below I also paste the python script that I've used in the modelling. May be someone can find any error o misleading command.
# Loop refinement of an existing model from modeller import * from modeller.automodel import * log.verbose() env = environ() # directories for input atom files env.io.atom_files_directory = ['.', '../atom_files'] #env.io.hetatm = True
# Create a new class based on 'loopmodel' so that we can redefine # select_loop_atoms (necessary) class MyLoop(loopmodel):
def special_restraints(self, aln): rsr = self.restraints at = self.atoms
rsr.add(forms.gaussian(group=physical.xy_distance, feature=features.distance(at['CZ:45:C'], at['O6:6:A']), mean=3.0, stdev=0.5))
rsr.add(forms.gaussian(group=physical.xy_distance, feature=features.distance(at['CZ:105:D'], at['O6:20:B']), mean=3.0, stdev=0.5))
# This routine picks the residues to be refined by loop modeling #def special_restraints(self, aln):
def select_loop_atoms(self): #Two loops for refinement at the same time
return selection(self.residue_range('44:C', '47:C'), self.residue_range('103:D', '106:D'))
m = MyLoop(env, alnfile = 'align2.ali' , inimodel='TCP16.B99990001.pdb', # initial model of the target sequence='TCP16') # code of the target
m.loop.starting_model= 1 # index of the first loop model m.loop.ending_model = 1 # index of the last loop model m.loop.md_level = refine.very_slow # loop refinement method
m.make()
Any help or advice will be very appreciated.
Sergio
On 4/13/11 4:09 AM, Sergio Garay wrote: > I have obtained a reasonably good model of protein dimer close to a DNA > molecule just copying the DNA template into my target. But now I want to > refine a protein loop close to DNA molecule but taking into account all > "real" interactions between the atoms of my protein and DNA.
The only "real" interactions Modeller can model with DNA or RNA are van der Waals and stereochemistry (and electrostatics if you turn it on). But in practice this is not sufficient to maintain the correct DNA structure - it will unravel.
> At the > moment I was not able to make modeller to recognize my target dna bases.
It should be able to read them in just fine - what problem are you encountering?
> So, my question is: if the ordering of the DNA base atoms in my pdb > record are different to the one in top_heav.lib, Should I change it in > my pdb or Should I rewrite the top in order to it matches with that of > pdb file.
Neither - they don't need to be in the same order.
> I also changed my alignment in order to the bases can be recognized:
Looks fine to me, but when refining an existing PDB file, the alignment isn't used. All non-loop regions will stay fixed, so it would make little difference whether you treat DNA as a "real" residue or use a BLK - the only interactions considered are van der Waals.
Ben Webb, Modeller Caretaker
participants (2)
-
Modeller Caretaker
-
Sergio Garay