X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=django_simple%2Ftodo%2Fviews.py;h=4db374750591bc07de6cca8f49d0e90c695c7651;hb=d368b6f6d2c47c7f30ca7a0d8dfb02c73de314da;hp=9c4f9ea768e02f2d1b4757f632f82c359fca2177;hpb=b0e5f7d1d58d12c2133ad3ef8af42ae80e58bffa;p=django_unres.git diff --git a/django_simple/todo/views.py b/django_simple/todo/views.py index 9c4f9ea..4db3747 100644 --- a/django_simple/todo/views.py +++ b/django_simple/todo/views.py @@ -10,6 +10,10 @@ import json from lazysignup.decorators import allow_lazy_user from lazysignup.utils import is_lazy_user import random +import logging + +logging.basicConfig() +logger = logging.getLogger(__name__) res_codes = [ # 20 canonical amino acids @@ -764,13 +768,20 @@ def add_dock(request,task_id): if pdbid2: task.myfile2=load_pdbid(pdbid2,task.jobdirname,'plik2.pdb') task.pdbcode2=pdbid2 + seq2,ssbond2=from_pdb(task.myfile2) else: task.myfile2=form.cleaned_data["file2"] + if not task.myfile2: + seq2=seq_add_x(form.cleaned_data["md_seq"]) + task.md_seq2=seq2 + else: + seq2,ssbond2=from_pdb(task.myfile2) task.md_ntwx=task.remd_nstex task.md_start="pdbstart" task.remd_multi_m='["3", "3", "3", "3", "3", "3", "3", "3"]' - task.md_pdbref=True + if task.md_seq2 =='': + task.md_pdbref=True task.md_respa=False task.ssbond="" task.dock_peptide=form.cleaned_data["dock_peptide"] @@ -778,7 +789,7 @@ def add_dock(request,task_id): task.md_seq="" seq1,ssbond1=from_pdb(task.myfile1) - seq2,ssbond2=from_pdb(task.myfile2) + if seq1[-1]=='X' and seq2[0]=='X': seq=seq1+seq2 @@ -800,7 +811,10 @@ def add_dock(request,task_id): task.damino=True box1=dock_box(task.myfile1) - box2=dock_box(task.myfile2) + if task.myfile2: + box2=dock_box(task.myfile2) + else: + box2=len(task.md_seq2)*2.0 task.boxx=(box1+box2)*1.2+20 task.boxy=(box1+box2)*1.2+20 task.boxz=(box1+box2)*1.2+20 @@ -826,8 +840,10 @@ def add_dock_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_pdbref':True,'md_seed':-39912345} + data= {'name':task.name,'pdbid':'2HPL:A','md_seq':'DDLYG','dock_peptide':True,'md_seed':-39912345,'md_nstep':600000} form = TaskForm_dock_a(initial=data) + task.example='dock_peptide' + task.save() else: form = TaskForm_dock_a(request.POST,request.FILES) if form.is_valid(): @@ -849,12 +865,20 @@ def add_dock_a(request,task_id): if pdbid2: task.myfile2=load_pdbid(pdbid2,task.jobdirname,'plik2.pdb') task.pdbcode2=pdbid2 + seq2,ssbond2=from_pdb(task.myfile2) else: task.myfile2=form.cleaned_data["file2"] + if not task.myfile2: + seq2=seq_add_x(form.cleaned_data["md_seq"]) + task.md_seq2=seq2 + else: + seq2,ssbond2=from_pdb(task.myfile2) + task.md_ntwx=task.remd_nstex task.md_start="pdbstart" - task.md_pdbref=True + if task.md_seq2 =='': + task.md_pdbref=True task.md_respa=False task.ssbond="" task.dock_peptide=form.cleaned_data["dock_peptide"] @@ -862,7 +886,6 @@ def add_dock_a(request,task_id): task.md_seq="" seq1,ssbond1=from_pdb(task.myfile1) - seq2,ssbond2=from_pdb(task.myfile2) if seq1[-1]=='X' and seq2[0]=='X': seq=seq1+seq2 @@ -890,6 +913,7 @@ def add_dock_a(request,task_id): task.md_ntwe=form.cleaned_data["md_ntwe"] task.remd_cluter_temp=form.cleaned_data["remd_cluter_temp"] + task.remd_cluster_n=form.cleaned_data["remd_cluster_n"] task.unres_ff=form.cleaned_data["unres_ff"] if any(c.islower() for c in seq): @@ -897,7 +921,10 @@ def add_dock_a(request,task_id): task.damino=True box1=dock_box(task.myfile1) - box2=dock_box(task.myfile2) + if task.myfile2: + box2=dock_box(task.myfile2) + else: + box2=len(task.md_seq2)*2.0 task.boxx=(box1+box2)*1.2+20 task.boxy=(box1+box2)*1.2+20 task.boxz=(box1+box2)*1.2+20 @@ -936,6 +963,12 @@ def addmlist(request,task_id): 'temperatures': '["270", "280", "290", "300", "310", "320", "330", "340"]' } + elif task.example == 'dock_peptide': + data= {'name':task.name,'nrep':task.remd_nrep,'multiplexing': + '["4", "8", "4", "4", "4", "4", "4", "4"]', + 'temperatures': + '["270", "280", "290", "300", "310", "320", "330", "345"]' + } elif task.unres_ff == 'FF2': data= {'name':task.name,'nrep':task.remd_nrep,'multiplexing': '["1", "1", "1", "1", "1", "1", "1", "1"]', @@ -956,12 +989,30 @@ def addmlist(request,task_id): @login_required def details(request,task_id): task = get_object_or_404(Task, id=task_id) - return render(request, "details.html",{'task':task}) + try: + remd_models=json.loads(task.remd_models) + except: + remd_models=[] + remd_models.append(task.remd_model1) + remd_models.append(task.remd_model2) + remd_models.append(task.remd_model3) + remd_models.append(task.remd_model4) + remd_models.append(task.remd_model5) + return render(request, "details.html",{'task':task,'remd_models':remd_models,'range':range(1,task.remd_cluster_n+1)}) def details1(request,user_id,task_id): task = get_object_or_404(Task, id=task_id) - return render(request, "details1.html",{'task':task}) + try: + remd_models=json.loads(task.remd_models) + except: + remd_models=[] + remd_models.append(task.remd_model1) + remd_models.append(task.remd_model2) + remd_models.append(task.remd_model3) + remd_models.append(task.remd_model4) + remd_models.append(task.remd_model5) + return render(request, "details1.html",{'task':task,'remd_models':remd_models,'range':range(1,task.remd_cluster_n+1)}) @login_required @@ -998,7 +1049,7 @@ def restart0(task): add_restart_inp() ret_code = subprocess.Popen(' /opt/torque/bin/qsub pbs.csh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) os.chdir('..') - elif task.type == 'remd': + elif task.type == 'remd' or task.type == 'dock': os.chdir(task.jobdirname) add_restart_inp() tmp1=json.loads(task.remd_multi_m) @@ -1019,6 +1070,15 @@ def restart0(task): f2.write(line) os.remove('file_wham.inp') os.rename('file_wham.tmp','file_wham.inp') + if task.type == 'dock': + with open('pbs8.csh','r') as f1, open ('pbs8.tmp','w') as f2: + for line in f1: + if 'generator_v13' in line: + f2.write('#'+line) + else: + f2.write(line) + os.remove('pbs8.csh') + os.rename('pbs8.tmp','pbs8.csh') ret_code = subprocess.Popen(' /opt/torque/bin/qsub pbs8.csh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) os.chdir('..') return @@ -1123,25 +1183,17 @@ def refresh_done0(task): task.results_text=text - if task.md_pdbref and task.type=='remd' or task.type=='dock': + remd_models=[] + if task.md_pdbref and task.type=='remd' or task.type=='dock' and task.md_seq2 == '': - for i in range(1,6): + for i in range(1,task.remd_cluster_n+1): try: 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='Cluster1 '+' '.join(line.split()[-3:]) - elif i==2: - task.remd_model2='Cluster2 '+' '.join(line.split()[-3:]) - elif i==3: - task.remd_model3='Cluster3 '+' '.join(line.split()[-3:]) - elif i==4: - task.remd_model4='Cluster4 '+' '.join(line.split()[-3:]) - elif i==5: - task.remd_model5='Cluster5 '+' '.join(line.split()[-3:]) + remd_models.append('Cluster'+str(i)+' '+' '.join(line.split()[-3:])) except EnvironmentError: print 'file_wham_T*pdb open error' - for i in range(1,6): + for i in range(1,task.remd_cluster_n+1): with open(task.jobdirname+'/tmscore'+str(i)+'.out', 'r') as f: text='' for line in f: @@ -1152,19 +1204,10 @@ def refresh_done0(task): if 'GDT-TS-score=' in line: text=text+' GDT_TS='+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 + remd_models[i-1]=remd_models[i-1]+text if task.type=='dock': - for i in range(1,6): + for i in range(1,task.remd_cluster_n+1): with open(task.jobdirname+'/dockq_'+str(i)+'.out', 'r') as f: text='' for line in f: @@ -1181,17 +1224,8 @@ def refresh_done0(task): 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 - + remd_models[i-1]=remd_models[i-1]+text +# logger.warning("models %d %s" % (i,remd_models)) if task.type=='remd' or task.type=='dock': with open(task.jobdirname+'/file_cluster_clust.out_000', 'r') as f: @@ -1201,21 +1235,16 @@ def refresh_done0(task): i=0 for line1 in f: i+=1 - if i>6: + if i>task.remd_cluster_n: break - if i==1: - task.remd_model1=task.remd_model1+' Cluster1 probability= '+line1.split()[-2] - elif i==2: - task.remd_model2=task.remd_model2+' Cluster2 probability= '+line1.split()[-2] - elif i==3: - task.remd_model3=task.remd_model3+' Cluster3 probability= '+line1.split()[-2] - elif i==4: - task.remd_model4=task.remd_model4+' Cluster4 probability= '+line1.split()[-2] - elif i==5: - task.remd_model5=task.remd_model5+' Cluster5 probability= '+line1.split()[-2] + try: + remd_models[i-1]=remd_models[i-1]+' Cluster'+str(i)+' probability= '+line1.split()[-2] + except: + if len(line1.split())==4: + remd_models.append(' Cluster'+str(i)+' probability= '+line1.split()[-2]) - - + task.remd_models=json.dumps(remd_models) +# logger.warning("models%s" % task.remd_models) task.save() elif os.path.isfile(task.jobdirname+'/file_GB000.stat') and not task.done: if (task.type=='min'):