X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;ds=sidebyside;f=django_simple%2Ftodo%2Fviews.py;h=9822a301f0c63878ad151345c2ed81dcf056b7ad;hb=c5a3f68a04860ca673130d123abb99c886e6705d;hp=2ec87358c8b2dde8703657eca70e047bb4e12131;hpb=6fb77f4e05910e0a6682df3f0bbc72af8776988d;p=django_unres.git diff --git a/django_simple/todo/views.py b/django_simple/todo/views.py index 2ec8735..9822a30 100644 --- a/django_simple/todo/views.py +++ b/django_simple/todo/views.py @@ -6,6 +6,7 @@ from .models import Task import datetime import os import subprocess +import json res_codes = [ # 20 canonical amino acids @@ -34,18 +35,47 @@ def seq_add_x(sequence): def from_pdb(file): sequence = [] ssbond = [] + ssbond_ch = [] + ires = [] + chain_start = {} + chain_end = {} + unres_shift = {} + chain=[] + ichain=0 + newchain = True + for line in file: + if line[0:6] == 'COMPND' and line[11:17] == 'CHAIN:': + tmp=line[18:] + chain_=tmp.split(', ') + chain_[-1]=chain_[-1][0] + chain.extend(chain_) + if line[0:6] == 'ATOM ' and line[13:15] == 'CA': aa = three_to_one.get(line[17:20]) - sequence.append(aa) + i = int(line[22:26]) + if newchain or i!=ires[-1]: + sequence.append(aa) + ires.append(i) + if newchain: + if len(chain)>0: + chain_start[chain[ichain]]=i + newchain = False if line[0:3] == 'TER': sequence.append('XX') + if len(chain)>0: + chain_end[chain[ichain]]=i + ichain=ichain+1 + newchain = True if line[0:6] == 'SSBOND': b=[] b.append(int(line[17:21])) b.append(int(line[31:35])) ssbond.append(b) - + c = [] + c.append((line[15:16])) + c.append((line[29:30])) + ssbond_ch.append(c) if line[0:3] == 'END': break while sequence[-1] == 'XX': @@ -56,13 +86,21 @@ def from_pdb(file): if sequence[-1] != 'G': sequence.append('X') seq=''.join(sequence) - return seq,ssbond +# if ires[0] != 1: +# ssbond=[ [e[0]-ires[0]+1,e[1]-ires[0]+1] for e in ssbond] + i=0 + for c in chain: + unres_shift[c]=i+chain_start[c] + i=i-(chain_end[c]-chain_start[c])-3 + ssbond=[ [e[0]-unres_shift[c[0]]+1,e[1]-unres_shift[c[1]]+1] for e,c in zip(ssbond,ssbond_ch)] + + return seq,json.dumps(ssbond) @login_required def index(request): user = request.user - tasks = Task.objects.filter(owner=user) + tasks = Task.objects.filter(owner=user).order_by('-created_date') variable = '' return render(request, "index.html", { 'tasks': tasks @@ -315,6 +353,7 @@ def add_remd_a(request,task_id): task.remd_nrep=form.cleaned_data["remd_nrep"] task.remd_nstex=form.cleaned_data["remd_nstex"] task.md_ntwx=form.cleaned_data["md_ntwx"] + task.md_ntwe=form.cleaned_data["md_ntwe"] # task.remd_traj1file=form.cleaned_data["remd_traj1file"] # task.remd_rest1file=form.cleaned_data["remd_rest1file"] @@ -347,12 +386,20 @@ def addmlist(request,task_id): task.save() return redirect('/') else: + if task.unres_ff == 'E0LL2Y': data= {'name':task.name,'nrep':task.remd_nrep,'multiplexing': '["1", "1", "1", "1", "1", "1", "1", "1"]', 'temperatures': '["270", "280", "290", "300", "310", "320", "330", "345"]' } - form = TaskForm_list(task.remd_nrep,initial=data) + else: + data= {'name':task.name,'nrep':task.remd_nrep,'multiplexing': + '["1", "1", "1", "1", "1", "1", "1", "1"]', + 'temperatures': + '["250", "260", "270", "280", "290", "300", "315", "330"]' + } + + form = TaskForm_list(task.remd_nrep,initial=data) p_type='replica exchange molecular dynamics - advanced options' return render(request, 'edit_lista.html', {'form': form, 'task':task, 'p_type':p_type}) @@ -369,7 +416,7 @@ def delete(request, task_id): @login_required def refresh_done(request): user = request.user - tasks = Task.objects.filter(owner=user) + tasks = Task.objects.filter(owner=user).order_by('-created_date') for task in tasks: if os.path.isfile(task.jobdirname+'/finished') and not task.done: task.done=True @@ -414,6 +461,7 @@ def refresh_done(request): if task.md_pdbref and task.type=='remd': for i in range(1,6): + 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: @@ -426,7 +474,8 @@ def refresh_done(request): task.remd_model4=' '.join(line.split()[-6:]) elif i==5: task.remd_model5=' '.join(line.split()[-6:]) - + except EnvironmentError: + print 'file_wham_T*pdb open error' for i in range(1,6): with open(task.jobdirname+'/tmscore'+str(i)+'.out', 'r') as f: text=''