aa_3letter = [
'DPR','DLY','DAR','DHI','DAS','DGL','DSG','DGN','DSN','DTH',
- 'DYY','DAL','DTY','DTR','DVA','DLE','DIL','DPN','MED','DCY',
+ 'DAL','DTY','DTR','DVA','DLE','DIL','DPN','MED','DCY',
'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR',
- 'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO']
+ 'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO',
+ 'SME','AIB','ABU','DBZ']
def pdb_code_chain(pdbid):
class TaskForm(forms.Form):
- name = forms.CharField(max_length=20)
+ name = forms.CharField(max_length=40,widget=forms.TextInput(attrs={'size':40, 'maxlength':40}))
class TaskForm_min(forms.Form):
- name = forms.CharField(max_length=20)
+ name = forms.CharField(max_length=40,widget=forms.TextInput(attrs={'size':40, 'maxlength':40}))
file1 = forms.FileField(label='Upload a PDB file',required=False,
help_text='continuous (without breaks) protein chains,use TER to divide chains')
pdbid = forms.CharField(min_length=4,max_length=6,required=False,
class TaskForm_min_a(forms.Form):
- name = forms.CharField(max_length=20)
+ name = forms.CharField(max_length=40,widget=forms.TextInput(attrs={'size':40, 'maxlength':40}))
unres_ff = forms.ChoiceField(choices=FF_CHOICE,widget=forms.RadioSelect,
label='Force Field',initial='FF2')
class TaskForm_md(forms.Form):
- name = forms.CharField(max_length=20)
+ name = forms.CharField(max_length=40,widget=forms.TextInput(attrs={'size':40, 'maxlength':40}))
md_start = forms.ChoiceField(choices=MD_START,widget=forms.RadioSelect,
label='starting structure',initial='extconf')
class TaskForm_md_a(forms.Form):
- name = forms.CharField(max_length=20)
+ name = forms.CharField(max_length=40,widget=forms.TextInput(attrs={'size':40, 'maxlength':40}))
unres_ff = forms.ChoiceField(choices=FF_CHOICE,widget=forms.RadioSelect,
label='Force Field',initial='FF2')
required=False,
widget=forms.Textarea(attrs={'cols': 70, 'rows': 2}))
md_2d = forms.CharField(label='Secondary structure restraints',
- help_text='single letter code: H - helix, E - extended/beta, C or - no restraints',
+ help_text='single letter code: H helix, E extended/beta, C or - no restraints',
required=False,
widget=forms.Textarea(attrs={'cols': 70, 'rows': 2}))
self.add_error('md_2d',msg)
class TaskForm_remd(forms.Form):
- name = forms.CharField(max_length=20)
+ name = forms.CharField(max_length=40,widget=forms.TextInput(attrs={'size':40, 'maxlength':40}))
md_start = forms.ChoiceField(choices=MD_START,widget=forms.RadioSelect,
label='starting structure',initial='extconf')
class TaskForm_remd_a(forms.Form):
- name = forms.CharField(max_length=20)
+ name = forms.CharField(max_length=40,widget=forms.TextInput(attrs={'size':40, 'maxlength':40}))
unres_ff = forms.ChoiceField(choices=FF_CHOICE,widget=forms.RadioSelect,
label='Force Field',initial='FF2')
required=False,
widget=forms.Textarea(attrs={'cols': 70, 'rows': 2}))
md_2d = forms.CharField(label='Secondary structure restraints',
- help_text='single letter code: H - helix, E - extended/beta, C or - no restraints',
+ help_text='single letter code: H helix, E extended/beta, C or - no restraints',
required=False,
widget=forms.Textarea(attrs={'cols': 70, 'rows': 2}))
file1 = forms.FileField(label='Upload a PDB file',required=False,
help_text='coupling to the thermal bath (Berendsen)')
md_scal_fric = forms.FloatField(label='scal_froc',initial=0.02,
help_text='scaling of the friction coefficients (Langevin)')
+ min_maxfun = forms.IntegerField(label='MAXFUN',initial=5000,
+ help_text='preminim maximum number of function evaluations<br>'+
+ 'used for start from pdb or random start')
remd_nrep = forms.IntegerField(label='NREP',initial=8,
help_text='number of replicas')
remd_nstex = forms.IntegerField(label='NSTEX',initial=1000,
self.add_error('md_2d',msg)
+class TaskForm_dock(forms.Form):
+ name = forms.CharField(max_length=40,widget=forms.TextInput(attrs={'size':40, 'maxlength':40}))
+
+ file1 = forms.FileField(label='Upload a PDB file1',required=False,
+ help_text='starting structure for chain1')
+ pdbid = forms.CharField(min_length=4,max_length=6,required=False,
+ widget=forms.TextInput(attrs={'size':6, 'maxlength':6, 'title':'PDB code or PDB code:chain id'}),
+ label='or PDB code (:chain)')
+
+
+ file2 = forms.FileField(label='Upload a PDB file2',required=False,
+ help_text='starting structure for chain2')
+ pdbid2 = forms.CharField(min_length=4,max_length=6,required=False,
+ widget=forms.TextInput(attrs={'size':6, 'maxlength':6, 'title':'PDB code or PDB code:chain id'}),
+ label='or PDB code (:chain)')
+
+
+ md_nstep = forms.IntegerField(label='NSTEP',initial=200000,
+ help_text='total number of steps')
+ md_seed = forms.IntegerField(label='SEED',initial=-39912345,
+ help_text='seed for random number generator')
+
+ def clean(self):
+ cleaned_data = super(TaskForm_dock, self).clean()
+
+ file1 = cleaned_data.get("file1")
+ pdbid = cleaned_data.get("pdbid")
+ file2 = cleaned_data.get("file2")
+ pdbid2 = cleaned_data.get("pdbid2")
+
+
+ if not (file1 or pdbid):
+ msg = 'no PDB file or code for chain1'
+ self.add_error('file1', msg)
+
+ if not (file2 or pdbid2):
+ msg = 'no PDB file or code for chain2'
+ self.add_error('file2', msg)
+
+ if pdbid:
+ msg=pdb_code_chain(pdbid)
+ if msg != '':
+ self.add_error('pdbid',msg)
+
+ if file1:
+ msg=pdb_missing_res_chain(file1,'')
+ if msg != '':
+ self.add_error('file1',msg)
+
+ if pdbid2:
+ msg=pdb_code_chain(pdbid2)
+ if msg != '':
+ self.add_error('pdbid2',msg)
+
+ if file2:
+ msg=pdb_missing_res_chain(file2,'')
+ if msg != '':
+ self.add_error('file2',msg)
+
class TaskForm_list(forms.Form):
- name = forms.CharField(max_length=20,disabled=True,required=False)
+ name = forms.CharField(max_length=40,disabled=True,required=False)
nrep = forms.IntegerField(disabled=True,required=False,label='NREP')
def __init__(self, count, *args, **kwargs):