Opened 19 years ago

Closed 18 years ago

Last modified 18 years ago

#215 closed defect (fixed)

Incorrect use of DynamicSpotQuery in table view, plot function, filter function, etc.

Reported by: Nicklas Nordborg Owned by: Nicklas Nordborg
Priority: major Milestone: BASE 2.2
Component: web Version:
Keywords: Cc:

Description (last modified by Jari Häkkinen)

If a bioassayset contains merged data, ie. data where one data cube spot corresponds to more than one raw data spot, the code doesn't use DynamicSpotQuery correctly.

For example, let's assume that we have a hybridization with 20 spots and 10 reporters. There are two spots for each reporter. Now, in the analysis we merge on the reporters and are left with 10 data cube spots, each one representing 2 raw data spots. In the table list view, we will get 10 hits of we only view the intensities, but 20 hits if we also view some raw data column. The same happens in the plot function. It will plot 10 spots if we only use the intensities, but 20 spots if we use a raw data column. The same happens in the filter funtion. In this case can also result in an exception or bad data corrupting the database. For example, a filter matches 7 data cube spots may match 14 raw data spots if we use a raw data column in the filter. This would probably result in an error since the code would try to insert duplicate entries in the filtered bioassay set.

How do we solve this? Some suggestions:

1) Always use aggregation function when using raw data columns. Ie. you have to specify if you want to use the mean, min, max, etc. when you use a raw data column. This works for numerical columns, but how do we handle string data?

2) ... well... more suggestions are welcome

Change History (6)

comment:1 by Nicklas Nordborg, 18 years ago

(In [2815]) References #215: Incorrect use of DynamicSpotQuery in table view, plot function, filter function, etc.

Added a simple test case for generating a small data set that can be used for testing out ideas and solutions.

comment:2 by Jari Häkkinen, 18 years ago

Description: modified (diff)
Milestone: BASE 2.x+BASE 2.2

comment:3 by Nicklas Nordborg, 18 years ago

Status: newassigned

comment:4 by Nicklas Nordborg, 18 years ago

This will be fixed as follows:

Each bioassayset/datacube will keep a count of the maximum number mappings to raw data for a single spot. If the maximum is one (ie. each spot has at most 1 link back to raw data) everything will work as before. If the maximum is 0 or > 1 raw data will only be accessible from the tabular list page. Ie. it can nnot be used by the filter plugin, plotted in the plot tool, or viewed from experiment explorer. The reason is that the current implementation of these doesn't make sense when there are multiple mappings to raw data spots.

Note that it is still possible to develop other plugins which can use the raw data if that makes sense.

comment:5 by Nicklas Nordborg, 18 years ago

Resolution: fixed
Status: assignedclosed

(In [2993]) Fixes #215: Incorrect use of DynamicSpotQuery in table view, plot function, filter function, etc.

comment:6 by Nicklas Nordborg, 18 years ago

(In [2998]) References #215: Incorrect use of DynamicSpotQuery...

Fixed problem with DataCube.onBeforeCommit() never beeing called, and no spot count was generated.

Note: See TracTickets for help on using tickets.