random SEED value in forms
[django_unres.git] / django_simple / todo / views.py
index 3d959f1..0edb463 100644 (file)
@@ -9,6 +9,7 @@ import subprocess
 import json
 from lazysignup.decorators import allow_lazy_user
 from lazysignup.utils import is_lazy_user
+import random
 
 res_codes = [
                 # 20 canonical amino acids
@@ -29,6 +30,27 @@ res_codes = [
 
 three_to_one = dict(res_codes)
 
+def load_pdbid(pdbid,dirname):
+    os.mkdir(dirname)
+    if len(pdbid)==4:
+       file,header=urllib.urlretrieve('http://files.rcsb.org/download/'+pdbid+'.pdb',
+                     dirname+'/plik.pdb')     
+    else:
+       chain=pdbid[5]
+       pdbid=pdbid[:4]
+       pdb_tmp=urllib.urlopen('http://files.rcsb.org/download/'+pdbid+'.pdb')
+       with open(dirname+'/plik.pdb', 'w') as outfile:
+        for line in pdb_tmp:
+          if line[0:6] == 'SSBOND' and line[15] == chain and line[29] == chain:
+            outfile.write(line)
+          if line[0:6] == 'ATOM  ' and line[21] == chain:
+            outfile.write(line)
+       pdb_tmp.close()
+       file=dirname+'/plik.pdb'
+       
+    return(file)
+
+
 def seq_2d_from_pdb(seq_2d,seq):
     if seq_2d =='':
       return(seq_2d)
@@ -82,7 +104,7 @@ def from_pdb(file):
     unres_shift = {}
     chain_sorted=[]
     newchain = True
-    
+    i=''
     for line in file:
             if line[0:6] == 'ATOM  ' and line[13:15] == 'CA':
               aa = three_to_one.get(line[17:20])
@@ -95,7 +117,7 @@ def from_pdb(file):
                  chain_start[ch]=i
                  chain_sorted.extend(ch)
                  newchain = False
-            if line[0:3] == 'TER':
+            if line[0:3] == 'TER' and i != '':
               sequence.append('XX')
               chain_end[ch]=i
               newchain = True
@@ -171,9 +193,7 @@ def add_min(request,task_id):
              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.myfile1=load_pdbid(pdbid,task.jobdirname)
               task.pdbcode=pdbid
              else:
               task.myfile1=form.cleaned_data["file1"]
@@ -222,9 +242,7 @@ def add_min_a(request,task_id):
              
              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.myfile1=load_pdbid(pdbid,task.jobdirname)
               task.pdbcode=pdbid
              else:
               task.myfile1=form.cleaned_data["file1"]
@@ -260,7 +278,7 @@ def add_md(request,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}
+        'md_pdbref':True,'md_temp':200,'md_seed':-39912345}
         form = TaskForm_md(initial=data)     
      else:
         form = TaskForm_md(request.POST,request.FILES)
@@ -278,9 +296,7 @@ def add_md(request,task_id):
 
              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.myfile1=load_pdbid(pdbid,task.jobdirname)
               task.pdbcode=pdbid
              else:
               task.myfile1=form.cleaned_data["file1"]
@@ -306,7 +322,7 @@ def add_md(request,task_id):
              else:
               return redirect('/')
     else:
-        data= {'name':task.name}
+        data= {'name':task.name,'md_seed':-random.randint(10000000,99999999)}
         form = TaskForm_md(initial=data)
     basic_adv=True
     p_type='molecular dynamics'
@@ -318,7 +334,7 @@ def add_md_a(request,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}
+         'md_pdbref':True,'md_mdpdb':True,'md_seed':-39912345}
         form = TaskForm_md_a(initial=data)     
      else:
         form = TaskForm_md_a(request.POST,request.FILES)
@@ -332,9 +348,7 @@ def add_md_a(request,task_id):
 
              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.myfile1=load_pdbid(pdbid,task.jobdirname)
               task.pdbcode=pdbid
              else:
               task.myfile1=form.cleaned_data["file1"]
@@ -381,7 +395,7 @@ def add_md_a(request,task_id):
              else:
               return redirect('/')
     else:
-        data= {'name':task.name}
+        data= {'name':task.name,'md_seed':-random.randint(10000000,99999999)}
         form = TaskForm_md_a(initial=data)
     basic_adv=False
     p_type='molecular dynamics - advanced options'
@@ -392,7 +406,7 @@ 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}
+        data= {'name':task.name,'pdbid':'1L2Y','md_pdbref':True,'md_seed':-39912345}
         form = TaskForm_remd(initial=data)     
      else:
         form = TaskForm_remd(request.POST,request.FILES)
@@ -407,9 +421,7 @@ def add_remd(request,task_id):
 
              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.myfile1=load_pdbid(pdbid,task.jobdirname)
               task.pdbcode=pdbid
              else:
               task.myfile1=form.cleaned_data["file1"]
@@ -441,7 +453,7 @@ def add_remd(request,task_id):
              else:
               return redirect('/')
     else:
-        data= {'name':task.name}
+        data= {'name':task.name,'md_seed':-random.randint(10000000,99999999)}
         form = TaskForm_remd(initial=data)
     basic_adv=True
     p_type='replica exchange molecular dynamics'
@@ -453,13 +465,15 @@ 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)     
+        data= {'name':task.name,'pdbid':'5G3Q:B','md_pdbref':True,
+         'md_nstep':2000000,'md_lang':'berendsen','unres_ff':'FF2','md_seed':-39912345,
+         'remd_cluter_temp':290,'md_2d':'--EEEEEEE------EEEEEE------EEEEEE------HHHHHHHHHHH---HHHHHHHHHHHHHHHHHHHHHHH---'}
+        form = TaskForm_remd_a(initial=data)    
+        task.example='casp12'
+        task.save() 
      elif '_example_saxs' in request.POST:
         data= {'name':task.name,'pdbid':'5UJQ','md_pdbref':True,
-         'md_nstep':200000,'md_lang':'langevin','unres_ff':'FF2',
+         'md_nstep':200000,'md_lang':'langevin','unres_ff':'FF2','md_seed':-39912345,
          'remd_cluter_temp':270, 
          'scal_rad':4.0,'wsaxs':100.0,'saxs_data':
 """ 0.5     1.33868e-02
@@ -512,9 +526,7 @@ def add_remd_a(request,task_id):
 
              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.myfile1=load_pdbid(pdbid,task.jobdirname)
               task.pdbcode=pdbid
              else:
               task.myfile1=form.cleaned_data["file1"]
@@ -541,6 +553,7 @@ def add_remd_a(request,task_id):
              task.md_lang=form.cleaned_data["md_lang"]
              task.md_tau=form.cleaned_data["md_tau"]
              task.md_scal_fric=form.cleaned_data["md_scal_fric"]
+             task.min_maxfun=form.cleaned_data["min_maxfun"]
              task.remd_nrep=form.cleaned_data["remd_nrep"]
              task.remd_nstex=form.cleaned_data["remd_nstex"]
              task.md_ntwx=form.cleaned_data["md_ntwx"]             
@@ -563,7 +576,7 @@ def add_remd_a(request,task_id):
              task.save()
              return redirect('addmlist',task_id=task.id)
     else:
-        data= {'name':task.name}
+        data= {'name':task.name,'md_seed':-random.randint(10000000,99999999)}
         form = TaskForm_remd_a(initial=data)
     basic_adv=False
     p_type='replica exchange molecular dynamics - advanced options'
@@ -585,7 +598,13 @@ def addmlist(request,task_id):
              else:
               return redirect('/')
     else:
-      if task.unres_ff == 'FF2':
+      if task.example == 'casp12':
+        data= {'name':task.name,'nrep':task.remd_nrep,'multiplexing':
+        '["2", "2", "2", "2", "2", "2", "2", "2"]',
+        'temperatures':
+        '["270", "280", "290", "300", "310", "320", "330", "340"]'
+        }
+      elif task.unres_ff == 'FF2':
         data= {'name':task.name,'nrep':task.remd_nrep,'multiplexing':
         '["1", "1", "1", "1", "1", "1", "1", "1"]',
         'temperatures':