secondary structure restraints for md and remd
[django_unres.git] / django_simple / todo / views.py
index 6a244b0..0387f29 100644 (file)
@@ -29,12 +29,45 @@ res_codes = [
 
 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)    
@@ -311,8 +344,11 @@ def add_md_a(request,task_id):
              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]+" "
 
@@ -488,8 +524,11 @@ def add_remd_a(request,task_id):
              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]+" "