('HSD', 'H'),('HSE', 'H'),('HSP', 'H'),
('HIE', 'H'), ('HID', 'H'),('HIP', 'H'),
('CYX', 'C'),
+ ('DCY', 'c'), ('DAS', 'd'), ('DSN', 's'), ('DGN', 'q'),
+ ('DLY', 'k'), ('DIL', 'i'), ('DPR', 'p'), ('DTH', 't'),
+ ('DPN', 'f'), ('DSG', 'n'), ('DHI', 'h'),
+ ('DLE', 'l'), ('DAR', 'r'), ('DTR', 'w'), ('DAL', 'a'),
+ ('DVA', 'v'), ('DGL', 'e'), ('DTY', 'y'), ('MED', 'm'),
]
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':
+ if sequence[0] != 'G' and sequence[0] != 'g' and sequence[0] != 'X':
sequence='X'+sequence
- if sequence[-1] != 'G':
+ if sequence[-1] != 'G' and sequence[-1] != 'g' and sequence[-1] != 'X':
sequence=sequence+'X'
- set ='CDSQKIPTFNGHLRWAVEYMX'
+ set ='CDSQKIPTFNGHLRWAVEYMXcdsqkiptfnhlrwaveym'
sequence = ''.join([c for c in sequence if c in set])
return(sequence)
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=[]
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':
# 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)]
tasks = Task.objects.filter(owner=user).order_by('-created_date')
variable = ''
return render(request, "index.html", {
- 'tasks': tasks
+ 'tasks': tasks, 'alldone': 0
})
@login_required
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"]
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"]
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"]
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"]
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"]
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]+" "
task.md_scal_fric=form.cleaned_data["md_scal_fric"]
task.md_mdpdb=form.cleaned_data["md_mdpdb"]
task.unres_ff=form.cleaned_data["unres_ff"]
+ task.md_respa=form.cleaned_data["md_respa"]
task.boxx=form.cleaned_data["boxx"]
task.boxy=form.cleaned_data["boxy"]
task.boxz=form.cleaned_data["boxz"]
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"]
@login_required
def add_remd_a(request,task_id):
+ from django.core.files.uploadedfile import UploadedFile
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}
+ 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':'FF2',
+ 'remd_cluter_temp':270,
+ 'scal_rad':4.0,'wsaxs':100.0,'saxs_data':
+""" 0.5 1.33868e-02
+ 1.5 1.95880e-02
+ 2.5 2.68896e-02
+ 3.5 3.43737e-02
+ 4.5 4.07099e-02
+ 5.5 4.47875e-02
+ 6.5 4.63486e-02
+ 7.5 4.60514e-02
+ 8.5 4.49130e-02
+ 9.5 4.36744e-02
+10.5 4.26085e-02
+11.5 4.17464e-02
+12.5 4.11217e-02
+13.5 4.07835e-02
+14.5 4.06776e-02
+15.5 4.06060e-02
+16.5 4.03241e-02
+17.5 3.96655e-02
+18.5 3.85756e-02
+19.5 3.70537e-02
+20.5 3.50982e-02
+21.5 3.27236e-02
+22.5 3.00046e-02
+23.5 2.70643e-02
+24.5 2.40044e-02
+25.5 2.08595e-02
+26.5 1.76342e-02
+27.5 1.43802e-02
+28.5 1.12281e-02
+29.5 8.34574e-03
+30.5 5.87354e-03
+31.5 3.88732e-03
+32.5 2.39755e-03
+33.5 1.36323e-03
+34.5 7.06686e-04
+35.5 3.30592e-04
+36.5 1.38359e-04"""}
form = TaskForm_remd_a(initial=data)
else:
form = TaskForm_remd_a(request.POST,request.FILES)
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"]
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]+" "
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"]
task.md_ntwe=form.cleaned_data["md_ntwe"]
+ task.md_respa=form.cleaned_data["md_respa"]
# task.remd_traj1file=form.cleaned_data["remd_traj1file"]
# task.remd_rest1file=form.cleaned_data["remd_rest1file"]
task.remd_cluter_temp=form.cleaned_data["remd_cluter_temp"]
task.unres_ff=form.cleaned_data["unres_ff"]
+ task.scal_rad = form.cleaned_data["scal_rad"]
+ task.saxs_data = form.cleaned_data["saxs_data"]
+ task.wsaxs = form.cleaned_data["wsaxs"]
+
task.save()
return redirect('addmlist',task_id=task.id)
else:
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':
def refresh_done(request):
user = request.user
tasks = Task.objects.filter(owner=user).order_by('-created_date')
+ alldone = 1
for task in tasks:
refresh_done0(task)
+ if not task.done:
+ alldone=0
proc = subprocess.Popen('/opt/torque/bin/qstat', stdout=subprocess.PIPE)
njob=0
else:
return render(request, "index.html", {
'tasks': tasks ,
- 'variable' : variable
+ 'variable' : variable,
+ 'alldone': alldone
})
elif task.type=='remd':
j=0
- text="Acceptance for replica exchanges\n"
+ text="Acceptance for replica exchanges and number of exchange attempts\n"
for line in f:
if 'ACC' in line:
j+=1
- text=text+line
+ text=text+' '.join(line.split()[2:])+"\n"
if j==task.remd_nrep:
j=1
- text="Acceptance for replica exchanges\n"+line
+ text="Acceptance for replica exchanges and number of exchange attempts\n"+' '.join(line.split()[2:])+"\n"
if 'Total wall' in line:
text=text+line
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:])
+ task.remd_model1='Cluster1 '+' '.join(line.split()[-3:])
elif i==2:
- task.remd_model2=' '.join(line.split()[-6:])
+ task.remd_model2='Cluster2 '+' '.join(line.split()[-3:])
elif i==3:
- task.remd_model3=' '.join(line.split()[-6:])
+ task.remd_model3='Cluster3 '+' '.join(line.split()[-3:])
elif i==4:
- task.remd_model4=' '.join(line.split()[-6:])
+ task.remd_model4='Cluster4 '+' '.join(line.split()[-3:])
elif i==5:
- task.remd_model5=' '.join(line.split()[-6:])
+ task.remd_model5='Cluster5 '+' '.join(line.split()[-3:])
except EnvironmentError:
print 'file_wham_T*pdb open error'
for i in range(1,6):