X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;ds=sidebyside;f=django_simple%2Ftodo%2Fforms.py;h=50dab802cf7f9a64a3817d9383276f6ef7794853;hb=7a90931ccf71771de02cc838139fa49e59014534;hp=8bf9db195ae8ed4ed572fffe35c2a86331e618dc;hpb=44795ccd472cf97e058eff3e635f4a8c6b3ba58f;p=django_unres.git diff --git a/django_simple/todo/forms.py b/django_simple/todo/forms.py index 8bf9db1..50dab80 100644 --- a/django_simple/todo/forms.py +++ b/django_simple/todo/forms.py @@ -4,6 +4,7 @@ from .models import MIN_CHOICE from .models import MD_START from .models import MD_LANG from .models import FF_CHOICE +from django.utils.safestring import mark_safe import json import urllib @@ -108,11 +109,11 @@ class MultiExampleField(forms.fields.MultiValueField): 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, @@ -141,7 +142,7 @@ class TaskForm_min(forms.Form): 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') @@ -190,7 +191,7 @@ class TaskForm_min_a(forms.Form): 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') @@ -208,7 +209,7 @@ class TaskForm_md(forms.Form): md_temp = forms.FloatField(label='temperature',initial=300, help_text='bath temperature') md_nstep = forms.IntegerField(label='NSTEP',initial=200000, - help_text='total number of steps') + help_text='total number of steps',max_value=10000000) md_seed = forms.IntegerField(label='SEED',initial=-39912345, help_text='seed for random number generator') @@ -246,7 +247,7 @@ class TaskForm_md(forms.Form): 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') @@ -271,14 +272,14 @@ class TaskForm_md_a(forms.Form): md_temp = forms.FloatField(label='temperature',initial=300, help_text='bath temperature') md_nstep = forms.IntegerField(label='NSTEP',initial=200000, - help_text='total number of steps') + help_text='total number of steps',max_value=10000000) md_seed = forms.IntegerField(label='SEED',initial=-39912345, help_text='seed for random number generator') md_ntwe = forms.IntegerField(label='NTWE',initial=1000, help_text='write statfile every ntwe steps') md_ntwx = forms.IntegerField(label='NTWX',initial=1000, - help_text='write trajectory every ntwe steps') + help_text='write trajectory every ntwe steps',min_value=100) md_dt = forms.FloatField(label='DT',initial=0.2, help_text='time step [mtu=48.9 fs]') md_lang = forms.ChoiceField(choices=MD_LANG,label='thermostat') @@ -335,7 +336,7 @@ class TaskForm_md_a(forms.Form): 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') @@ -351,7 +352,7 @@ class TaskForm_remd(forms.Form): label='or PDB code (:chain)') md_pdbref = forms.BooleanField(required=False,label='PDB reference structure') md_nstep = forms.IntegerField(label='NSTEP',initial=200000, - help_text='total number of steps') + help_text='total number of steps',max_value=10000000) md_seed = forms.IntegerField(label='SEED',initial=-39912345, help_text='seed for random number generator') @@ -388,7 +389,7 @@ class TaskForm_remd(forms.Form): 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') @@ -410,7 +411,7 @@ class TaskForm_remd_a(forms.Form): label='or PDB code (:chain)') md_pdbref = forms.BooleanField(required=False,label='PDB reference structure') md_nstep = forms.IntegerField(label='NSTEP',initial=200000, - help_text='total number of steps') + help_text='total number of steps',max_value=10000000) md_seed = forms.IntegerField(label='SEED',initial=-39912345, help_text='seed for random number generator') md_ntwe = forms.IntegerField(label='NTWE',initial=1000, @@ -426,10 +427,10 @@ class TaskForm_remd_a(forms.Form): help_text='preminim maximum number of function evaluations
'+ 'used for start from pdb or random start') remd_nrep = forms.IntegerField(label='NREP',initial=8, - help_text='number of replicas') + help_text='number of temperatures') remd_nstex = forms.IntegerField(label='NSTEX',initial=1000, help_text='exchange and write trajectory every nstex steps') - md_ntwx = forms.IntegerField(label='NTWX',initial=1000, + md_ntwx = forms.IntegerField(label='NTWX',initial=1000,min_value=100, help_text='write trajectory every ntwx steps') remd_cluter_temp = forms.FloatField(label='TEMPER', help_text='temperature for cluster analysis',initial=280) @@ -495,9 +496,171 @@ class TaskForm_remd_a(forms.Form): 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)') + + + md_seq = forms.CharField(label=mark_safe('Sequence of chain2
for dock peptide'), + help_text='aminoacid sequence using one letter code
'+ + 'field is ignored when uploading PDB file2', + required=False, + widget=forms.Textarea(attrs={'cols': 70, 'rows': 2})) + + + 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', max_value=10000000) + md_seed = forms.IntegerField(label='SEED',initial=-39912345, + help_text='seed for random number generator') + dock_peptide = forms.BooleanField(required=False,initial=False, + label='dock peptide',help_text='no constraints on chain2') + + 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") + md_seq = cleaned_data.get("md_seq") + + + if not (file1 or pdbid): + msg = 'no PDB file or code for chain1' + self.add_error('file1', msg) + + if not (file2 or pdbid2 or md_seq): + msg = 'no PDB file or code or sequence 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_dock_a(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)') + + md_seq = forms.CharField(label=mark_safe('Sequence of chain2
for dock peptide'), + help_text='aminoacid sequence using one letter code
'+ + 'field is ignored when uploading PDB file2', + required=False, + widget=forms.Textarea(attrs={'cols': 70, 'rows': 2})) + + + 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', max_value=10000000) + md_seed = forms.IntegerField(label='SEED',initial=-39912345, + help_text='seed for random number generator') + dock_peptide = forms.BooleanField(required=False,initial=False, + label='dock peptide',help_text='no constraints on 2nd chain') + + + unres_ff = forms.ChoiceField(choices=FF_CHOICE,widget=forms.RadioSelect, + label='Force Field',initial='FF2') + + md_ntwe = forms.IntegerField(label='NTWE',initial=1000, + help_text='write statfile every ntwe steps') + md_dt = forms.FloatField(label='DT',initial=0.2, + help_text='time step [mtu = 48.9 fs]') + md_lang = forms.ChoiceField(choices=MD_LANG,label='thermostat') + md_tau = forms.FloatField(label='tau_bath',initial=1.0, + 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
'+ + 'used for start from pdb or random start') + remd_nrep = forms.IntegerField(label='NREP',initial=8, + help_text='number of temperatures') + remd_nstex = forms.IntegerField(label='NSTEX',initial=1000, + help_text='exchange and write trajectory every nstex steps') + md_ntwx = forms.IntegerField(label='NTWX',initial=1000,min_value=100, + help_text='write trajectory every ntwx steps') + remd_cluter_temp = forms.FloatField(label='TEMPER', + help_text='temperature for cluster analysis',initial=280) + + + def clean(self): + cleaned_data = super(TaskForm_dock_a, self).clean() + + file1 = cleaned_data.get("file1") + pdbid = cleaned_data.get("pdbid") + file2 = cleaned_data.get("file2") + pdbid2 = cleaned_data.get("pdbid2") + md_seq = cleaned_data.get("md_seq") + + if not (file1 or pdbid): + msg = 'no PDB file or code for chain1' + self.add_error('file1', msg) + + if not (file2 or pdbid2 or md_seq): + msg = 'no PDB file or code or sequence 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):