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.CharField(max_length=25, 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'),
42 ('1A', 'Gel purification'),
44 ('Done', 'Completed'),
45 ('Progress', 'In progress'),
47 stopping_point = models.CharField(max_length=50, choices=PROTOCOL_END_POINTS)
48 amplified_from_sample = models.ForeignKey('self', blank=True, null=True)
49 library_size = models.IntegerField(default=225, blank=True, null=True)
51 undiluted_concentration = models.DecimalField("Undiluted concentration (ng/ul)", max_digits=5, decimal_places=2, blank=True, null=True)
52 successful_pM = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True)
54 notes = models.TextField(blank=True)
57 return '#%s: %s' % (self.library_id, self.library_name)
60 verbose_name_plural = "libraries"
61 ordering = ["-library_id"]
64 date_hierarchy = "creation_date"
67 search_fields = ['library_name', 'library_id']
68 list_display = ('library_id', 'library_name', 'made_for', 'library_species', 'creation_date')
69 list_display_links = ('library_id', 'library_name')
70 list_filter = ('stopping_point', 'library_species', 'made_for', 'made_by')
73 'fields': (('library_id', 'library_name'), ('library_species', 'RNAseq'),)
75 ('Creation Information:', {
76 'fields' : (('made_for', 'made_by', 'creation_date'), ('stopping_point', 'amplified_from_sample'), ('undiluted_concentration', 'library_size'), 'notes',)
78 ('Run Information:', {
79 'fields' : (('successful_pM'),)
83 class FlowCell(models.Model):
85 flowcell_id = models.CharField(max_length=20, unique=True, db_index=True, core=True)
86 run_date = models.DateTimeField(core=True)
87 advanced_run = models.BooleanField(default=False)
88 read_length = models.IntegerField(default=32)
90 lane_1_library = models.ForeignKey(Library, related_name="lane_1_library")
91 lane_2_library = models.ForeignKey(Library, related_name="lane_2_library")
92 lane_3_library = models.ForeignKey(Library, related_name="lane_3_library")
93 lane_4_library = models.ForeignKey(Library, related_name="lane_4_library")
94 lane_5_library = models.ForeignKey(Library, related_name="lane_5_library")
95 lane_6_library = models.ForeignKey(Library, related_name="lane_6_library")
96 lane_7_library = models.ForeignKey(Library, related_name="lane_7_library")
97 lane_8_library = models.ForeignKey(Library, related_name="lane_8_library")
99 lane_1_pM = models.IntegerField(default=4)
100 lane_2_pM = models.IntegerField(default=4)
101 lane_3_pM = models.IntegerField(default=4)
102 lane_4_pM = models.IntegerField(default=4)
103 lane_5_pM = models.IntegerField(default=4)
104 lane_6_pM = models.IntegerField(default=4)
105 lane_7_pM = models.IntegerField(default=4)
106 lane_8_pM = models.IntegerField(default=4)
108 lane_1_cluster_estimate = models.IntegerField(blank=True, null=True)
109 lane_2_cluster_estimate = models.IntegerField(blank=True, null=True)
110 lane_3_cluster_estimate = models.IntegerField(blank=True, null=True)
111 lane_4_cluster_estimate = models.IntegerField(blank=True, null=True)
112 lane_5_cluster_estimate = models.IntegerField(blank=True, null=True)
113 lane_6_cluster_estimate = models.IntegerField(blank=True, null=True)
114 lane_7_cluster_estimate = models.IntegerField(blank=True, null=True)
115 lane_8_cluster_estimate = models.IntegerField(blank=True, null=True)
117 notes = models.TextField(blank=True)
120 return '%s (%s)' % (self.flowcell_id, self.run_date)
123 ordering = ["run_date"]
126 date_hierarchy = "run_date"
128 search_fields = ['lane_1_library', 'lane_2_library', 'lane_3_library', 'lane_4_library', 'lane_5_library', 'lane_6_library', 'lane_7_library', 'lane_8_library']
129 list_display = ('flowcell_id', 'run_date', 'lane_1_library', 'lane_2_library', 'lane_3_library', 'lane_4_library', 'lane_5_library', 'lane_6_library', 'lane_7_library', 'lane_8_library')
132 'fields': ('run_date', 'flowcell_id', ('read_length', 'advanced_run'),)
135 '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'),)
138 'fields' : ('notes',)
142 class ElandResult(models.Model):
146 flow_cell = models.ForeignKey(FlowCell)
147 config_file = models.FileField(upload_to=settings.UPLOADTO_CONFIG_FILE)
148 eland_result_pack = models.FileField(upload_to=settings.UPLOADTO_ELAND_RESULT_PACKS)
149 bed_file_pack = models.FileField(upload_to=settings.UPLOADTO_BED_PACKS)
151 notes = models.TextField(blank=True)