removed eland_config
[htsworkflow.git] / gaworkflow / frontend / fctracker / models.py
1 from django.db import models
2 from gaworkflow.frontend import settings
3
4 class Primer(models.Model):
5   primer_name = models.CharField(max_length=100, db_index=True)
6   primer_seq = models.CharField(max_length=50, blank=True, null=True)
7   notes = models.TextField(blank=True)
8   def __str__(self):
9     return '%s' % (self.primer_name)
10   class Meta:
11     ordering = ["primer_name"]
12   class Admin:
13       list_display = ('primer_name','primer_seq','notes')
14       fields = (
15         (None, {
16             'fields': (('primer_name'),('primer_seq'),('notes'))
17         }),
18        )
19
20 class Antibody(models.Model):
21   antigene = models.CharField(max_length=500, db_index=True)
22   catalog = models.CharField(max_length=50, unique=True, db_index=True)
23   antibodies = models.CharField(max_length=500, db_index=True)
24   source = models.CharField(max_length=500, blank=True, db_index=True)
25   biology = models.TextField(blank=True)
26   notes = models.TextField(blank=True)
27   def __str__(self):
28     return '%s - %s (%s)' % (self.antigene, self.antibodies, self.catalog)
29   class Meta:
30     verbose_name_plural = "antibodies"
31     ordering = ["antigene"]
32   class Admin:
33       list_display = ('antigene','antibodies','catalog','source','biology','notes')
34       list_filter = ('antibodies','source')
35       fields = (
36         (None, {
37             'fields': (('antigene','antibodies'),('catalog','source'),('biology'),('notes'))
38         }),
39        )
40
41 class Cellline(models.Model):
42   cellline_name = models.CharField(max_length=100, unique=True, db_index=True)
43   notes = models.TextField(blank=True)
44   def __str__(self):
45     return '%s' % (self.cellline_name)
46
47   class Meta:
48     ordering = ["cellline_name"]
49
50   class Admin:
51       list_display = ('cellline_name','notes')
52       fields = (
53         (None, {
54             'fields': (('cellline_name'),('notes'),)
55         }),
56        )
57
58 class Condition(models.Model):
59   condition_name = models.CharField(max_length=2000, unique=True, db_index=True)
60   notes = models.TextField(blank=True)
61   def __str__(self):
62     return '%s' % (self.condition_name)
63
64   class Meta:
65     ordering = ["condition_name"]
66
67   class Admin:
68       list_display = ('condition_name','notes')
69       fields = (
70         (None, {
71             'fields': (('condition_name'),('notes'),)
72         }),
73        )
74
75 class Species(models.Model):
76   scientific_name = models.CharField(max_length=256, unique=False, db_index=True, core=True)
77   common_name = models.CharField(max_length=256, blank=True)
78   use_genome_build = models.CharField(max_length=100, blank=False, null=False)
79
80   def __str__(self):
81     return '%s (%s)|%s' % (self.scientific_name, self.common_name, self.use_genome_build)
82   
83   class Meta:
84     verbose_name_plural = "species"
85     ordering = ["scientific_name"]
86   
87   class Admin:
88       fields = (
89         (None, {
90             'fields': (('scientific_name', 'common_name'), ('use_genome_build'))
91         }),
92       )
93
94 class Library(models.Model):
95   library_id = models.CharField(max_length=30, unique=True, db_index=True, core=True)
96   library_name = models.CharField(max_length=100, unique=True, core=True)
97   library_species = models.ForeignKey(Species, core=True)
98   cell_line = models.ForeignKey(Cellline,core=True)
99   condition = models.ForeignKey(Condition,core=True)
100   antibody = models.ForeignKey(Antibody,blank=True,null=True,core=True)
101   
102   EXPERIMENT_TYPES = (
103       ('INPUT_RXLCh','INPUT_RXLCh'),
104       ('ChIP-seq', 'ChIP-seq'),
105       ('Sheared', 'Sheared'),
106       ('RNA-seq', 'RNA-seq'),
107       ('Methyl-seq', 'Methyl-seq'),
108       ('DIP-seq', 'DIP-seq'),
109     ) 
110   experiment_type = models.CharField(max_length=50, choices=EXPERIMENT_TYPES, default='ChIP-seq')
111
112   creation_date = models.DateField(blank=True, null=True)
113   made_for = models.CharField(max_length=50, blank=True,verbose_name = 'ChIP/DNA/RNA Made By')
114   made_by = models.CharField(max_length=50, blank=True,verbose_name = 'Library Made By')
115   
116   PROTOCOL_END_POINTS = (
117       ('Completed','Completed'),
118       ('?', 'Unknown'),
119       ('Sample', 'Raw sample'),
120       ('Progress', 'In progress'),
121       ('1A', 'Ligation, then gel'),
122       ('PCR', 'Ligation, then PCR'),
123       ('1Ab', 'Ligation, PCR, then gel'),
124       ('1Aa', 'Ligation, gel, then PCR'),
125       ('2A', 'Ligation, PCR, gel, PCR'),
126     )
127   stopping_point = models.CharField(max_length=50, choices=PROTOCOL_END_POINTS, default='Completed')
128   amplified_from_sample = models.ForeignKey('self', blank=True, null=True)
129   
130   undiluted_concentration = models.DecimalField("Template concentr. (ng/ul)",max_digits=5, decimal_places=2, blank=True, null=True)
131   ten_nM_dilution = models.BooleanField()
132   successful_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=True, null=True)
133   avg_lib_size = models.IntegerField(default=225, blank=True, null=True)
134   notes = models.TextField(blank=True)
135   
136   def __str__(self):
137     return '%s: %s' % (self.library_id, self.library_name)
138   
139   class Meta:
140     verbose_name_plural = "libraries"
141     ordering = ["-library_id"]
142   
143   class Admin:
144     date_hierarchy = "creation_date"
145     save_as = True
146     save_on_top = True
147     search_fields = ['library_name', 'library_id','made_by','made_for','antibody__antigene','antibody__catalog','antibody__antibodies','antibody__source','cell_line__cellline_name','library_species__scientific_name','library_species__common_name','library_species__use_genome_build']
148     list_display = ('library_id', 'library_name','experiment_type','cell_line','made_by','creation_date')
149     list_display_links = ('library_id', 'library_name')
150     list_filter = ('experiment_type','library_species','made_for', 'made_by')
151     fields = (
152         (None, {
153             'fields': (('library_id', 'library_name'),('library_species'),('experiment_type'),('cell_line','condition','antibody'),)
154         }),
155         ('Creation Information:', {
156             'fields' : (('made_for', 'made_by', 'creation_date'), ('stopping_point', 'amplified_from_sample'), ('avg_lib_size','undiluted_concentration', 'ten_nM_dilution', 'successful_pM'), 'notes',)
157         }),
158         )