From 258f21f2cdcf2468847655223530cda89afc6dd6 Mon Sep 17 00:00:00 2001 From: Brandon King Date: Tue, 11 Aug 2009 19:53:30 +0000 Subject: [PATCH] Script for conversion of db; start of fixes brought on by changes to the db. --- htsworkflow/frontend/experiments/admin.py | 24 +++------- htsworkflow/frontend/experiments/models.py | 49 +++----------------- scripts/drop_lanes_from_flowcell.sql | 52 ++++++++++++++++++++++ scripts/upgrade_from_v0.2.6_to_trunk.sh | 4 +- 4 files changed, 67 insertions(+), 62 deletions(-) create mode 100644 scripts/drop_lanes_from_flowcell.sql diff --git a/htsworkflow/frontend/experiments/admin.py b/htsworkflow/frontend/experiments/admin.py index 9b8cf4f..4563bde 100644 --- a/htsworkflow/frontend/experiments/admin.py +++ b/htsworkflow/frontend/experiments/admin.py @@ -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 = [ diff --git a/htsworkflow/frontend/experiments/models.py b/htsworkflow/frontend/experiments/models.py index f60bd0e..a32d0bd 100755 --- a/htsworkflow/frontend/experiments/models.py +++ b/htsworkflow/frontend/experiments/models.py @@ -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 = [''] - 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 = '' + library_id = lane.library_id + library = lane.library + element = '' 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('
%d%s%s
%d%s%s
') 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 index 0000000..6bfdd57 --- /dev/null +++ b/scripts/drop_lanes_from_flowcell.sql @@ -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; diff --git a/scripts/upgrade_from_v0.2.6_to_trunk.sh b/scripts/upgrade_from_v0.2.6_to_trunk.sh index c75ee55..9469a38 100755 --- a/scripts/upgrade_from_v0.2.6_to_trunk.sh +++ b/scripts/upgrade_from_v0.2.6_to_trunk.sh @@ -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." -- 2.30.2