import datetime
import os
import subprocess
+import json
res_codes = [
# 20 canonical amino acids
def from_pdb(file):
sequence = []
ssbond = []
+ ssbond_ch = []
+ ires = []
+ chain_start = {}
+ chain_end = {}
+ unres_shift = {}
+ chain=[]
+ ichain=0
+ newchain = True
+
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])
- sequence.append(aa)
+ i = int(line[22:26])
+ if newchain or i!=ires[-1]:
+ sequence.append(aa)
+ ires.append(i)
+ if newchain:
+ chain_start[chain[ichain]]=i
+ newchain = False
if line[0:3] == 'TER':
sequence.append('XX')
+ chain_end[chain[ichain]]=i
+ ichain=ichain+1
+ newchain = True
if line[0:6] == 'SSBOND':
b=[]
b.append(int(line[17:21]))
b.append(int(line[31:35]))
ssbond.append(b)
-
+ c = []
+ c.append((line[15:16]))
+ c.append((line[29:30]))
+ ssbond_ch.append(c)
if line[0:3] == 'END':
break
while sequence[-1] == 'XX':
if sequence[-1] != 'G':
sequence.append('X')
seq=''.join(sequence)
- return seq,ssbond
+# 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:
+ 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)]
+
+ return seq,json.dumps(ssbond)
@login_required
task.min_pdbout=form.cleaned_data["min_pdbout"]
task.myfile1=form.cleaned_data["file1"]
task.min_unres_pdb=form.cleaned_data["min_unres_pdb"]
+ task.unres_ff=form.cleaned_data["unres_ff"]
seq,task.ssbond=from_pdb(task.myfile1)
task.md_seq=""
task.md_tau=form.cleaned_data["md_tau"]
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.ready=True
basename = str(task.owner)
task.md_start=form.cleaned_data["md_start"]
task.myfile1=form.cleaned_data["file1"]
task.md_pdbref=form.cleaned_data["md_pdbref"]
+ task.md_ntwx=task.remd_nstex
task.md_seq=""
if task.md_start == "pdbstart" or task.md_pdbref:
task.md_scal_fric=form.cleaned_data["md_scal_fric"]
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.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"]
basename = str(task.owner)
suffix = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
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 'TM-score =' in line:
+ text=text+' TMscore='+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:
if i>6:
break
if i==1:
- task.remd_model1=task.remd_model1+'Cluster1 probability= '+line1.split()[2]
+ 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]
+ 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]
+ 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]
+ 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.remd_model5=task.remd_model5+' Cluster5 probability= '+line1.split()[2]