X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=django_simple%2Ftodo%2Fviews.py;h=8ad50605a3dd3dbec10f7cb3a698101a8c17bb98;hb=d82a989eec06a167258ff6d644dd77292310ddda;hp=0e61389158ac883f5261862656c34f982d883dd4;hpb=4be82ca096484d9b43a91d42cd0b8168949233e5;p=django_unres.git diff --git a/django_simple/todo/views.py b/django_simple/todo/views.py index 0e61389..8ad5060 100644 --- a/django_simple/todo/views.py +++ b/django_simple/todo/views.py @@ -30,23 +30,26 @@ res_codes = [ three_to_one = dict(res_codes) -def load_pdbid(pdbid,dirname): - os.mkdir(dirname) +def load_pdbid(pdbid,dirname,filename='plik.pdb'): + if (not os.path.isdir(dirname)): + os.mkdir(dirname) if len(pdbid)==4: file,header=urllib.urlretrieve('http://files.rcsb.org/download/'+pdbid+'.pdb', - dirname+'/plik.pdb') + dirname+'/'+filename) 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: + with open(dirname+'/'+filename, '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) + if line[0:6] == 'ENDMDL': + break pdb_tmp.close() - file=dirname+'/plik.pdb' + file=dirname+'/'+filename return(file) @@ -704,6 +707,146 @@ def add_remd_a(request,task_id): return render(request, 'edit.html', {'form': form, 'task':task, 'basic_adv':basic_adv, 'p_type':p_type}) @login_required +def add_dock(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_seed':-39912345} + form = TaskForm_dock(initial=data) + else: + form = TaskForm_dock(request.POST,request.FILES) + if form.is_valid(): + task.name=form.cleaned_data["name"] + task.type="dock" + + 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: + task.myfile1=load_pdbid(pdbid,task.jobdirname) + task.pdbcode=pdbid + else: + task.myfile1=form.cleaned_data["file1"] + + pdbid2=form.cleaned_data["pdbid2"] + if pdbid2: + task.myfile2=load_pdbid(pdbid2,task.jobdirname,'plik2.pdb') + task.pdbcode2=pdbid2 + else: + task.myfile2=form.cleaned_data["file2"] + + task.md_ntwx=task.remd_nstex + task.md_start="pdbstart" + task.md_pdbref=True + task.md_respa=False + task.ssbond="" + + 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 + elif seq1[-1]!='X' and seq2[0]!='X': + seq=seq1+'XX'+seq2 + else: + seq=seq1+'X'+seq2 + + for i in range(0,len(seq),40): + task.md_seq=task.md_seq+seq[i:i+40]+" " + + task.md_seed=form.cleaned_data["md_seed"] + + task.md_nstep=form.cleaned_data["md_nstep"] + + if any(c.islower() for c in seq): + task.md_respa=False + task.damino=True + + + task.ready=True + + + task.save() + if is_lazy_user(request.user): + return redirect('/details1/'+str(task.owner)+'/'+str(task.id)+'/') + else: + return redirect('/') + else: + data= {'name':task.name,'md_seed':-random.randint(10000000,99999999)} + form = TaskForm_dock(initial=data) + basic_adv=True + p_type='docking' + return render(request, 'edit.html', {'form': form, 'task':task, 'basic_adv':basic_adv, 'p_type':p_type}) + +@login_required +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} + 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"] + + 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: + task.myfile1=load_pdbid(pdbid,task.jobdirname) + task.pdbcode=pdbid + else: + task.myfile1=form.cleaned_data["file1"] + task.md_pdbref=form.cleaned_data["md_pdbref"] + task.md_ntwx=task.remd_nstex + + task.md_seq="" + if task.md_start == "pdbstart" or task.md_pdbref: + seq,task.ssbond=from_pdb(task.myfile1) + else: + seq=seq_add_x(form.cleaned_data["md_seq"]) + for i in range(0,len(seq),40): + task.md_seq=task.md_seq+seq[i:i+40]+" " + + if task.md_start != "pdbstart": + task.ssbond='' + + task.md_seed=form.cleaned_data["md_seed"] + + task.md_nstep=form.cleaned_data["md_nstep"] + + if any(c.islower() for c in seq): + task.md_respa=False + task.damino=True + + + task.ready=True + + + task.save() + if is_lazy_user(request.user): + return redirect('/details1/'+str(task.owner)+'/'+str(task.id)+'/') + else: + return redirect('/') + else: + data= {'name':task.name,'md_seed':-random.randint(10000000,99999999)} + form = TaskForm_remd(initial=data) + basic_adv=False + p_type='docking - advanced options' + return render(request, 'edit.html', {'form': form, 'task':task, 'basic_adv':basic_adv, 'p_type':p_type}) + + + +@login_required def addmlist(request,task_id): task = get_object_or_404(Task, id=task_id) if request.method == 'POST': @@ -831,7 +974,7 @@ def refresh_done0(task): if 'Total wall' in line: text=text+line - elif task.type=='remd': + elif task.type=='remd' or task.type=='dock': j=0 text="Acceptance for replica exchanges and number of exchange attempts\n" for line in f: