+
+@login_required
+def restart(request, task_id):
+ task = get_object_or_404(Task, id=task_id)
+ restart0(task)
+ return redirect('/')
+
+def add_restart_inp():
+ with open('file.inp','r') as f1, open ('file.inp.tmp','w') as f2:
+ for line in f1:
+ if 'reset_vel=' in line:
+ f2.write('{:79}'.format('restart'+line[7:]))
+ else:
+ f2.write(line)
+ os.remove('file.inp')
+ os.rename('file.inp.tmp','file.inp')
+ return
+
+def restart0(task):
+ if os.path.isfile(task.jobdirname+'/finished'):
+ os.remove(task.jobdirname+'/finished')
+ task.running =1
+ task.done=False
+ task.md_total_steps = task.md_total_steps+task.md_nstep
+ task.save()
+ if task.type == 'md':
+ os.chdir(task.jobdirname)
+ add_restart_inp()
+ ret_code = subprocess.Popen(' /opt/torque/bin/qsub pbs.csh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ os.chdir('..')
+ elif task.type == 'remd' or task.type == 'dock':
+ os.chdir(task.jobdirname)
+ add_restart_inp()
+ tmp1=json.loads(task.remd_multi_m)
+ nreplicas=sum(map(int, tmp1))
+ with open('file_wham.inp','r') as f1, open ('file_wham.tmp','w') as f2:
+ for line in f1:
+ if 'rec_end=' in line:
+ rec=task.md_total_steps/task.md_ntwx
+ f2.write('nfile_cx=1 rec_start='+str(rec/10)
+ +' rec_end='+str(rec)+' totraj='+str(nreplicas)+'\n')
+ elif 'isampl=' in line:
+ if task.md_total_steps/task.md_ntwx*nreplicas<=8000:
+ isampl=1
+ else:
+ isampl=int(task.md_total_steps/task.md_ntwx*nreplicas/8000)
+ f2.write('{:79}'.format(' isampl='+str(isampl))+'&\n')
+ else:
+ f2.write(line)
+ os.remove('file_wham.inp')
+ os.rename('file_wham.tmp','file_wham.inp')
+ if task.type == 'dock':
+ with open('pbs8.csh','r') as f1, open ('pbs8.tmp','w') as f2:
+ for line in f1:
+ if 'generator_v13' in line:
+ f2.write('#'+line)
+ else:
+ f2.write(line)
+ os.remove('pbs8.csh')
+ os.rename('pbs8.tmp','pbs8.csh')
+ ret_code = subprocess.Popen(' /opt/torque/bin/qsub pbs8.csh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ os.chdir('..')
+ return
+
+def restart1(request, user_id, task_id):
+ task = get_object_or_404(Task, id=task_id)
+ user = task.owner
+ restart0(task)
+ return redirect('/details1/'+str(user)+'/'+str(task.id)+'/')
+
+
+def refresh_done1(request, task_id):
+ task = get_object_or_404(Task, id=task_id)
+ user = task.owner
+ refresh_done0(task)
+
+ 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 redirect('/details1/'+str(user)+'/'+str(task.id)+'/')
+