from .models import Task
import datetime
import os
+import subprocess
res_codes = [
# 20 canonical amino acids
('LEU', 'L'), ('ARG', 'R'), ('TRP', 'W'), ('ALA', 'A'),
('VAL', 'V'), ('GLU', 'E'), ('TYR', 'Y'), ('MET', 'M'),
('HSD', 'H'),('HSE', 'H'),('HSP', 'H'),
+ ('HIE', 'H'), ('HID', 'H'),('HIP', 'H'),
+ ('CYX', 'C'),
]
three_to_one = dict(res_codes)
if line[0:3] == 'END':
break
- if sequence[-1] == 'XX':
+ while sequence[-1] == 'XX':
del sequence[-1]
if sequence[0] != 'G':
sequence.insert(0,'X')
def index(request):
user = request.user
tasks = Task.objects.filter(owner=user)
+ variable = ''
return render(request, "index.html", {
'tasks': tasks
})
if 'Total wall' in line:
text=text+line
-
task.results_text=text
+ if task.md_pdbref and task.type=='remd':
+
+ for i in range(1,6):
+ 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=' '.join(line.split()[-6:])
+ elif i==2:
+ task.remd_model2=' '.join(line.split()[-6:])
+ elif i==3:
+ task.remd_model3=' '.join(line.split()[-6:])
+ elif i==4:
+ task.remd_model4=' '.join(line.split()[-6:])
+ elif i==5:
+ task.remd_model5=' '.join(line.split()[-6:])
+
+ for i in range(1,6):
+ with open(task.jobdirname+'/tmscore'+str(i)+'.out', 'r') as f:
+ text=''
+ for line in f:
+ if 'RMSD of the common residues=' in line:
+ text=' RMSD='+line.split()[5]
+ if 'TMscore =' in line:
+ text=text+' TM-score='+line.split()[2]
+ 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
+
+
+
+ if task.type=='remd':
+ with open(task.jobdirname+'/file_cluster_clust.out_000', 'r') as f:
+
+ for line in f:
+ if 'sumprob' in line:
+ i=0
+ for line1 in f:
+ i+=1
+ if i>6:
+ 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]
+
+
+
task.save()
elif os.path.isfile(task.jobdirname+'/file_GB000.stat') and not task.done:
if (task.type=='min'):
task.running =1
else:
with open(task.jobdirname+'/file_GB000.stat', 'r') as f:
+ line=''
for line in f:
pass
- if line:
+ if line != '':
last = line.split()[0]
else:
last = 0
- task.running=1+int(last)*100.0/task.md_nstep
+ task.running=int(1+int(last)*100.0/task.md_nstep)
if task.running>100:
task.running=100
task.save()
- return redirect('/')
+
+ proc = subprocess.Popen('/opt/torque/bin/qstat', stdout=subprocess.PIPE)
+ njob=0
+ nq=0
+ for line in proc.stdout:
+ if 'piasek4' in line:
+ if line.split()[1]=='test_server':
+ njob+=1
+ if line.split()[-2]=='Q':
+ nq+=1
+ variable='Idle jobs='+str(nq)+' Total jobs='+str(njob)
+
+ return render(request, "index.html", {
+ 'tasks': tasks ,
+ 'variable' : variable
+ })
+
+# return redirect('/')