remd output and tutorial update
[django_unres.git] / django_simple / todo / views.py
index 941d637..61d5b61 100644 (file)
@@ -124,11 +124,27 @@ def add(request):
 def add_min(request,task_id):
     task = get_object_or_404(Task, id=task_id)
     if request.method == 'POST':
+     if '_example' in request.POST:
+        data= {'name':task.name,'pdbid':'1BDD'}
+        form = TaskForm_min(initial=data)     
+     else:
         form = TaskForm_min(request.POST,request.FILES)
         if form.is_valid():
              task.name=form.cleaned_data["name"]
              task.type="min"
-             task.myfile1=form.cleaned_data["file1"]
+             pdbid=form.cleaned_data["pdbid"]
+
+             basename = str(task.owner)
+             suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
+             task.jobdirname = "_".join([basename, suffix])
+
+             if pdbid:
+              os.mkdir(task.jobdirname)
+              task.myfile1,header=urllib.urlretrieve('http://files.rcsb.org/download/'+pdbid+'.pdb',
+                     task.jobdirname+'/plik.pdb')     
+              task.pdbcode=pdbid
+             else:
+              task.myfile1=form.cleaned_data["file1"]
 
              seq,task.ssbond=from_pdb(task.myfile1)
              task.md_seq=""
@@ -136,13 +152,10 @@ def add_min(request,task_id):
                     task.md_seq=task.md_seq+seq[i:i+40]+" "
 
              task.ready=True
-             basename = str(task.owner)
-             suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
-             task.jobdirname = "_".join([basename, suffix])
              
              task.save()
              if is_lazy_user(request.user):
-              return render(request, "details.html",{'task':task})
+              return redirect('/details1/'+str(task.owner)+'/'+str(task.id)+'/')              
              else:
               return redirect('/')
     else:
@@ -156,6 +169,10 @@ def add_min(request,task_id):
 def add_min_a(request,task_id):
     task = get_object_or_404(Task, id=task_id)
     if request.method == 'POST':
+     if '_example' in request.POST:
+        data= {'name':task.name,'pdbid':'1EI0','unres_ff':'opt-wtfsa-2'}
+        form = TaskForm_min_a(initial=data)     
+     else:
         form = TaskForm_min_a(request.POST,request.FILES)
         if form.is_valid():
              task.name=form.cleaned_data["name"]
@@ -166,7 +183,20 @@ def add_min_a(request,task_id):
              task.min_maxmin=form.cleaned_data["min_maxmin"]
              task.min_maxfun=form.cleaned_data["min_maxfun"]
              task.min_pdbout=form.cleaned_data["min_pdbout"]
-             task.myfile1=form.cleaned_data["file1"]
+
+             basename = str(task.owner)
+             suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
+             task.jobdirname = "_".join([basename, suffix])
+             
+             pdbid=form.cleaned_data["pdbid"]
+             if pdbid:
+              os.mkdir(task.jobdirname)
+              task.myfile1,header=urllib.urlretrieve('http://files.rcsb.org/download/'+pdbid+'.pdb',
+                     task.jobdirname+'/plik.pdb')     
+              task.pdbcode=pdbid
+             else:
+              task.myfile1=form.cleaned_data["file1"]
+
              task.min_unres_pdb=form.cleaned_data["min_unres_pdb"]
              task.unres_ff=form.cleaned_data["unres_ff"]
              task.boxx=form.cleaned_data["boxx"]
@@ -178,15 +208,11 @@ def add_min_a(request,task_id):
              for i in range(0,len(seq),40):
                 task.md_seq=task.md_seq+seq[i:i+40]+" "
                                                            
-
              task.ready=True
-             basename = str(task.owner)
-             suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
-             task.jobdirname = "_".join([basename, suffix])
              
              task.save()
              if is_lazy_user(request.user):
-              return render(request, "details.html",{'task':task})
+              return redirect('/details1/'+str(task.owner)+'/'+str(task.id)+'/')             
              else:
               return redirect('/')
     else:
@@ -200,6 +226,11 @@ def add_min_a(request,task_id):
 def add_md(request,task_id):
     task = get_object_or_404(Task, id=task_id)
     if request.method == 'POST':
+     if '_example' in request.POST:
+        data= {'name':task.name,'pdbid':'1IGD','md_start':'pdbstart',
+        'md_pdbref':True,'md_temp':200}
+        form = TaskForm_md(initial=data)     
+     else:
         form = TaskForm_md(request.POST,request.FILES)
         if form.is_valid():
              task.name=form.cleaned_data["name"]
@@ -208,8 +239,19 @@ def add_md(request,task_id):
              task.md_start=form.cleaned_data["md_start"]
              task.md_temp=form.cleaned_data["md_temp"]
              task.md_nstep=form.cleaned_data["md_nstep"]
-             
-             task.myfile1=form.cleaned_data["file1"]
+
+             basename = str(task.owner)
+             suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
+             task.jobdirname = "_".join([basename, suffix])
+
+             pdbid=form.cleaned_data["pdbid"]
+             if pdbid:
+              os.mkdir(task.jobdirname)
+              task.myfile1,header=urllib.urlretrieve('http://files.rcsb.org/download/'+pdbid+'.pdb',
+                     task.jobdirname+'/plik.pdb')     
+              task.pdbcode=pdbid
+             else:
+              task.myfile1=form.cleaned_data["file1"]
              task.md_pdbref=form.cleaned_data["md_pdbref"]             
 
              task.md_seq=""
@@ -225,13 +267,10 @@ def add_md(request,task_id):
                 task.ssbond=''
 
              task.ready=True
-             basename = str(task.owner)
-             suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
-             task.jobdirname = "_".join([basename, suffix])
              
              task.save()
              if is_lazy_user(request.user):
-              return render(request, "details.html",{'task':task})
+              return redirect('/details1/'+str(task.owner)+'/'+str(task.id)+'/')
              else:
               return redirect('/')
     else:
@@ -245,12 +284,28 @@ def add_md(request,task_id):
 def add_md_a(request,task_id):
     task = get_object_or_404(Task, id=task_id)
     if request.method == 'POST':
+     if '_example' in request.POST:
+        data= {'name':task.name,'pdbid':'1L2Y','md_start':'extconf',
+         'md_pdbref':True,'md_mdpdb':True}
+        form = TaskForm_md_a(initial=data)     
+     else:
         form = TaskForm_md_a(request.POST,request.FILES)
         if form.is_valid():
              task.name=form.cleaned_data["name"]
              task.type="md"
 
-             task.myfile1=form.cleaned_data["file1"]
+             basename = str(task.owner)
+             suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
+             task.jobdirname = "_".join([basename, suffix])
+
+             pdbid=form.cleaned_data["pdbid"]
+             if pdbid:
+              os.mkdir(task.jobdirname)
+              task.myfile1,header=urllib.urlretrieve('http://files.rcsb.org/download/'+pdbid+'.pdb',
+                     task.jobdirname+'/plik.pdb')     
+              task.pdbcode=pdbid
+             else:
+              task.myfile1=form.cleaned_data["file1"]
              task.md_start=form.cleaned_data["md_start"]
              task.md_pdbref=form.cleaned_data["md_pdbref"]             
 
@@ -283,13 +338,10 @@ def add_md_a(request,task_id):
 
              
              task.ready=True
-             basename = str(task.owner)
-             suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
-             task.jobdirname = "_".join([basename, suffix])
              
              task.save()
              if is_lazy_user(request.user):
-              return render(request, "details.html",{'task':task})
+              return redirect('/details1/'+str(task.owner)+'/'+str(task.id)+'/')             
              else:
               return redirect('/')
     else:
@@ -303,12 +355,28 @@ def add_md_a(request,task_id):
 def add_remd(request,task_id):
     task = get_object_or_404(Task, id=task_id)
     if request.method == 'POST':
+     if '_example' in request.POST:
+        data= {'name':task.name,'pdbid':'1L2Y','md_pdbref':True}
+        form = TaskForm_remd(initial=data)     
+     else:
         form = TaskForm_remd(request.POST,request.FILES)
         if form.is_valid():
              task.name=form.cleaned_data["name"]
              task.type="remd"
              task.md_start=form.cleaned_data["md_start"]
-             task.myfile1=form.cleaned_data["file1"]
+
+             basename = str(task.owner)
+             suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
+             task.jobdirname = "_".join([basename, suffix])
+
+             pdbid=form.cleaned_data["pdbid"]
+             if pdbid:
+              os.mkdir(task.jobdirname)
+              task.myfile1,header=urllib.urlretrieve('http://files.rcsb.org/download/'+pdbid+'.pdb',
+                     task.jobdirname+'/plik.pdb')     
+              task.pdbcode=pdbid
+             else:
+              task.myfile1=form.cleaned_data["file1"]
              task.md_pdbref=form.cleaned_data["md_pdbref"]
              task.md_ntwx=task.remd_nstex 
 
@@ -330,13 +398,10 @@ def add_remd(request,task_id):
 
              task.ready=True
              
-             basename = str(task.owner)
-             suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
-             task.jobdirname = "_".join([basename, suffix])
              
              task.save()
              if is_lazy_user(request.user):
-              return render(request, "details.html",{'task':task})
+              return redirect('/details1/'+str(task.owner)+'/'+str(task.id)+'/')             
              else:
               return redirect('/')
     else:
@@ -350,12 +415,29 @@ def add_remd(request,task_id):
 def add_remd_a(request,task_id):
     task = get_object_or_404(Task, id=task_id)
     if request.method == 'POST':
+     if '_example' in request.POST:
+        data= {'name':task.name,'pdbid':'1E0G','md_pdbref':True,
+         'md_nstep':500000,'md_lang':'berendsen','unres_ff':'opt-wtfsa-2',
+         'remd_cluter_temp':280}
+        form = TaskForm_remd_a(initial=data)     
+     else:
         form = TaskForm_remd_a(request.POST,request.FILES)
         if form.is_valid():
              task.name=form.cleaned_data["name"]
              task.type="remd"
 
-             task.myfile1=form.cleaned_data["file1"]
+             basename = str(task.owner)
+             suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
+             task.jobdirname = "_".join([basename, suffix])
+
+             pdbid=form.cleaned_data["pdbid"]
+             if pdbid:
+              os.mkdir(task.jobdirname)
+              task.myfile1,header=urllib.urlretrieve('http://files.rcsb.org/download/'+pdbid+'.pdb',
+                     task.jobdirname+'/plik.pdb')     
+              task.pdbcode=pdbid
+             else:
+              task.myfile1=form.cleaned_data["file1"]
              task.md_start=form.cleaned_data["md_start"]  
              task.md_pdbref=form.cleaned_data["md_pdbref"]                        
 
@@ -387,14 +469,9 @@ def add_remd_a(request,task_id):
              task.boxy=form.cleaned_data["boxy"]             
              task.boxz=form.cleaned_data["boxz"]             
 
-
              task.remd_cluter_temp=form.cleaned_data["remd_cluter_temp"]
              task.unres_ff=form.cleaned_data["unres_ff"]
              
-             basename = str(task.owner)
-             suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
-             task.jobdirname = "_".join([basename, suffix])
-             
              task.save()
              return redirect('addmlist',task_id=task.id)
     else:
@@ -416,7 +493,7 @@ def addmlist(request,task_id):
              
              task.save()
              if is_lazy_user(request.user):
-              return render(request, "details.html",{'task':task})
+              return redirect('/details1/'+str(task.owner)+'/'+str(task.id)+'/')              
              else:
               return redirect('/')
     else:
@@ -437,20 +514,69 @@ def addmlist(request,task_id):
     p_type='replica exchange molecular dynamics - advanced options'
     return render(request, 'edit_lista.html', {'form': form, 'task':task, 'p_type':p_type})
 
+@login_required
 def details(request,task_id):
     task = get_object_or_404(Task, id=task_id)
     return render(request, "details.html",{'task':task})
 
+
+def details1(request,user_id,task_id):
+    task = get_object_or_404(Task, id=task_id)
+    return render(request, "details1.html",{'task':task})
+
+
 @login_required
 def delete(request, task_id):
     Task.objects.get(id=task_id).delete()
     return redirect('/')
 
+def refresh_done1(request, task_id):
+    task = get_object_or_404(Task, id=task_id)
+    user = task.owner
+    refresh_done0(task)
+
+    proc = subprocess.Popen('/opt/torque/bin/qstat', stdout=subprocess.PIPE)
+    njob=0
+    nq=0
+    for line in proc.stdout:
+      if 'piasek4' in line:
+        if line.split()[1]=='test_server':
+          njob+=1
+          if line.split()[-2]=='Q':
+            nq+=1
+    variable='Idle jobs='+str(nq)+' Total jobs='+str(njob)
+
+    return redirect('/details1/'+str(user)+'/'+str(task.id)+'/')
+
+
 @login_required
 def refresh_done(request):
     user = request.user
     tasks = Task.objects.filter(owner=user).order_by('-created_date')
     for task in tasks:
+      refresh_done0(task)
+
+    proc = subprocess.Popen('/opt/torque/bin/qstat', stdout=subprocess.PIPE)
+    njob=0
+    nq=0
+    for line in proc.stdout:
+      if 'piasek4' in line:
+        if line.split()[1]=='test_server':
+          njob+=1
+          if line.split()[-2]=='Q':
+            nq+=1
+    variable='Idle jobs='+str(nq)+' Total jobs='+str(njob)
+
+    if is_lazy_user(request.user):
+     return redirect('/details1/'+str(user)+'/'+str(task.id)+'/')
+    else:
+     return render(request, "index.html", {
+                'tasks': tasks ,
+                'variable' : variable
+                        })
+
+      
+def refresh_done0(task):
       if os.path.isfile(task.jobdirname+'/finished') and not task.done:
          task.done=True
 
@@ -475,15 +601,15 @@ def refresh_done(request):
                   
            elif task.type=='remd':
              j=0
-             text="Acceptance for replica exchanges\n"
+             text="Acceptance for replica exchanges and number of exchange attempts\n"
              for line in f:
                         
                if 'ACC' in line:
                     j+=1
-                    text=text+line
+                    text=text+' '.join(line.split()[2:])+"\n"
                     if j==task.remd_nrep:
                        j=1
-                       text="Acceptance for replica exchanges\n"+line
+                       text="Acceptance for replica exchanges and number of exchange attempts\n"+' '.join(line.split()[2:])+"\n"
 
                if 'Total wall' in line:
                   text=text+line
@@ -498,15 +624,15 @@ def refresh_done(request):
             with open(task.jobdirname+'/file_wham_T'+str(int(task.remd_cluter_temp))+'K_000'+str(i)+'.pdb', 'r') as f:
                  line=f.readline()
                  if i==1:
-                     task.remd_model1=' '.join(line.split()[-6:])
+                     task.remd_model1='Cluster1 '+' '.join(line.split()[-3:])
                  elif i==2:
-                     task.remd_model2=' '.join(line.split()[-6:])
+                     task.remd_model2='Cluster2 '+' '.join(line.split()[-3:])
                  elif i==3:
-                     task.remd_model3=' '.join(line.split()[-6:])
+                     task.remd_model3='Cluster3 '+' '.join(line.split()[-3:])
                  elif i==4:
-                     task.remd_model4=' '.join(line.split()[-6:])
+                     task.remd_model4='Cluster4 '+' '.join(line.split()[-3:])
                  elif i==5:
-                     task.remd_model5=' '.join(line.split()[-6:])
+                     task.remd_model5='Cluster5 '+' '.join(line.split()[-3:])
            except EnvironmentError:
             print 'file_wham_T*pdb open error'
           for i in range(1,6):
@@ -574,23 +700,5 @@ def refresh_done(request):
              task.running=100
          task.save()
 
-    proc = subprocess.Popen('/opt/torque/bin/qstat', stdout=subprocess.PIPE)
-    njob=0
-    nq=0
-    for line in proc.stdout:
-      if 'piasek4' in line:
-        if line.split()[1]=='test_server':
-          njob+=1
-          if line.split()[-2]=='Q':
-            nq+=1
-    variable='Idle jobs='+str(nq)+' Total jobs='+str(njob)
-
-    if is_lazy_user(request.user):
-     return redirect('/details/'+str(task.id)+'/')
-    else:
-     return render(request, "index.html", {
-                'tasks': tasks ,
-                'variable' : variable
-                        })
     
-#   return redirect('/')        
+      return