X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=django_simple%2Ftodo%2Fviews.py;h=45c3f249228a5b5b2d8e382128611b792a9e1264;hb=b3cd3f7d9ed8c4683b8e13aee4c34ed4863d4788;hp=a29ae69c4a6c101241abb130a9fb36329242bee5;hpb=32eab17b5d32751f900c80ffc18e6661bfe90572;p=django_unres.git diff --git a/django_simple/todo/views.py b/django_simple/todo/views.py index a29ae69..45c3f24 100644 --- a/django_simple/todo/views.py +++ b/django_simple/todo/views.py @@ -29,12 +29,66 @@ 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) + seq_2d=seq_2d.replace('C', '-') + seq_2d_tmp='' + ii=0 + for i in range(0,len(seq)): + if seq[i]=='X': + seq_2d_tmp=seq_2d_tmp+'-' + else: + if len(seq_2d)>ii: + seq_2d_tmp=seq_2d_tmp+seq_2d[ii] + ii+=1 + tmp='' + for i in range(0,len(seq_2d_tmp),40): + tmp=tmp+seq_2d_tmp[i:i+40]+" " + return(tmp) + +def seq_2d_add_x(seq_2d,seq,seq_form): + if seq_2d =='': + return(seq_2d) + seq_2d=seq_2d[:len(seq_form)] + seq_2d=seq_2d.replace('C', '-') + if seq_form[0] !='X' and seq[0] == 'X': + seq_2d='-'+seq_2d + if seq_form[-1] !='X' and seq[-1] == 'X': + seq_2d=seq_2d+'-' + seq_2d=seq_2d[:len(seq)] + tmp='' + for i in range(0,len(seq_2d),40): + tmp=tmp+seq_2d[i:i+40]+" " + return(tmp) + def seq_add_x(sequence): - if sequence[0] != 'G' and sequence[0] != 'g': + if sequence[0] != 'G' and sequence[0] != 'g' and sequence[0] != 'X': sequence='X'+sequence - if sequence[-1] != 'G' and sequence[-1] != 'g': + if sequence[-1] != 'G' and sequence[-1] != 'g' and sequence[-1] != 'X': sequence=sequence+'X' - set ='CDSQKIPTFNGHLRWAVEYMXcdsqkiptfnghlrwaveym' + set ='CDSQKIPTFNGHLRWAVEYMXcdsqkiptfnhlrwaveym' sequence = ''.join([c for c in sequence if c in set]) return(sequence) @@ -47,32 +101,24 @@ def from_pdb(file): chain_start = {} chain_end = {} unres_shift = {} - chain=[] - ichain=0 + chain_sorted=[] newchain = True - + i='' 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]) i = int(line[22:26]) + ch = line[21:22] if newchain or i!=ires[-1]: sequence.append(aa) ires.append(i) if newchain: - if len(chain)>0: - chain_start[chain[ichain]]=i + 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') - if len(chain)>0: - chain_end[chain[ichain]]=i - ichain=ichain+1 + chain_end[ch]=i newchain = True if line[0:6] == 'SSBOND': b=[] @@ -85,6 +131,8 @@ def from_pdb(file): ssbond_ch.append(c) if line[0:3] == 'END': break + if not sequence[-1] == 'XX': + chain_end[ch]=i while sequence[-1] == 'XX': del sequence[-1] if sequence[0] != 'G': @@ -96,7 +144,7 @@ def from_pdb(file): # 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: + for c in chain_sorted: 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)] @@ -144,9 +192,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"] @@ -182,7 +228,7 @@ def add_min_a(request,task_id): if form.is_valid(): task.name=form.cleaned_data["name"] task.type="min" - task.min_choice=form.cleaned_data["min_choice"] +# task.min_choice=form.cleaned_data["min_choice"] task.min_overlap=form.cleaned_data["min_overlap"] task.min_searchsc=form.cleaned_data["min_searchsc"] task.min_maxmin=form.cleaned_data["min_maxmin"] @@ -195,9 +241,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"] @@ -251,9 +295,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"] @@ -305,9 +347,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"] @@ -317,8 +357,11 @@ def add_md_a(request,task_id): task.md_seq="" if task.md_start == "pdbstart" or task.md_pdbref: seq,task.ssbond=from_pdb(task.myfile1) + task.md_2d=seq_2d_from_pdb(form.cleaned_data["md_2d"],seq) else: seq=seq_add_x(form.cleaned_data["md_seq"]) + task.md_2d=seq_2d_add_x(form.cleaned_data["md_2d"],seq,form.cleaned_data["md_seq"]) + for i in range(0,len(seq),40): task.md_seq=task.md_seq+seq[i:i+40]+" " @@ -377,9 +420,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"] @@ -423,13 +464,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', + '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':'E0LL2Y', + 'md_nstep':200000,'md_lang':'langevin','unres_ff':'FF2', 'remd_cluter_temp':270, 'scal_rad':4.0,'wsaxs':100.0,'saxs_data': """ 0.5 1.33868e-02 @@ -482,9 +525,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"] @@ -494,8 +535,11 @@ def add_remd_a(request,task_id): task.md_seq="" if task.md_start == "pdbstart" or task.md_pdbref: seq,task.ssbond=from_pdb(task.myfile1) + task.md_2d=seq_2d_from_pdb(form.cleaned_data["md_2d"],seq) else: seq=seq_add_x(form.cleaned_data["md_seq"]) + task.md_2d=seq_2d_add_x(form.cleaned_data["md_2d"],seq,form.cleaned_data["md_seq"]) + for i in range(0,len(seq),40): task.md_seq=task.md_seq+seq[i:i+40]+" " @@ -508,6 +552,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"] @@ -552,7 +597,13 @@ def addmlist(request,task_id): else: return redirect('/') else: - if task.unres_ff == 'E0LL2Y': + 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':