three_to_one = dict(res_codes)
+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' and sequence[0] != 'g':
+ if sequence[0] != 'G' and sequence[0] != 'g' and sequence[0] != 'X':
sequence='X'+sequence
- if sequence[-1] != 'G' and sequence[-1] != 'g':
+ if sequence[-1] != 'G' and sequence[-1] != 'g' and sequence[-1] != 'X':
sequence=sequence+'X'
- set ='CDSQKIPTFNGHLRWAVEYMXcdsqkiptfnghlrwaveym'
+ 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
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':
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)]
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_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]+" "