three_to_one = dict(res_codes)
+def dock_box(file):
+ import math
+ coord = list()
+ for line in file:
+ if line[0:6] == 'ATOM ' and line[13:15] == 'CA':
+ x=float(line[30:38])
+ y=float(line[38:46])
+ z=float(line[46:54])
+ coord.append([x, y, z])
+ if line[0:3] == 'END':
+ break
+ maxd=0
+ l=len(coord)
+ for i in xrange(l):
+ for j in xrange(i+1,l):
+ p1=coord[i]
+ p2=coord[j]
+ d=(p1[0]-p2[0])**2 + (p1[1]-p2[1])**2 + (p1[2]-p2[2])**2
+ if d > maxd:
+ maxd=d
+ return math.sqrt(maxd)
+
+
def load_pdbid(pdbid,dirname,filename='plik.pdb'):
if (not os.path.isdir(dirname)):
os.mkdir(dirname)
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"]
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
task.md_respa=False
task.damino=True
-
+ box1=dock_box(task.myfile1)
+ 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
+
task.ready=True
+
task.save()
task.pdbcode2=pdbid2
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
task.md_respa=False
task.ssbond=""
+ task.dock_peptide=form.cleaned_data["dock_peptide"]
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
task.md_respa=False
task.damino=True
+ box1=dock_box(task.myfile1)
+ 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
- task.ready=True
-
-
task.save()
return redirect('addmlist',task_id=task.id)
task.results_text=text
- if task.md_pdbref and task.type=='remd' or task.type=='dock':
+ if task.md_pdbref and task.type=='remd' or task.type=='dock' and task.md_seq2 == '':
for i in range(1,6):
try:
text=' Fnat='+line.split()[1]
if 'iRMS' in line:
text=text+' iRMS='+line.split()[1]
- if 'LRMS=' in line:
+ if 'LRMS' in line:
text=text+' LRMS='+line.split()[1]
- if 'CAPRI' in line:
- text=text+' CAPRI'+line.split()[1]
+ if 'CAPRI' in line and not 'DockQ_CAPRI' in line:
+ text=text+' CAPRI='+line.split()[1]
if 'DockQ_CAPRI' in line:
- text=text+' DockQ_CAPRI'+line.split()[1]
+ text=text+' DockQ_CAPRI= '+line.split()[1]
if 'DockQ ' in line:
- text=text+' DockQ'+line.split()[1]
+ text=text+' DockQ='+line.split()[1]
if i==1:
task.remd_model1=task.remd_model1+text