Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#1791 closed enhancement (fixed)

Normalizers should store data in the same transform as the source data

Reported by: Nicklas Nordborg Owned by: everyone
Priority: major Milestone: BASE 3.2.4
Component: coreplugins Version:
Keywords: Cc:

Description

The current implementations of the MedianRatioNormalization and LowessNormalization always return data as non-logged, which may confuse the user if the source data is logged.

The reason that data is always returned as non-logged is that log-transformed data is first un-transformed before the normalization.

The simple approach to this problem is to let the code work as before and then apply the log-transform at the end if needed. However, in some cases it may be more efficient to not un-transform in the first place and work with the logged data all the time. But this may require changes to the normalization algorithm so this must be made carefully in order to not break anything.

Change History (4)

comment:1 by Nicklas Nordborg, 11 years ago

(In [6366]) References #1791: Normalizers should store data in the same transform as the source data

Fixed for the LowessNormalization plug-in. Decided to go for the 'optimized' way of loading the values as the are stored at the database level (using VirtualColumn.channelRaw() method).

Introduced MACalculator and two subclasses (for log2 and log10) data to take care of M/A calculation and applying the final correction to the original values.

comment:2 by Nicklas Nordborg, 11 years ago

(In [6367]) References #1791: Normalizers should store data in the same transform as the source data

Changed the two-channel variant of the MedianRatioNormalization to also use values as they are stored in the database with the help of MACalculator.

comment:3 by Nicklas Nordborg, 11 years ago

Resolution: fixed
Status: newclosed

comment:4 by Nicklas Nordborg, 11 years ago

(In [6368]) References #1791: Normalizers should store data in the same transform as the source data

Added a log2-transform+lowess normalization test in the 'roles' test program. Seems to work ok and give the same results as when running lowess on the un-transformed values.

Note: See TracTickets for help on using tickets.