dock box size
[django_unres.git] / django_simple / todo / views.py
index 6e8b105..9c4f9ea 100644 (file)
@@ -30,6 +30,29 @@ res_codes = [
 
 three_to_one = dict(res_codes)
 
+def dock_box(file):
+   import math
+   coord = list()
+   for line in file:
+            if line[0:6] == 'ATOM  ' and line[13:15] == 'CA':
+              x=float(line[30:38])
+              y=float(line[38:46])
+              z=float(line[46:54])
+              coord.append([x, y, z])
+            if line[0:3] == 'END':
+              break
+   maxd=0
+   l=len(coord)
+   for i in xrange(l):
+      for j in xrange(i+1,l):
+        p1=coord[i]
+        p2=coord[j]
+        d=(p1[0]-p2[0])**2 + (p1[1]-p2[1])**2 + (p1[2]-p2[2])**2
+        if d > maxd:
+          maxd=d
+   return math.sqrt(maxd)
+
+
 def load_pdbid(pdbid,dirname,filename='plik.pdb'):
     if (not os.path.isdir(dirname)):
        os.mkdir(dirname)
@@ -750,6 +773,7 @@ def add_dock(request,task_id):
              task.md_pdbref=True
              task.md_respa=False
              task.ssbond=""
+             task.dock_peptide=form.cleaned_data["dock_peptide"]
 
              task.md_seq=""
 
@@ -775,8 +799,14 @@ def add_dock(request,task_id):
               task.md_respa=False
               task.damino=True
 
-
+             box1=dock_box(task.myfile1)
+             box2=dock_box(task.myfile2)
+             task.boxx=(box1+box2)*1.2+20
+             task.boxy=(box1+box2)*1.2+20
+             task.boxz=(box1+box2)*1.2+20
+             
              task.ready=True
+
              
              
              task.save()
@@ -827,6 +857,7 @@ def add_dock_a(request,task_id):
              task.md_pdbref=True
              task.md_respa=False
              task.ssbond=""
+             task.dock_peptide=form.cleaned_data["dock_peptide"]
               
              task.md_seq=""
 
@@ -865,10 +896,12 @@ def add_dock_a(request,task_id):
               task.md_respa=False
               task.damino=True
 
+             box1=dock_box(task.myfile1)
+             box2=dock_box(task.myfile2)
+             task.boxx=(box1+box2)*1.2+20
+             task.boxy=(box1+box2)*1.2+20
+             task.boxz=(box1+box2)*1.2+20
 
-             task.ready=True
-             
-             
              task.save()
              return redirect('addmlist',task_id=task.id)
 
@@ -1129,7 +1162,35 @@ def refresh_done0(task):
                      task.remd_model4=task.remd_model4+text
                elif i==5:
                      task.remd_model5=task.remd_model5+text
+          
+          if task.type=='dock':
+           for i in range(1,6):
+            with open(task.jobdirname+'/dockq_'+str(i)+'.out', 'r') as f:
+               text=''
+               for line in f:
+                 if 'Fnat' in line:
+                   text=' Fnat='+line.split()[1]
+                 if 'iRMS' in line:
+                   text=text+' iRMS='+line.split()[1]
+                 if 'LRMS' in line:
+                   text=text+' LRMS='+line.split()[1]
+                 if 'CAPRI' in line and not 'DockQ_CAPRI' in line:
+                   text=text+' CAPRI='+line.split()[1]
+                 if 'DockQ_CAPRI' in line:
+                   text=text+' DockQ_CAPRI= '+line.split()[1]
+                 if 'DockQ ' in line:
+                   text=text+' DockQ='+line.split()[1]
 
+               if i==1:
+                     task.remd_model1=task.remd_model1+text
+               elif i==2:
+                     task.remd_model2=task.remd_model2+text
+               elif i==3:
+                     task.remd_model3=task.remd_model3+text
+               elif i==4:
+                     task.remd_model4=task.remd_model4+text
+               elif i==5:
+                     task.remd_model5=task.remd_model5+text
 
 
          if task.type=='remd' or task.type=='dock':