1 from django.db import models
2 from gaworkflow.frontend import settings
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)
9 return '%s' % (self.primer_name)
11 ordering = ["primer_name"]
13 list_display = ('primer_name','primer_seq','notes')
16 'fields': (('primer_name'),('primer_seq'),('notes'))
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)
28 return '%s - %s (%s)' % (self.antigene, self.antibodies, self.catalog)
30 verbose_name_plural = "antibodies"
31 ordering = ["antigene"]
33 list_display = ('antigene','antibodies','catalog','source','biology','notes')
34 list_filter = ('antibodies','source')
37 'fields': (('antigene','antibodies'),('catalog','source'),('biology'),('notes'))
41 class Cellline(models.Model):
42 cellline_name = models.CharField(max_length=100, unique=True, db_index=True)
43 notes = models.TextField(blank=True)
45 return '%s' % (self.cellline_name)
48 ordering = ["cellline_name"]
51 list_display = ('cellline_name','notes')
54 'fields': (('cellline_name'),('notes'),)
58 class Condition(models.Model):
59 condition_name = models.CharField(max_length=2000, unique=True, db_index=True)
60 notes = models.TextField(blank=True)
62 return '%s' % (self.condition_name)
65 ordering = ["condition_name"]
68 list_display = ('condition_name','notes')
71 'fields': (('condition_name'),('notes'),)
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)
81 return '%s (%s)|%s' % (self.scientific_name, self.common_name, self.use_genome_build)
84 verbose_name_plural = "species"
85 ordering = ["scientific_name"]
90 'fields': (('scientific_name', 'common_name'), ('use_genome_build'))
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)
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'),
110 experiment_type = models.CharField(max_length=50, choices=EXPERIMENT_TYPES, default='ChIP-seq')
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')
116 PROTOCOL_END_POINTS = (
117 ('Completed','Completed'),
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'),
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)
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)
137 return '%s: %s' % (self.library_id, self.library_name)
140 verbose_name_plural = "libraries"
141 ordering = ["-library_id"]
144 date_hierarchy = "creation_date"
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')
153 'fields': (('library_id', 'library_name'),('library_species'),('experiment_type'),('cell_line','condition','antibody'),)
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',)