Changes between Version 5 and Version 6 of Ticket #868


Ignore:
Timestamp:
Feb 7, 2008, 11:55:08 AM (16 years ago)
Author:
Nicklas Nordborg
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #868 – Description

    v5 v6  
    66
    77
    8 '''Implementation idea'''
     8'''Updated implementation idea'''
    99
    10 This was a really hard thing. After some discussion we think we have found a way forward:
    1110
    1211 1. The ArrayDesign and Hybridization gets an additional field: numArrays.
    1312
    14  2. When selecting Labeled extracts for a Hyb, the user can also specify which array(s) the labeled extract should go on. On the Illumina platform there can only be one labeled extract per array, but BASE should support the multi-channel case also. A single labeled extract (for example the reference) may go into more than one array.
     13 2. When selecting Labeled extracts for a Hyb, the user can also specify which array(s) the labeled extract should go on. We will use the already existing 'dummy' column in the BioMaterialEventSources table for this. This exists because of a Hibernate quirk that would delete the Hyb->LE links if the usedQuantity was set to null. Luckily, we can now use this column to instead store the index number of the array the LE is linked to.
    1514
    16  3. The RawBioassay gets a many-to-many link to LabeledExtract. This link should also contain the channel number. 0 = not known
     15 3. As before, a single LE can only be linked once. This may means that the combination with a 2-channel platform, common reference and multi-array hyb can't be represented as is. The solution to this case is to first split the common reference into separate LE:s, one for each array. This can be done with the 'pooling' function. It's not a perfect solution, but this is the only case that needs extra work.
    1716
    18  4. When creating a Raw bioassay the user can also select Labeled extracts and specify channels for them. With some smart coding it may be possible to make intelligent default guesses about which Labeled extracts to select. Note! The Scan->Hybridization link chain is optional, but it should still be possible to select Labeled extracts.
     17 4. The RawBioassay gets an extra column, arrayNum, that holds the index number of the array it is connected to. This number will be used to connect the raw bioassay with the labeled extracts that has the same number in the Hyb->LE link discussed in 2) above.
    1918
    20  5. Inheriting annotations: The RBA->LE links are considered the primary path, and it is always possible to inherit from this path if it is present. If a Hyb has numArrays > 1, it should not be possible to inherit from the Hyb -> LE links.
     19 5. The above information is in principle everything that is needed to be able to connect a RBA with the correct LE:s. A remaining problem is that the {{{Hybridization.getAnnotatableParents()}}} doesn't  know if we are interrested in just LE:s on one array or on the entire hybridization. Since we can't break the API this method must still return all LE:d. We should add a new method, {{{Hybridization.getAnnotatableParents(arrayNum)}}}, that just returns the LE:s on a specific array. It then becomes a problem of updating the client/plug-in code which of the two methods to call. In the BASE code there are two such places, discussed in 6 and 7 below.
    2120
    22  6. Update from 2.5: We create the RBA->LE links by just copying the RBA->Scan->Hyb->LE links. If we copy the links, the channel number must be set to 0 = unknown.
     21 6. Inheriting annotations: This is in the web client code that displays the form where it is possible to select annotations to inherit. There is some generic code that needs to be complemeted with a special case:
    2322
    24  7. Experiment overview/validator: If the RBA -> LE links exists they are used as the primary links to biomaterials, otherwise the old route is used. If the links exists it is checked that they are a subset of the Hyb -> LE links, but the Hyb->LE route is not followed any further. A RBA which is connected with a Hyb with numArrays > 1 should have RBA -> LE links. Channel numbers in the RBA -> LE links should be validated.
     23{{{
     24if (root instanceof RawBioAssay && current instanceof Hybridization)
     25{
     26   current.getAnnotatableParents(root.getArrayNum());
     27}
     28}}}
    2529
    26  8. Migration: In BASE1 there is channel information in the Hyb->LE connection. This information should be copied to the new RBA -> LE links.
     30 7. Experiment overview: This has a cache that makes sure that {{{getAnnotatableParents()}}} is only called once for every item. This has to be changed since we may need to do this differently for multi-array hybridization.
    2731
    28  9. Backwards compatibility: Older tools/plug-ins may have a hard time with the old route since the number of Hyb->LE link can provide more Labeled extracts than expected by the number of channels from the raw data type. Tools/plug-ins should be upgraded to use the new route.
     32 8. Update from 2.5: The three new columns on ArrayDesign, Hyb and RawBioassay all get a default value of 1.
    2933
     34 9. Experiment validator: Needs to be updated to be aware of the array number on the RBA and Hyb-LE links and only load the appropriate subset of LE:s for each RBA. When that is done everything else should work as before. New validation rule: check that arrayNum values doesn't fall outside the range set by Hyb and/or ArrayDesign.
     35
     36 10. Backwards compatibility: Older tools/plug-ins may incorrectly link a RBA with LE:s from other RBA:s since they are not aware of the array number and can't filter on it when loading LE:s from a Hyb.
     37