1 | What the update script needs to do
|
---|
2 | ==========================================================
|
---|
3 |
|
---|
4 | 1. Move [Label]:s to [Tag]:s with a subtype
|
---|
5 | - Make sure the 'Label' subtype exists in the db.
|
---|
6 | - Copy all labels to tags. Re-use the same id:s if
|
---|
7 | possible.
|
---|
8 | - Update all labeled extracts to use the new tags.
|
---|
9 |
|
---|
10 | - Soft references: [Item.TAG] should re-use the [Item.LABEL]
|
---|
11 | id so we don't have to modify anything related to this.
|
---|
12 | Soft references using 'LABEL' or 'LabelData' must be fixed.
|
---|
13 | Hopefully the tags can use the same id:s as the labels.
|
---|
14 |
|
---|
15 | - Delete the [Labels] table.
|
---|
16 | - Delete the [BioMaterials.label_id] column.
|
---|
17 |
|
---|
18 |
|
---|
19 | 2. Convert [LabeledExtract]:s into [Extract]:s with a subtype
|
---|
20 | - Make sure the 'LabeledExtract' subtype exists in the db
|
---|
21 | - No move of labeled extract data is needed, just change
|
---|
22 | the discriminator column from 4 to 3.
|
---|
23 | - Switch from current labels to the new tags.
|
---|
24 |
|
---|
25 | - Soft refefecens: The [Item.LABELEDEXTRACT] is removed and
|
---|
26 | all soft references to it must be changed to [Item.EXTRACT].
|
---|
27 | Item id:s don't change which is good.
|
---|
28 |
|
---|
29 |
|
---|
30 | 3. Linking biomaterial parents
|
---|
31 | - Move parent links to the new table for [BioMaterialParent].
|
---|
32 | It is a one-to-one mapping (except for the 'dummy' column)
|
---|
33 | and so this should not be difficult.
|
---|
34 | - Pooled biomaterials with a single parent item should copy
|
---|
35 | the parent information to [BioMaterials.parent_id] column
|
---|
36 | and reset the pooled flag.
|
---|
37 |
|
---|
38 | - Delete the [BioMaterialSources] table.
|
---|
39 |
|
---|
40 | 4. Move [Hybridization]:s to [PhysicalBioAssay]:s
|
---|
41 | - Make sure the 'Hybridization' subtype exists.
|
---|
42 | - Copy all data to the new table. It would be good if
|
---|
43 | we can use the old id:s otherwise keep track of
|
---|
44 | old vs. new id:s.
|
---|
45 | - Update [BioMaterialEvents] table to point to the
|
---|
46 | physical bioassays.
|
---|
47 |
|
---|
48 | - Soft references: [Item.PHYSICALBIOASSAY] should re-use the
|
---|
49 | [Item.HYBRIDIZATION] id so we don't have to modify anything
|
---|
50 | related to this.
|
---|
51 | Soft references using 'HYBRIDIZATION' or 'HybridizationData'
|
---|
52 | must be fixed. Hopefully the bioassays can use the same id:s
|
---|
53 | as the hybridizations.
|
---|
54 |
|
---|
55 | - Delete the [BioMaterialEvents.hybridization_id] column.
|
---|
56 |
|
---|
57 | 5. Move [Scan]:s to [DerivedBioAssaySet]
|
---|
58 | - Make sure the 'Scan' subtype exists
|
---|
59 | - Copy all data to the new table. Make sure the correct
|
---|
60 | physical bioassay is linked (easy if they keep the old
|
---|
61 | id:s).
|
---|
62 | - Create [DerivedBioAssay] for each array index used on the
|
---|
63 | hybridization the scan is taken from. Try to link the bioassay
|
---|
64 | with the extract on that index.
|
---|
65 | - Move images to [FileSet] for the bioassay set. Image properties
|
---|
66 | should be added as annotations.
|
---|
67 |
|
---|
68 | - Update [RawBioassay]:s created from the scan to use the
|
---|
69 | derived bioassay instead.
|
---|
70 |
|
---|
71 | - Soft references: [Item.DERIVEDBIOASSAYSET] should re-use the
|
---|
72 | [Item.SCAN] id so we don't have to modify anything
|
---|
73 | related to this.
|
---|
74 | Soft references using 'SCAN' or 'ScanData' must be fixed.
|
---|
75 | Hopefully the bioassay setss can use the same id:s as the
|
---|
76 | scans.
|
---|
77 |
|
---|
78 | - Delete the [RawBioAssays.scan_id] column.
|
---|
79 | - Delete the [Images] table.
|
---|
80 | - Delete the [Scans] table.
|
---|
81 | - Delete the [Hybridizations] table.
|
---|
82 |
|
---|
83 | 6. Core plug-ins
|
---|
84 | Some of the core plug-ins are affected a lot by the changes.
|
---|
85 | - Labeled extract importer
|
---|
86 | - Hybridization importer
|
---|
87 | - Scan importer
|
---|
88 | - Raw bioassay importer
|
---|
89 | - Annotation importer?
|
---|
90 |
|
---|
91 | I have not yet investigated what the best approach is. One option
|
---|
92 | is to disable the old plug-ins and create new plug-ins for the new
|
---|
93 | item types. The other biomaterial importers are also affected, but it
|
---|
94 | should be possible to update them with new functionality. Eg. work
|
---|
95 | on specific item subtype and parent/pooled item changes.
|
---|
96 |
|
---|
97 |
|
---|
98 |
|
---|
99 | Soft item references
|
---|
100 | --------------------
|
---|
101 | The database has several places with soft references. This is
|
---|
102 | typically a two-column reference where one column holds the id
|
---|
103 | of the item and the other the type of item. In most cases the
|
---|
104 | type is the integer value from Item.getValue(), but it can also
|
---|
105 | be the Item.name() value or the Item.getClass().getName() value.
|
---|
106 | When we move and/or convert between item types we need to update
|
---|
107 | the soft references.
|
---|
108 |
|
---|
109 | So far, I have found the following tables with soft references:
|
---|
110 |
|
---|
111 | - AnnotationSets: item_type and item_id
|
---|
112 | Update the item_type and item_id so that it references the
|
---|
113 | new/moved item.
|
---|
114 |
|
---|
115 | - AnnotationTypeItems: item_type
|
---|
116 | Update the item_type.
|
---|
117 |
|
---|
118 | - AnyToAny: from_id, from_type, to_id, to_type
|
---|
119 | Update the id:s and type:s so that they references the
|
---|
120 | new/moved items.
|
---|
121 |
|
---|
122 | - BioMaterialLists: member_type
|
---|
123 | Update the member_type.
|
---|
124 |
|
---|
125 | - BioPlateTypes: biomaterial_type
|
---|
126 | Update the biomaterial_type.
|
---|
127 |
|
---|
128 | - ChangeHistoryDetails: item_type and item_id
|
---|
129 | Update the item_type and item_id so that it references the
|
---|
130 | new/moved item.
|
---|
131 |
|
---|
132 | - Contexts: item_type and item_id
|
---|
133 |
|
---|
134 | - ContextSettings: value
|
---|
135 | Probably has settings related to most recently used
|
---|
136 | items. I guess it is easiest to simply remove those
|
---|
137 | settings for affected item types.
|
---|
138 |
|
---|
139 | - ItemValues: data_class and data_class_id
|
---|
140 | Update to the new class and id.
|
---|
141 |
|
---|
142 | - Jobs: context_item
|
---|
143 | Update to the new item type.
|
---|
144 |
|
---|
145 | - Keys: item_type
|
---|
146 | Hmmm... remove/merge/or...???
|
---|
147 |
|
---|
148 | - PluginDefinitionGuiContexts: item_type
|
---|
149 | Remove non-existing contexts and let plug-ins register
|
---|
150 | for new contexts themself.
|
---|
151 |
|
---|
152 | -
|
---|
153 |
|
---|
154 |
|
---|
155 |
|
---|
156 |
|
---|