Script for conversion of db; start of fixes brought on by changes to the db.
authorBrandon King <kingb@caltech.edu>
Tue, 11 Aug 2009 19:53:30 +0000 (19:53 +0000)
committerBrandon King <kingb@caltech.edu>
Tue, 11 Aug 2009 19:53:30 +0000 (19:53 +0000)
htsworkflow/frontend/experiments/admin.py
htsworkflow/frontend/experiments/models.py
scripts/drop_lanes_from_flowcell.sql [new file with mode: 0644]
scripts/upgrade_from_v0.2.6_to_trunk.sh

index 9b8cf4f15d51f9fd08062ccd5cbf3a5b10c1c289..4563bde51895f860a37db7ded92f727bc5f28a9a 100644 (file)
@@ -43,31 +43,17 @@ class FlowCellOptions(admin.ModelAdmin):
     search_fields = ('flowcell_id',
         'sequencer__name',
         'cluster_station__name',
-        '=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',
-        'lane_1_library__library_name',
-        'lane_2_library__library_name',
-        'lane_3_library__library_name',
-        'lane_4_library__library_name',
-        'lane_5_library__library_name',
-        'lane_6_library__library_name',
-        'lane_7_library__library_name',
-        'lane_8_library__library_name')
+        '=lane__library__library_id',
+        'lane__library__library_name')
     list_display = ('flowcell_id','run_date','Lanes')
     list_filter = ('sequencer','cluster_station')
     fieldsets = (
         (None, {
             'fields': ('run_date', ('flowcell_id','cluster_station','sequencer'), ('read_length', 'paired_end'),)
         }),
-        ('Lanes:', {
-           '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'),)
-        }),
+        #('Lanes:', {
+        #   'fields' : (('lane__library__library_id', 'lane__pM', 'lane__cluster_estimate'),)
+        #}),
         ('Notes:', { 'fields': ('notes',),}),
     )
     inlines = [
index f60bd0e42506562ecadd77b740f51e0235ed18a9..a32d0bdb9ee76d1c924a42bf9d41fbd28222228b 100755 (executable)
@@ -32,42 +32,6 @@ class FlowCell(models.Model):
   advanced_run = models.BooleanField(default=False)
   paired_end = 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=default_pM)
-  lane_2_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=default_pM)
-  lane_3_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=default_pM)
-  lane_4_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=default_pM)
-  lane_5_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=default_pM)
-  lane_6_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=default_pM)
-  lane_7_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=default_pM)
-  lane_8_pM = models.DecimalField(max_digits=5, decimal_places=2,blank=False, null=False,default=default_pM)
-  
-  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")
 
   cluster_station = models.ForeignKey(ClusterStation, default=3)
   sequencer = models.ForeignKey(Sequencer, default=1)
@@ -91,17 +55,18 @@ class FlowCell(models.Model):
   def Lanes(self):
     library_url = '/admin/samples/library/%s' 
     html = ['<table>']
-    for i in range(1,9):
-        cluster_estimate = getattr(self, 'lane_%d_cluster_estimate' % (i,))
+    #for i in range(1,9):
+    for lane in self.lane_set.all():
+        cluster_estimate = lane.cluster_estimate
         if cluster_estimate is not None:
             cluster_estimate = "%s k" % ((int(cluster_estimate)/1000), )
         else:
             cluster_estimate = 'None'
-       library_id = getattr(self, 'lane_%d_library_id' % (i,))
-        library = getattr(self, 'lane_%d_library' % i)
-       element = '<tr><td>%d</td><td><a href="%s">%s</a></td><td>%s</td></tr>'
+        library_id = lane.library_id
+        library = lane.library
+        element = '<tr><td>%d</td><td><a href="%s">%s</a></td><td>%s</td></tr>'
         expanded_library_url = library_url %(library_id,)
-        html.append(element % (i, expanded_library_url, library, cluster_estimate))
+        html.append(element % (lane.lane_number, expanded_library_url, library, cluster_estimate))
     html.append('</table>')
     return "\n".join(html)
   Lanes.allow_tags = True
diff --git a/scripts/drop_lanes_from_flowcell.sql b/scripts/drop_lanes_from_flowcell.sql
new file mode 100644 (file)
index 0000000..6bfdd57
--- /dev/null
@@ -0,0 +1,52 @@
+BEGIN TRANSACTION;
+CREATE TEMPORARY TABLE experiments_flowcell_temp (
+    "id" integer NOT NULL PRIMARY KEY,                                     
+    "flowcell_id" varchar(20) NOT NULL UNIQUE,                             
+    "run_date" datetime NOT NULL,                                          
+    "advanced_run" bool NOT NULL,                                          
+    "paired_end" bool NOT NULL,                                            
+    "read_length" integer NOT NULL,                                        
+    "lane_1_library_id" integer NOT NULL REFERENCES "samples_library" ("id"),
+    "lane_2_library_id" integer NOT NULL REFERENCES "samples_library" ("id"),
+    "lane_3_library_id" integer NOT NULL REFERENCES "samples_library" ("id"),
+    "lane_4_library_id" integer NOT NULL REFERENCES "samples_library" ("id"),
+    "lane_5_library_id" integer NOT NULL REFERENCES "samples_library" ("id"),
+    "lane_6_library_id" integer NOT NULL REFERENCES "samples_library" ("id"),
+    "lane_7_library_id" integer NOT NULL REFERENCES "samples_library" ("id"),
+    "lane_8_library_id" integer NOT NULL REFERENCES "samples_library" ("id"),
+    "lane_1_pM" decimal NOT NULL,                                            
+    "lane_2_pM" decimal NOT NULL,                                            
+    "lane_3_pM" decimal NOT NULL,                                            
+    "lane_4_pM" decimal NOT NULL,                                            
+    "lane_5_pM" decimal NOT NULL,                                            
+    "lane_6_pM" decimal NOT NULL,                                            
+    "lane_7_pM" decimal NOT NULL,                                            
+    "lane_8_pM" decimal NOT NULL,                                            
+    "lane_1_cluster_estimate" integer NULL,                                  
+    "lane_2_cluster_estimate" integer NULL,                                  
+    "lane_3_cluster_estimate" integer NULL,                                  
+    "lane_4_cluster_estimate" integer NULL,                                  
+    "lane_5_cluster_estimate" integer NULL,                                  
+    "lane_6_cluster_estimate" integer NULL,                                  
+    "lane_7_cluster_estimate" integer NULL,                                  
+    "lane_8_cluster_estimate" integer NULL,                                  
+    "cluster_station_id" integer NOT NULL REFERENCES "experiments_clusterstation" ("id"),
+    "sequencer_id" integer NOT NULL REFERENCES "experiments_sequencer" ("id"),
+    "notes" text NOT NULL     
+);
+INSERT INTO experiments_flowcell_temp SELECT id,flowcell_id,run_date,advanced_run,paired_end,read_length,lane_1_library_id,lane_2_library_id,lane_3_library_id,lane_4_library_id,lane_5_library_id,lane_6_library_id,lane_7_library_id,lane_8_library_id,lane_1_pM,lane_2_pM,lane_3_pM,lane_4_pM,lane_5_pM,lane_6_pM,lane_7_pM,lane_8_pM,lane_1_cluster_estimate,lane_2_cluster_estimate,lane_3_cluster_estimate,lane_4_cluster_estimate,lane_5_cluster_estimate,lane_6_cluster_estimate,lane_7_cluster_estimate,lane_8_cluster_estimate,cluster_station_id,sequencer_id,notes FROM experiments_flowcell;
+DROP TABLE experiments_flowcell;
+CREATE TABLE experiments_flowcell (                                      
+    "id" integer NOT NULL PRIMARY KEY,                                     
+    "flowcell_id" varchar(20) NOT NULL UNIQUE,                             
+    "run_date" datetime NOT NULL,                                          
+    "advanced_run" bool NOT NULL,                                          
+    "paired_end" bool NOT NULL,                                            
+    "read_length" integer NOT NULL,                                        
+    "cluster_station_id" integer NOT NULL REFERENCES "experiments_clusterstation" ("id"),
+    "sequencer_id" integer NOT NULL REFERENCES "experiments_sequencer" ("id"),
+    "notes" text NOT NULL
+);
+INSERT INTO experiments_flowcell SELECT id,flowcell_id,run_date,advanced_run,paired_end,read_length,cluster_station_id,sequencer_id,notes FROM experiments_flowcell_temp;
+DROP TABLE experiments_flowcell_temp;
+COMMIT;
index c75ee55454482d1d49cf5cdfe32ae38618784631..9469a38364f397374b9a392d856040a84e20b642 100755 (executable)
@@ -5,4 +5,6 @@ cd htsworkflow/frontend/
 python manage.py syncdb
 cd ../..
 ./scripts/migrate_to_lane_table.py
-
+echo "Droping lanes..."
+sqlite3 fctracker.db < scripts/drop_lanes_from_flowcell.sql
+echo "Done."