import json
import urllib
+def pdb_missing_res(file):
+ msg=''
+ newchain = True
+ ires=[]
+ for line in file:
+ if line[0:6] == 'ATOM ' and line[13:15] == 'CA':
+ i = int(line[22:26])
+ if ires and i==ires[-1]:
+ continue
+ if newchain or i==ires[-1]+1:
+ ires.append(i)
+ newchain = False
+ else:
+ msg = 'chain breaks between residues '+\
+ str(ires[-1])+' and '+str(i)+\
+ ', server cannot add missing residues to PDB file'
+ break
+ if line[0:3] == 'TER':
+ newchain = True
+ if line[0:3] == 'END':
+ break
+
+ return(msg)
class MultiWidgetBasic(forms.MultiWidget):
def __init__(self, count, attrs=None):
if test.code != 200:
msg = 'wrong pdb code'
self.add_error('pdbid', msg)
+ else:
+ msg=pdb_missing_res(test)
+ if msg != '':
+ self.add_error('pdbid',msg)
test.close()
+
+ if file1:
+ msg=pdb_missing_res(file1)
+ if msg != '':
+ self.add_error('file1',msg)
+
class TaskForm_min_a(forms.Form):
name = forms.CharField(max_length=20)
if test.code != 200:
msg = 'wrong pdb code'
self.add_error('pdbid', msg)
+ else:
+ msg=pdb_missing_res(test)
+ if msg != '':
+ self.add_error('pdbid',msg)
test.close()
+
+ if file1:
+ msg=pdb_missing_res(file1)
+ if msg != '':
+ self.add_error('file1',msg)
class TaskForm_md(forms.Form):
if test.code != 200:
msg = 'wrong pdb code'
self.add_error('pdbid', msg)
+ else:
+ msg=pdb_missing_res(test)
+ if msg != '':
+ self.add_error('pdbid',msg)
test.close()
+
+ if file1:
+ msg=pdb_missing_res(file1)
+ if msg != '':
+ self.add_error('file1',msg)
class TaskForm_md_a(forms.Form):
if test.code != 200:
msg = 'wrong pdb code'
self.add_error('pdbid', msg)
+ else:
+ msg=pdb_missing_res(test)
+ if msg != '':
+ self.add_error('pdbid',msg)
test.close()
+
+ if file1:
+ msg=pdb_missing_res(file1)
+ if msg != '':
+ self.add_error('file1',msg)
class TaskForm_remd(forms.Form):
if test.code != 200:
msg = 'wrong pdb code'
self.add_error('pdbid', msg)
+ else:
+ msg=pdb_missing_res(test)
+ if msg != '':
+ self.add_error('pdbid',msg)
test.close()
+
+ if file1:
+ msg=pdb_missing_res(file1)
+ if msg != '':
+ self.add_error('file1',msg)
class TaskForm_remd_a(forms.Form):
if test.code != 200:
msg = 'wrong pdb code'
self.add_error('pdbid', msg)
+ else:
+ msg=pdb_missing_res(test)
+ if msg != '':
+ self.add_error('pdbid',msg)
test.close()
+
+ if file1:
+ msg=pdb_missing_res(file1)
+ if msg != '':
+ self.add_error('file1',msg)