From 681d6deea7bafd370b945e5bc3d9f7fb35bf4dea Mon Sep 17 00:00:00 2001 From: Unknown Author Date: Tue, 12 Aug 2008 23:58:46 +0000 Subject: [PATCH] fixing incorrect previous check in --- gaworkflow/frontend/exp_track/models.py | 229 +++++++++++++----------- 1 file changed, 129 insertions(+), 100 deletions(-) diff --git a/gaworkflow/frontend/exp_track/models.py b/gaworkflow/frontend/exp_track/models.py index be0bb9c..2096148 100644 --- a/gaworkflow/frontend/exp_track/models.py +++ b/gaworkflow/frontend/exp_track/models.py @@ -1,115 +1,144 @@ from django.db import models -from datetime import datetime -from gaworkflow.frontend.fctracker.models import Library -from string import * +from gaworkflow.frontend.fctracker.models import Library -class Task(models.Model): - task_name = models.CharField(max_length=50,unique=True, db_index=True) - subject1 = models.ForeignKey(Library,related_name='sbj1_library',verbose_name="Subject") - subject2 = models.ForeignKey(Library,related_name='sbj2_library',verbose_name="Subject 2 / Control",blank=True,null=True) - CALCS = ( - ('QuEST', 'QuEST Peak Calling'), - ('WingPeaks', 'Wing Peak Calling'), - ('MACS', 'MACS Peak Calling'), - ('qPCR', 'In Silico qPCR'), - ('CompareLibs', 'Compare Libaraies'), - ('ComparePeakCalls','Compare Peak Calls'), - ('ProfileReads','Profile Reads') +class FlowCell(models.Model): + + flowcell_id = models.CharField(max_length=20, unique=True, db_index=True, core=True) + run_date = models.DateTimeField(core=True) + advanced_run = models.BooleanField(default=False) + read_length = models.IntegerField(default=32) #Stanford is currenlty 25 + + lane_1_library = models.ForeignKey(Library, related_name="lane_1_library") + lane_2_library = models.ForeignKey(Library, related_name="lane_2_library") + lane_3_library = models.ForeignKey(Library, related_name="lane_3_library") + lane_4_library = models.ForeignKey(Library, related_name="lane_4_library") + lane_5_library = models.ForeignKey(Library, related_name="lane_5_library") + lane_6_library = models.ForeignKey(Library, related_name="lane_6_library") + lane_7_library = models.ForeignKey(Library, related_name="lane_7_library") + lane_8_library = models.ForeignKey(Library, related_name="lane_8_library") + + lane_1_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=2.5) + lane_2_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=2.5) + lane_3_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=2.5) + lane_4_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=2.5) + lane_5_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=2.5) + lane_6_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=2.5) + lane_7_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=2.5) + lane_8_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=2.5) + + lane_1_cluster_estimate = models.IntegerField(blank=True, null=True) + lane_2_cluster_estimate = models.IntegerField(blank=True, null=True) + lane_3_cluster_estimate = models.IntegerField(blank=True, null=True) + lane_4_cluster_estimate = models.IntegerField(blank=True, null=True) + lane_5_cluster_estimate = models.IntegerField(blank=True, null=True) + lane_6_cluster_estimate = models.IntegerField(blank=True, null=True) + lane_7_cluster_estimate = models.IntegerField(blank=True, null=True) + lane_8_cluster_estimate = models.IntegerField(blank=True, null=True) + + # lane_1_primer = models.ForeignKey(Primer,blank=True,null=True,related_name="lane_1_primer") + # lane_2_primer = models.ForeignKey(Primer,blank=True,null=True,related_name="lane_2_primer") + # lane_3_primer = models.ForeignKey(Primer,blank=True,null=True,related_name="lane_3_primer") + # lane_4_primer = models.ForeignKey(Primer,blank=True,null=True,related_name="lane_4_primer") + # lane_5_primer = models.ForeignKey(Primer,blank=True,null=True,related_name="lane_5_primer") + # lane_6_primer = models.ForeignKey(Primer,blank=True,null=True,related_name="lane_6_primer") + # lane_7_primer = models.ForeignKey(Primer,blank=True,null=True,related_name="lane_7_primer") + # lane_8_primer = models.ForeignKey(Primer,blank=True,null=True,related_name="lane_8_primer") + + #Machine Names + CLUSTER_MAC = ( + ('M304','M304'), + ('R349','R349'), + ('Tinkerbell','Tinkerbell'), + ('BitBit','BitBit'), + ) + + SEQ_MAC = ( + ('EAS149','EAS149'), + ('EAS46','EAS46'), + ('EAS45','Paris'), + ('Britney','Britney'), ) - apply_calc = models.CharField(max_length=50,choices=CALCS,verbose_name='Applied Calculation') - ## userid = # logged in user - task_status = models.CharField(max_length=500,blank=True,null=True,default='defined') - results_location = models.CharField(max_length=2000,blank=True,null=True) - submitted_on = models.DateTimeField(core=True,default=datetime.now()) - run_note = models.CharField(max_length=500,blank=True,null=True) + cluster_mac_id = models.CharField(max_length=50, choices=CLUSTER_MAC, default='BitBit') + seq_mac_id = models.CharField(max_length=50, choices=SEQ_MAC, verbose_name = 'Sequencer', default='Britney') + + notes = models.TextField(blank=True) + def __str__(self): - return '"%s" - %s on [%s]/[%s]' % (self.task_name,self.apply_calc,self.subject1,self.subject2) + #return '%s (%s)' % (self.flowcell_id, self.run_date) + return '%s' % (self.flowcell_id) - def InProjects(self): - return '...' - ps = self.project_set.all() - pstr = 'In ' - return pstr - for p in ps: - pstr += '%s, ' % (p.project_name) - return pstr + def Lanes(self): + return '
1)%s2)%s3)%s4)%s5)%s6)%s7)%s8)%s
' % (self.lane_1_library,self.lane_2_library,self.lane_3_library,self.lane_4_library,self.lane_5_library,self.lane_6_library,self.lane_7_library,self.lane_8_library) + Lanes.allow_tags = True + + class Meta: + ordering = ["-run_date"] + class Admin: - list_display = ('task_name','apply_calc','subject1','subject2','InProjects','submitted_on','task_status') - list_filter = ('apply_calc',) + save_on_top = True + date_hierarchy = "run_date" + save_on_top = True + search_fields = ['flowcell_id','seq_mac_id','cluster_mac_id','=lane_1_library__library_id','=lane_2_library__library_id','=lane_3_library__library_id','=lane_4_library__library_id','=lane_5_library__library_id','=lane_6_library__library_id','=lane_7_library__library_id','=lane_8_library__library_id'] + list_display = ('flowcell_id','seq_mac_id','run_date', 'Lanes') + list_filter = ('seq_mac_id','cluster_mac_id') fields = ( (None, { - 'fields': (('task_name'),('apply_calc'),('subject1'),('subject2')) - }), - ('system fields', { - 'classes': 'collapse', - 'fields': (('submitted_on'),('task_status','run_note')) - }), - ) - - -class Project(models.Model): - project_name = models.CharField(max_length=50,unique=True, db_index=True) - tasks = models.ManyToManyField(Task,related_name='project_tasks',null=True) - project_notes = models.CharField(max_length=500,blank=True,null=True) - - def __str__(self): - return '%s' % (self.project_name) + 'fields': ('run_date', ('flowcell_id','cluster_mac_id','seq_mac_id'), ('read_length'),) + }), + ('Lanes:', { + ##'fields' : (('lane_1_library', 'lane_1_pM', 'lane_1_cluster_estimate', 'lane_1_primer'), ('lane_2_library', 'lane_2_pM', 'lane_2_cluster_estimate', 'lane_2_primer'), ('lane_3_library', 'lane_3_pM', 'lane_3_cluster_estimate', 'lane_3_primer'), ('lane_4_library', 'lane_4_pM', 'lane_4_cluster_estimate', 'lane_4_primer'), ('lane_5_library', 'lane_5_pM', 'lane_5_cluster_estimate', 'lane_5_primer'), ('lane_6_library', 'lane_6_pM', 'lane_6_cluster_estimate', 'lane_6_primer'), ('lane_7_library', 'lane_7_pM', 'lane_7_cluster_estimate', 'lane_7_primer'), ('lane_8_library', 'lane_8_pM', 'lane_8_cluster_estimate', 'lane_8_primer'),) + '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'),) + }), + (None, { + 'fields' : ('notes',) + }), + ) - def ProjectTasks(self): - ptasks = self.tasks.all().order_by('id') - surl = 'http://m304-apple-server.stanford.edu/projects/' - tstr = '' - Style = '' - if len(ptasks) > 8: Style = ' style="height:200px;overflow:auto" ' - tstr += '
' - tstr += '' - isregistered = False - for t in ptasks: - tstr += '' % (t.task_name,replace(t.task_status,'Complete','Complete')) - if t.task_status != 'defined': isregistered = True - tstr += '
TasksJob Status
%s%s
' - tstr += '
' - tstr += '
' - tstr += '
' - if isregistered: - tstr += 'VIEW PROJECT RESULTS' - tstr += '(view in new window)' - else: - tstr += 'REGISTERING ...' - - tstr += '
' - tstr += '' - tstr += '
' - return tstr - - ProjectTasks.allow_tags = True +### ----------------------- +class DataRun(models.Model): + ConfTemplate = "CONFIG PARAMS WILL BE GENERATED BY THE PIPELINE SCRIPT.\nYOU'LL BE ABLE TO EDIT AFTER IF NEEDED." + run_folder = models.CharField(max_length=50,unique=True, db_index=True) + fcid = models.ForeignKey(FlowCell,verbose_name="Flowcell Id") + config_params = models.TextField(default=ConfTemplate) + run_start_time = models.DateTimeField(core=True) + RUN_STATUS_CHOICES = ( + (0, 'Sequencer running'), ##Solexa Data Pipeline Not Yet Started'), + (1, 'Data Pipeline Started'), + (2, 'Data Pipeline Interrupted'), + (3, 'Data Pipeline Finished'), + (4, 'CollectReads Started'), + (5, 'CollectReads Finished'), + (6, 'QC Finished'), + (7, 'DONE'), + ) + run_status = models.IntegerField(choices=RUN_STATUS_CHOICES, default=0) + run_note = models.TextField(blank=True) - def ProjTitle(self): - ptasks = self.tasks.all().order_by('id') - tasks_counter = '('+len(ptasks).__str__() + ' tasks)' - htmlstr = '%s
%s' % (self.project_name,tasks_counter) - return htmlstr - ProjTitle.allow_tags = True + def main_status(self): + return self.run_status - class Admin: - list_display = ('ProjTitle','ProjectTasks') - # list_filter = ('...',) - fields = ( - (None, { - 'fields': (('project_name'),('tasks'),('project_notes'))}), - ) + main_status.allow_tags = True + + def Flowcell_Info(self): + str = ''+self.fcid.__str__()+'' + str += ' (c: '+self.fcid.cluster_mac_id+', s: '+self.fcid.seq_mac_id+')' + str += '
' + str +='View/hide lanes' + str += '
' + LanesList = '1: '+self.fcid.lane_1_library.__str__()+' ('+self.fcid.lane_1_library.library_species.use_genome_build+')
2: '+self.fcid.lane_2_library.__str__()+' ('+self.fcid.lane_2_library.library_species.use_genome_build+')
3: '+self.fcid.lane_3_library.__str__()+' ('+self.fcid.lane_3_library.library_species.use_genome_build+')
4: '+self.fcid.lane_4_library.__str__()+' ('+self.fcid.lane_4_library.library_species.use_genome_build+')
5: '+self.fcid.lane_5_library.__str__()+' ('+self.fcid.lane_5_library.library_species.use_genome_build+')
6: '+self.fcid.lane_6_library.__str__()+' ('+self.fcid.lane_6_library.library_species.use_genome_build+')
7: '+self.fcid.lane_7_library.__str__()+' ('+self.fcid.lane_7_library.library_species.use_genome_build+')
8: '+self.fcid.lane_8_library.__str__()+' ('+self.fcid.lane_8_library.library_species.use_genome_build+')' + str += LanesList ## self.fcid.Lanes() + str += '
' + str += '
Edit Flowcell record
' + str += '
' + return str + Flowcell_Info.allow_tags = True + + class Admin: + search_fields = ['run_folder','run_note','config_params','=fcid__lane_1_library__library_id','=fcid__lane_2_library__library_id','=fcid__lane_3_library__library_id','=fcid__lane_4_library__library_id','=fcid__lane_5_library__library_id','=fcid__lane_6_library__library_id','=fcid__lane_7_library__library_id','=fcid__lane_8_library__library_id'] + + list_display = ('run_folder','Flowcell_Info','run_start_time','run_status','run_note') + list_filter = ('run_status','run_start_time') -- 2.30.2