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

[modeller_usage] 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

--
Sergio Garay
Dr. en Ciencias Biológicas
Facultad de Bioquimica y Cs. Biológicas
Universidad Nacional del Litoral
Santa Fe - Argentina
C.C. 242 - Ciudad Universitaria - C.P. S3000ZAA
Argentina
Ph. +54 (342) 4575-213
Fax. +54 (342) 4575-221