1 from __future__ import unicode_literals
4 from django.db import models
5 from django.contrib.auth.models import User
6 from django.utils import timezone
9 MIN_CHOICE = (('minimize cart','minimize'),('minimize regular','regularize'),('minimize softreg','soft regularize'),('minimize','minimize internal coordinates'))
10 MD_START= (('extconf','extended chain'),('pdbstart','start from pdb'),('rand_conf','random chain'))
11 MD_LANG = (('langevin','Langevin'),('berendsen','Berendsen'))
12 FF_CHOICE = (('FF2','FF2 = JCC 30 2127 (2009) + JCTC 11 817-831 (2015)'),('opt-wtfsa-2','OPT-WTFSA-2 = JCIM 57 2364-2377 (2017)'))
14 logger = logging.getLogger(__name__)
16 def user_directory_path(instance, filename):
17 # file will be uploaded to MEDIA_ROOT/<jobdirname>/plik.pdb
18 return '{0}/{1}'.format(instance.jobdirname, 'plik.pdb')
20 def user_directory_path2(instance, filename):
21 # file will be uploaded to MEDIA_ROOT/<jobdirname>/plik2.pdb
22 return '{0}/{1}'.format(instance.jobdirname, 'plik2.pdb')
25 # Create your models here.
26 class Task(models.Model):
28 name = models.TextField(max_length=100)
30 ssbond = models.TextField(max_length=2000,default='')
31 # def setssbond(self,x):
32 # self.ssbond = json.dumps(x)
33 # def getssbond(self):
34 # return json.loads(self.ssbond)
36 unres_ff = models.CharField(max_length=20,choices=FF_CHOICE,default='FF2')
37 pdbcode = models.CharField(max_length=6,default='')
39 min_choice = models.CharField(max_length=20,choices=MIN_CHOICE,default='minimize cart')
40 min_overlap = models.BooleanField(default=False)
41 min_searchsc = models.BooleanField(default=False)
42 min_maxmin = models.IntegerField(default=10000)
43 min_maxfun = models.IntegerField(default=15000)
44 min_pdbout = models.BooleanField(default=True)
45 myfile1 = models.FileField(default='',upload_to=user_directory_path)
46 min_unres_pdb = models.BooleanField(default=False)
47 boxx = models.FloatField(default=1000.0)
48 boxy = models.FloatField(default=1000.0)
49 boxz = models.FloatField(default=1000.0)
52 etot = models.FloatField(default=0)
55 results_text = models.TextField(default='')
58 md_seed = models.IntegerField(default=-312345)
59 md_start = models.CharField(max_length=10,choices=MD_START,default='extconf')
60 md_pdbref = models.BooleanField(default=False)
61 md_respa = models.BooleanField(default=True)
62 md_temp = models.FloatField(default=300.0)
63 md_nstep = models.IntegerField(default=200000)
64 md_ntwe = models.IntegerField(default=100)
65 md_ntwx = models.IntegerField(default=100)
66 md_dt = models.FloatField(default=0.20)
67 md_lang = models.CharField(max_length=10,choices=MD_LANG,default='langevin')
68 md_tau = models.FloatField(default=1.0)
69 md_scal_fric = models.FloatField(default=0.02)
70 md_mdpdb = models.BooleanField(default=True)
71 md_seq = models.TextField(max_length=2000,default='')
72 md_2d = models.TextField(max_length=2000,default='')
73 md_total_steps = models.IntegerField(default=200000)
76 remd_nrep = models.IntegerField(default=8)
77 remd_nstex = models.IntegerField(default=1000)
78 remd_multi_t = models.TextField(max_length=1000,default='["270", "280", "290", "300", "310", "320", "330", "345"]')
79 remd_multi_m = models.TextField(max_length=1000,default='["1", "1", "1", "1", "1", "1", "1", "1"]')
80 # remd_traj1file = models.BooleanField(default=True)
81 # remd_rest1file = models.BooleanField(default=True)
82 remd_cluter_temp = models.FloatField(default=280)
83 remd_model1 = models.TextField(default='')
84 remd_model2 = models.TextField(default='')
85 remd_model3 = models.TextField(default='')
86 remd_model4 = models.TextField(default='')
87 remd_model5 = models.TextField(default='')
90 scal_rad = models.FloatField(default=1.0)
91 wsaxs = models.FloatField(default=1000.0)
92 saxs_data = models.TextField(max_length=10000,default='')
95 myfile2 = models.FileField(default='',upload_to=user_directory_path2)
96 pdbcode2 = models.CharField(max_length=6,default='')
99 ready = models.BooleanField(default=False)
100 done = models.BooleanField(default=False)
101 running = models.IntegerField(default=0)
102 type = models.CharField(max_length=100,default='')
103 owner = models.ForeignKey(User,default=1)
104 created_date = models.DateTimeField(default=timezone.now)
105 jobdirname = models.CharField(max_length=100,default='')
106 example = models.CharField(max_length=10,default='')
107 damino = models.BooleanField(default=False)
111 return "%s (done)" % self.name
115 def save(self, *args, **kwargs):
116 logger.warning("Task model change (name=%s)" % self.name)
117 logger.warning("Task model change (owner=%s)" % self.owner)
118 super(Task, self).save(*args, **kwargs)