# normaliseCNOlist: Normalisation for boolean modelling. In CellNOptR: Training of boolean logic models of signalling networks using prior knowledge networks and perturbation data.

## Description

This function takes in a CNOlist and does the normalisation of the data between 0 and 1, according to two different procedures (see details).

## Usage

 1 2 3 normaliseCNOlist(CNOlist, EC50Data=0.5, HillCoef=2, EC50Noise=0., detection=0, saturation=Inf, changeTh=0, norm2TorCtrl=NULL, mode="time", options=list(rescale_negative = T), verbose=FALSE) 

## Arguments

 CNOlist a CNOlist EC50Data parameter for the scaling of the data between 0 and 1, default=0.5 HillCoef Hill coefficient for the scaling of the data, default to 2 EC50Noise parameter for the computation of a penalty for data comparatively smaller than other time points or conditions. No effect if set to zero (default). detection minimum detection level of the instrument, everything smaller will be treated as noise (NA), default to 0 saturation saturation level of the instrument, everything over this will be treated as NA, default to Inf. changeTh threshold for relative change considered significant, default to 0 norm2TorCtrl deprecated since 1.5.0. Use the mode argument instead. mode "time" or "ctrl" or "raw" (experimental): choice of a normalisation method: "ctrl" computes the relative change compared to the control at the same time. "time" computes the relative change compared to the same condition and measurement at time 0. "raw" does not take into account time zero data; data are relative to time 0 so can be positive or negative values. options rescale column with negative values to be in 0-1 range (experimental) verbose prints some information if True (default is False)

## Details

The normalisation procedure works as follows:

1. every value that is out of the dynamic range of the equipment (as specified by the parameters detection and saturation are set to NA,

2. values are transformed to fold changes relative to the same condition at t0 (if mode="time") or the control condition (i.e. same inhibitors, no stimuli) at the same time (if mode="ctrl"),

3. the fold changes are transformed with a Hill function \frac{x^{HillCoef}}{ ((EC50Data^{HillCoef}) + (x^{HillCoef}))}

4. a penalty for "noisiness" is computed for each measurement as the value divided by the maximum value for that readout across all conditions and times (excluding values out of the dynamic range)

5. the noise penalty is transformed by a saturation function (for each measurement \frac{x}{(EC50Noise+x} where x=\frac{x}{\max{x}}),

6. the noise penalty and Hilled fold changes are multiplied,

7. if the fold change is negative and bigger than ChangeTh, the resulting product is multiplied by -1, if the fold change is smaller than ChangeTh (either positive or negative), it is set to 0.

The normalisation procedure applied here is explained in details in saez-Rodriguez et al. (2009).

As the normalisation procedure works by computing a fold change relative to the same condition at time 0 or the control condition, if the aforementioned conditions have a value of zero (which is not expected with any common biochemical technique), then the fold change calculation will return a "NaN" value. If this is a problem for your particular case then we would suggest putting a dummy, very low value, instead of the zero, or setting that measurement to "NA" in the MIDAS file.

## Value

a normalised CNOlist

C. Terfve

## References

J. Saez-Rodriguez, L. G. Alexopoulos, J. Epperlein, R. Samaga, D. A. Lauffenburger, S. Klamt and P. K. Sorger. Discrete logic modeling as a means to link protein signaling networks with functional analysis of mammalian signal transduction, Molecular Systems Biology, 5:331, 2009.

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #Load a CNOlist data(CNOlistToy,package="CellNOptR") #Replace the values in the list by random values #(for demonstration purposes, when actually using this function you would simply load a non-normalised CNOlist) CNOlistToy$valueSignals$t0<-matrix( data=runif(n=(dim(CNOlistToy$valueSignals$t0)[1]*dim(CNOlistToy$valueSignals$t0)[2]),min=0,max=400), nrow=dim(CNOlistToy$valueSignals$t0)[1], ncol=dim(CNOlistToy$valueSignals$t0)[2]) CNOlistToy$valueSignals[[2]]<-CNOlistToy$valueSignals[[1]]+matrix( data=runif(n=(dim(CNOlistToy$valueSignals$t0)[1]*dim(CNOlistToy$valueSignals$t0)[2]),min=0,max=100), nrow=dim(CNOlistToy$valueSignals$t0)[1], ncol=dim(CNOlistToy$valueSignals$t0)[2]) CNOlistToyN<-normaliseCNOlist( CNOlistToy, EC50Data = 0.5, HillCoef = 2, EC50Noise = 0.1, detection = 0, saturation = Inf, changeTh = 0, mode = "time")