295a84ac6877ce45e97bc5512af2a42f32e2b5e8
[django_unres.git] / django_simple / todo / models.py
1 from __future__ import unicode_literals
2
3 import logging
4 from django.db import models
5 from django.contrib.auth.models import User
6 from django.utils import timezone
7 import json
8
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
13 logger = logging.getLogger(__name__)
14
15 def user_directory_path(instance, filename):
16     # file will be uploaded to MEDIA_ROOT/<jobdirname>/plik.pdb
17     return '{0}/{1}'.format(instance.jobdirname, 'plik.pdb')
18
19
20 # Create your models here.
21 class Task(models.Model):
22     
23     name = models.TextField(max_length=100)
24     
25     ssbond = models.TextField(max_length=2000,default='')
26     def setssbond(self,x):
27        self.ssbond = json.dumps(x)
28     def getssbond(self):
29        return json.loads(self.ssbond)
30
31 # minimization
32     min_choice = models.CharField(max_length=20,choices=MIN_CHOICE,default='minimize cart')
33     min_overlap = models.BooleanField(default=False)
34     min_searchsc = models.BooleanField(default=False)
35     min_maxmin = models.IntegerField(default=10000)
36     min_maxfun = models.IntegerField(default=15000)
37     min_pdbout = models.BooleanField(default=True)
38     myfile1 = models.FileField(default='',upload_to=user_directory_path)    
39     min_unres_pdb = models.BooleanField(default=False)
40
41 # minimization output
42     etot = models.FloatField(default=0)
43
44 # output
45     results_text = models.TextField(default='')
46
47 #md
48     md_seed =  models.IntegerField(default=-312345)
49     md_start = models.CharField(max_length=10,choices=MD_START,default='extconf')
50     md_pdbref = models.BooleanField(default=False)
51     md_respa = models.BooleanField(default=True)
52     md_temp = models.FloatField(default=300.0)
53     md_nstep = models.IntegerField(default=200000)
54     md_ntwe = models.IntegerField(default=100)
55     md_ntwx = models.IntegerField(default=100)
56     md_dt = models.FloatField(default=0.20)
57     md_lang = models.CharField(max_length=10,choices=MD_LANG,default='langevin')
58     md_tau = models.FloatField(default=1.0)
59     md_scal_fric = models.FloatField(default=0.02)
60     md_mdpdb = models.BooleanField(default=False)
61     md_seq = models.TextField(max_length=2000,default='')
62     
63 #remd
64     remd_nrep = models.IntegerField(default=8)
65     remd_nstex = models.IntegerField(default=1000)
66     remd_multi_t = models.TextField(max_length=1000,default='["270", "280", "290", "300", "310", "320", "330", "345"]')    
67     remd_multi_m = models.TextField(max_length=1000,default='["1", "1", "1", "1", "1", "1", "1", "1"]')
68 #    remd_traj1file = models.BooleanField(default=True)
69 #    remd_rest1file = models.BooleanField(default=True)
70     remd_cluter_temp = models.FloatField(default=280) 
71     remd_model1 = models.TextField(default='')
72     remd_model2 = models.TextField(default='')
73     remd_model3 = models.TextField(default='')
74     remd_model4 = models.TextField(default='')
75     remd_model5 = models.TextField(default='')
76     
77 # system    
78     ready = models.BooleanField(default=False)
79     done = models.BooleanField(default=False)
80     running = models.IntegerField(default=0)
81     type = models.CharField(max_length=100,default='')
82     owner = models.ForeignKey(User,default=1)
83     created_date = models.DateTimeField(default=timezone.now)
84     jobdirname = models.CharField(max_length=100,default='')
85     
86     def __str__(self):
87         if self.done:
88             return "%s (done)" % self.name
89         else:
90             return self.name
91
92     def save(self, *args, **kwargs):
93         logger.warning("Task model change (name=%s)" % self.name)
94         logger.warning("Task model change (owner=%s)" % self.owner)        
95         super(Task, self).save(*args, **kwargs)