Hi all<br><br>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):<br>
<br>RESI DGUA -1.00000 <br>ATOM P P 1.50000 // ATOM 37 P DG A 3 49.258 12.669 8.835<br>ATOM OP1 ON3 -0.80000 // ATOM 38 OP1 DG A 3 48.625 13.322 7.669<br>
ATOM OP2 ON3 -0.80000 // ATOM 39 OP2 DG A 3 49.792 11.303 8.659<br>ATOM O5' ON2 -0.55000 // ATOM 40 O5' DG A 3 50.393 13.597 9.434<br>ATOM C5' CN8 0.10000 // ATOM 41 C5' DG A 3 50.007 14.836 10.056<br>
ATOM C4' CN6 0.20000 // ATOM 42 C4' DG A 3 50.897 15.123 11.268<br>ATOM O4' ON6 -0.40000 // ATOM 43 O4' DG A 3 50.655 14.196 12.319<br>ATOM C1' CN6B 0.20000 // ATOM 44 C3' DG A 3 52.366 15.009 10.907<br>
ATOM N9 NN2 -0.14000 // ATOM 45 O3' DG A 3 53.017 15.983 11.686<br>ATOM C4 CN5 0.14000 // ATOM 46 C2' DG A 3 52.724 13.583 11.293<br>ATOM N3 NN3A -0.66000 // ATOM 47 C1' DG A 3 51.785 13.331 12.470<br>
ATOM C2 CN2 0.76000 // ATOM 48 N9 DG A 3 51.356 11.909 12.533<br>ATOM N1 NN2G -0.10000 // ATOM 49 C4 DG A 3 51.166 11.181 13.676<br>ATOM N2 NN1 0.00000 // ATOM 50 C8 DG A 3 51.170 11.020 11.508<br>
ATOM C6 CN1 0.55000 // ATOM 51 N7 DG A 3 50.833 9.812 11.874<br>ATOM O6 ON1 -0.47000 // ATOM 52 C5 DG A 3 50.777 9.903 13.268<br>ATOM C5 CN5 -0.08000 // ATOM 53 C6 DG A 3 50.374 8.977 14.276<br>
ATOM N7 NN4 -0.69000 // ATOM 54 O6 DG A 3 49.799 7.879 14.135<br>ATOM C8 CN4 0.69000 // ATOM 55 N1 DG A 3 50.574 9.420 15.560<br>ATOM C2' CN6C 0.00000 // ATOM 56 C2 DG A 3 51.068 10.663 15.839<br>
ATOM C3' CN6 0.10000 // ATOM 57 N3 DG A 3 51.310 11.614 14.951<br>ATOM O3' ON2 -0.55000 // ATOM 58 N2 DG A 3 51.319 10.942 17.075<br><br>I also changed my alignment in order to the bases can be recognized:<br>
<br>>P1; TCP16<br>sequence:TCP16:::::::0.00:0.00<br>tjltllljjjejle<br>/<br>tjltllljjjejle<br>/<br>TPKDRHLKIGGRDRRIRI-----PPSVAPQLFRLTKELGFKTDGETVSWLLQNAEPAIFA<br>ATGHG<br>/<br>TPKDRHLKIGGRDRRIRI-----PPSVAPQLFRLTKELGFKTDGETVSWLLQNAEPAIFA<br>
ATGHG<br>*<br>>P1; TCP16<br>structureX:TCP16:1:A:148:D:::-1.00:-1.00<br>tjltllljjjejle<br>/<br>tjltllljjjejle<br>/<br>TPKDRHLKIGGRD-----RRIRIPPSVAPQLFRLTKELGFKTDGETVSWLLQNAEPAIFA<br>ATGHG<br>/<br>TPKDRHLKIGGRD-----RRIRIPPSVAPQLFRLTKELGFKTDGETVSWLLQNAEPAIFA<br>
ATGHG<br>*<br>Below I also paste the python script that I've used in the modelling. May be someone can find any error o misleading command.<br><br># Loop refinement of an existing model<br>from modeller import *<br>from modeller.automodel import *<br>
log.verbose()<br>env = environ()<br># directories for input atom files<br>env.io.atom_files_directory = ['.', '../atom_files']<br>#env.io.hetatm = True<br><br># Create a new class based on 'loopmodel' so that we can redefine<br>
# select_loop_atoms (necessary)<br>class MyLoop(loopmodel):<br> <br> def special_restraints(self, aln):<br> rsr = self.restraints<br> at = self.atoms<br><br> rsr.add(forms.gaussian(group=physical.xy_distance,<br>
feature=features.distance(at['CZ:45:C'],<br> at['O6:6:A']),<br> mean=3.0, stdev=0.5))<br>
<br> rsr.add(forms.gaussian(group=physical.xy_distance,<br> feature=features.distance(at['CZ:105:D'],<br> at['O6:20:B']),<br>
mean=3.0, stdev=0.5))<br> <br> # This routine picks the residues to be refined by loop modeling<br> #def special_restraints(self, aln):<br> <br> def select_loop_atoms(self):<br>
#Two loops for refinement at the same time<br><br> return selection(self.residue_range('44:C', '47:C'),<br> self.residue_range('103:D', '106:D'))<br><br>
m = MyLoop(env,<br> alnfile = 'align2.ali' ,<br> inimodel='TCP16.B99990001.pdb', # initial model of the target<br> sequence='TCP16') # code of the target<br>
<br><br>m.loop.starting_model= 1 # index of the first loop model<br>m.loop.ending_model = 1 # index of the last loop model<br>m.loop.md_level = refine.very_slow # loop refinement method<br><br>m.make()<br>
<br>Any help or advice will be very appreciated.<br><br>Sergio<br clear="all"><br>-- <br>Sergio Garay<br>Dr. en Ciencias Biológicas<br>Facultad de Bioquimica y Cs. Biológicas<br>Universidad Nacional del Litoral<br>Santa Fe - Argentina<br>
C.C. 242 - Ciudad Universitaria - C.P. S3000ZAA<br>Argentina<br>Ph. +54 (342) 4575-213<br>Fax. +54 (342) 4575-221 <br>