1 from django.db import models
2 from gaworkflow.frontend import settings
4 # Create your models here.
6 class Species(models.Model):
8 scientific_name = models.CharField(max_length=256, unique=False, db_index=True, core=True)
9 common_name = models.CharField(max_length=256, blank=True)
10 use_genome_build = models.CharField(max_length=100, blank=False, null=False)
13 return '%s (%s)|%s' % (self.scientific_name, self.common_name, self.use_genome_build)
16 verbose_name_plural = "species"
17 ordering = ["scientific_name"]
22 'fields': (('scientific_name', 'common_name'), ('use_genome_build'))
26 class Library(models.Model):
28 library_id = models.IntegerField(primary_key=True, db_index=True, core=True)
29 library_name = models.CharField(max_length=100, unique=True, core=True)
30 library_species = models.ForeignKey(Species, core=True)
31 #use_genome_build = models.CharField(max_length=100, blank=False, null=False)
32 RNAseq = models.BooleanField()
34 made_by = models.CharField(max_length=50, blank=True, default="Lorian")
35 creation_date = models.DateField(blank=True, null=True)
36 made_for = models.CharField(max_length=50, blank=True)
38 PROTOCOL_END_POINTS = (
40 ('Sample', 'Raw sample'),
41 ('Progress', 'In progress'),
42 ('Gel', 'Unpurified gel'),
43 ('1A', 'Purified gel'),
44 ('PCR', 'Ligation, then PCR'),
45 ('1Ab', 'Ligation, PCR, then gel'),
46 ('1Aa', 'Ligation, gel, then PCR'),
47 ('2A', 'Ligation, PCR, gel, PCR'),
48 ('Done', 'Completed'),
50 stopping_point = models.CharField(max_length=50, choices=PROTOCOL_END_POINTS)
51 amplified_from_sample = models.ForeignKey('self', blank=True, null=True)
53 undiluted_concentration = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True)
54 ten_nM_dilution = models.BooleanField()
55 successful_pM = models.IntegerField(blank=True, null=True)
57 notes = models.TextField(blank=True)
60 return '#%s: %s' % (self.library_id, self.library_name)
63 verbose_name_plural = "libraries"
64 ordering = ["-library_id"]
67 date_hierarchy = "creation_date"
70 search_fields = ['library_name', 'library_id']
71 list_display = ('library_id', 'library_name', 'made_for', 'library_species', 'creation_date', 'stopping_point')
72 list_display_links = ('library_id', 'library_name')
73 list_filter = ('stopping_point', 'library_species', 'made_for', 'made_by')
76 'fields': (('library_id', 'library_name'), ('library_species', 'RNAseq'),)
78 ('Creation Information:', {
79 'fields' : (('made_for', 'made_by', 'creation_date'), ('stopping_point', 'amplified_from_sample'), ('undiluted_concentration'), 'notes',)
81 ('Run Information:', {
82 'fields' : (('ten_nM_dilution','successful_pM'),)
86 class FlowCell(models.Model):
88 flowcell_id = models.CharField(max_length=20, unique=True, db_index=True, core=True)
89 run_date = models.DateTimeField(core=True)
90 advanced_run = models.BooleanField(default=False)
91 read_length = models.IntegerField(default=32)
93 lane_1_library = models.ForeignKey(Library, related_name="lane_1_library")
94 lane_2_library = models.ForeignKey(Library, related_name="lane_2_library")
95 lane_3_library = models.ForeignKey(Library, related_name="lane_3_library")
96 lane_4_library = models.ForeignKey(Library, related_name="lane_4_library")
97 lane_5_library = models.ForeignKey(Library, related_name="lane_5_library")
98 lane_6_library = models.ForeignKey(Library, related_name="lane_6_library")
99 lane_7_library = models.ForeignKey(Library, related_name="lane_7_library")
100 lane_8_library = models.ForeignKey(Library, related_name="lane_8_library")
102 lane_1_pM = models.IntegerField(default=4)
103 lane_2_pM = models.IntegerField(default=4)
104 lane_3_pM = models.IntegerField(default=4)
105 lane_4_pM = models.IntegerField(default=4)
106 lane_5_pM = models.IntegerField(default=4)
107 lane_6_pM = models.IntegerField(default=4)
108 lane_7_pM = models.IntegerField(default=4)
109 lane_8_pM = models.IntegerField(default=4)
111 lane_1_cluster_estimate = models.IntegerField(blank=True, null=True)
112 lane_2_cluster_estimate = models.IntegerField(blank=True, null=True)
113 lane_3_cluster_estimate = models.IntegerField(blank=True, null=True)
114 lane_4_cluster_estimate = models.IntegerField(blank=True, null=True)
115 lane_5_cluster_estimate = models.IntegerField(blank=True, null=True)
116 lane_6_cluster_estimate = models.IntegerField(blank=True, null=True)
117 lane_7_cluster_estimate = models.IntegerField(blank=True, null=True)
118 lane_8_cluster_estimate = models.IntegerField(blank=True, null=True)
120 notes = models.TextField(blank=True)
123 return '%s (%s)' % (self.flowcell_id, self.run_date)
126 ordering = ["-run_date"]
129 date_hierarchy = "run_date"
131 search_fields = ['flowcell_id', 'lane_1_library__library_id', 'lane_1_library__library_name', 'lane_2_library__library_id', 'lane_2_library__library_name', 'lane_3_library__library_id', 'lane_3_library__library_name', 'lane_4_library__library_id', 'lane_4_library__library_name', 'lane_5_library__library_id', 'lane_5_library__library_name', 'lane_6_library__library_id', 'lane_6_library__library_name', 'lane_7_library__library_id', 'lane_7_library__library_name', 'lane_8_library__library_id', 'lane_8_library__library_name']
132 list_display = ('run_date', 'flowcell_id', 'lane_1_library', 'lane_2_library', 'lane_3_library', 'lane_4_library', 'lane_5_library', 'lane_6_library', 'lane_7_library', 'lane_8_library')
133 list_display_links = ('run_date', 'flowcell_id', 'lane_1_library', 'lane_2_library', 'lane_3_library', 'lane_4_library', 'lane_5_library', 'lane_6_library', 'lane_7_library', 'lane_8_library')
136 'fields': ('run_date', 'flowcell_id', ('read_length', 'advanced_run'),)
139 'fields' : (('lane_1_library', 'lane_1_pM', 'lane_1_cluster_estimate'), ('lane_2_library', 'lane_2_pM', 'lane_2_cluster_estimate'), ('lane_3_library', 'lane_3_pM', 'lane_3_cluster_estimate'), ('lane_4_library', 'lane_4_pM', 'lane_4_cluster_estimate'), ('lane_5_library', 'lane_5_pM', 'lane_5_cluster_estimate'), ('lane_6_library', 'lane_6_pM', 'lane_6_cluster_estimate'), ('lane_7_library', 'lane_7_pM', 'lane_7_cluster_estimate'), ('lane_8_library', 'lane_8_pM', 'lane_8_cluster_estimate'),)
142 'fields' : ('notes',)
146 class ElandResult(models.Model):
150 flow_cell = models.ForeignKey(FlowCell)
151 config_file = models.FileField(upload_to=settings.UPLOADTO_CONFIG_FILE)
152 eland_result_pack = models.FileField(upload_to=settings.UPLOADTO_ELAND_RESULT_PACKS)
153 bed_file_pack = models.FileField(upload_to=settings.UPLOADTO_BED_PACKS)
155 notes = models.TextField(blank=True)