Skip to contents

Decorate LFQData with Methods for transforming Intensities

Value

An R6 class generator.

Public fields

lfq

LFQData object

Methods


LFQDataTransformer$new()

initialize

Usage

LFQDataTransformer$new(lfqdata)

Arguments

lfqdata

LFQData object to transform


LFQDataTransformer$log2()

log2 transform data

Usage

LFQDataTransformer$log2(force = FALSE)

Arguments

force

if `FALSE`, data already log2 transformed will not be transformed a second time. `TRUE` forces log transformation

Returns

LFQDataTransformer


LFQDataTransformer$get_scales()

get mean and variance and standard deviation in each sample

Usage

LFQDataTransformer$get_scales()

Returns

list with means and mads


LFQDataTransformer$robscale()

robust scale data

Usage

LFQDataTransformer$robscale(
  preserve_mean = TRUE,
  colname = "transformedIntensity"
)

Arguments

preserve_mean

should original mean value be preserved TRUE, if FALSE then center at zero

colname

new name of transformed column

Returns

LFQDataTransformer (self)


LFQDataTransformer$robscale_subset()

log2 transform and robust scale data based on subset

Usage

LFQDataTransformer$robscale_subset(
  lfqsubset,
  preserve_mean = TRUE,
  colname = "transformed_abundance"
)

Arguments

lfqsubset

LFQData subset to use for normalization

preserve_mean

should original mean value be preserved TRUE, if FALSE then center at zero

colname

- how to name the transformed intensities, default transformedIntensity

Returns

LFQDataTransformer (self)


LFQDataTransformer$center_to_reference()

center data to a reference subset

Usage

LFQDataTransformer$center_to_reference(lfqsubset)

Arguments

lfqsubset

LFQData subset to use as reference

Returns

LFQDataTransformer (self)


LFQDataTransformer$intensity_array()

Transforms intensities

Usage

LFQDataTransformer$intensity_array(.func = log2, force = FALSE)

Arguments

.func

transformation function working with arrays e.g. log2, log10, asinh etc.

force

transformation on already transformed data.

Returns

LFQDataTransformer (self)


LFQDataTransformer$intensity_matrix()

pass a function which works with matrices, e.g., vsn::justvsn

Usage

LFQDataTransformer$intensity_matrix(.func = robust_scale, force = FALSE)

Arguments

.func

any function taking a matrix and returning a matrix (columns sample, rows feature, e.g. `base::scale()`), default `robust_scale`

force

transformation on data already transformed

Returns

LFQDataTransformer (self)


LFQDataTransformer$clone()

The objects of this class are cloneable with this method.

Usage

LFQDataTransformer$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples


istar <- sim_lfq_data_peptide_config(Nprot = 50)
#> creating sampleName from file_name column
#> completing cases
#> completing cases done
#> setup done
lfqdata <- LFQData$new(istar$data, istar$config)

lfqcopy <- lfqdata$get_copy()
lfqTrans <- lfqcopy$get_Transformer()

x <- lfqTrans$intensity_array(log2)
#> Column added : log2_abundance

x$lfq$is_transformed()
#> [1] TRUE
x <- x$intensity_matrix(robust_scale)
#> Warning: data already transformed. If you still want to log2 tranform, set force = TRUE
plotter <- x$lfq$get_Plotter()
plotter$intensity_distribution_density()
#> Warning: Removed 225 rows containing non-finite outside the scale range
#> (`stat_density()`).


# transform by asinh root and scale

lfqcopy <- lfqdata$get_copy()
lfqTrans <- lfqcopy$get_Transformer()
x <- lfqTrans$intensity_array(asinh)
#> Column added : asinh_abundance
mads1 <- mean(x$get_scales()$mads)
x <- lfqTrans$intensity_matrix(robust_scale, force = TRUE)
#> Joining with `by = join_by(sampleName, isotopeLabel, protein_Id, peptide_Id)`
mads2 <- mean(x$get_scales()$mads)
stopifnot(abs(mads1 - mads2) < 1e-8)


stopifnot(abs(mean(x$get_scales()$medians)) < 1e-8)
lfqcopy <- lfqdata$get_copy()
lfqTrans <- lfqcopy$get_Transformer()
lfqTrans$log2()
#> Column added : log2_abundance
before <- lfqTrans$get_scales()
lfqTrans$robscale()
#> data is : TRUE
#> Joining with `by = join_by(sampleName, isotopeLabel, protein_Id, peptide_Id)`
after <- lfqTrans$get_scales()
stopifnot(abs(mean(before$medians) - mean(after$medians)) < 1e-8)
stopifnot(abs(mean(before$mads) - mean(after$mads)) < 1e-8)

# normalize data using vsn
lfqcopy <- lfqdata$get_copy()
lfqTrans <- lfqcopy$get_Transformer()
lfqTransCheck <- lfqcopy$get_Transformer()

lfqTransCheck$log2()
#> Column added : log2_abundance
lfqTransCheck$get_scales()
#> $medians
#>     A_V1     A_V2     A_V3     A_V4     B_V1     B_V2     B_V3     B_V4 
#> 4.463740 4.450835 4.444549 4.463231 4.537348 4.568077 4.495236 4.519219 
#>  Ctrl_V1  Ctrl_V2  Ctrl_V3  Ctrl_V4 
#> 4.500299 4.453443 4.491344 4.464994 
#> 
#> $mads
#>      A_V1      A_V2      A_V3      A_V4      B_V1      B_V2      B_V3      B_V4 
#> 0.3515227 0.3699336 0.3679643 0.3853720 0.3884622 0.3747087 0.3602410 0.3672785 
#>   Ctrl_V1   Ctrl_V2   Ctrl_V3   Ctrl_V4 
#> 0.3507487 0.3606693 0.3632381 0.3691903 
#> 
lfqTransCheck$lfq$get_Plotter()$intensity_distribution_density()
#> Warning: Removed 225 rows containing non-finite outside the scale range
#> (`stat_density()`).


if(require("vsn")){
 res <- lfqTrans$intensity_matrix( .func = vsn::justvsn)
 res$lfq$get_Plotter()$intensity_distribution_density()
 res$get_scales()
}
#> Loading required package: vsn
#> Joining with `by = join_by(sampleName, isotopeLabel, protein_Id, peptide_Id)`
#> $medians
#>     A_V1     A_V2     A_V3     A_V4     B_V1     B_V2     B_V3     B_V4 
#> 5.067592 5.060373 5.052612 5.063121 5.106810 5.128959 5.089511 5.100129 
#>  Ctrl_V1  Ctrl_V2  Ctrl_V3  Ctrl_V4 
#> 5.098851 5.067436 5.089542 5.072697 
#> 
#> $mads
#>      A_V1      A_V2      A_V3      A_V4      B_V1      B_V2      B_V3      B_V4 
#> 0.2356539 0.2539392 0.2391802 0.2462082 0.2603902 0.2549782 0.2228186 0.2342742 
#>   Ctrl_V1   Ctrl_V2   Ctrl_V3   Ctrl_V4 
#> 0.2618927 0.2316253 0.2412538 0.2422008 
#> 
if(require("preprocessCore")){
quant <- function(y){
 ynorm <- preprocessCore::normalize.quantiles(y)
 rownames(ynorm) <- rownames(y)
 colnames(ynorm) <- colnames(y)
 return(ynorm)
}
 res <- lfqTrans$intensity_matrix( .func = quant)
 res$lfq$get_Plotter()$intensity_distribution_density()
}
#> Loading required package: preprocessCore
#> Warning: data already transformed. If you still want to log2 tranform, set force = TRUE
#> Warning: Removed 225 rows containing non-finite outside the scale range
#> (`stat_density()`).



#subset scaling

istar2 <- sim_lfq_data_peptide_config()
#> creating sampleName from file_name column
#> completing cases
#> completing cases done
#> setup done
lfqdata2 <- LFQData$new(istar2$data, istar2$config)
lfqdata2 <- lfqdata2$get_Transformer()$intensity_array(log2)$lfq
#> Column added : log2_abundance
head(lfqdata2$hierarchy())
#> # A tibble: 6 × 1
#>   protein_Id 
#>   <chr>      
#> 1 0EfVhX~0087
#> 2 7cbcrd~5725
#> 3 9VUkAq~4703
#> 4 BEJI92~5282
#> 5 CGzoYe~2147
#> 6 DoWup2~5896
internal <- lfqdata2$get_subset(head(lfqdata2$hierarchy()))
#> Joining with `by = join_by(protein_Id)`
internal$hierarchy()
#> # A tibble: 6 × 1
#>   protein_Id 
#>   <chr>      
#> 1 0EfVhX~0087
#> 2 7cbcrd~5725
#> 3 9VUkAq~4703
#> 4 BEJI92~5282
#> 5 CGzoYe~2147
#> 6 DoWup2~5896
tr <- lfqdata2$get_Transformer()
tr$center_to_reference(internal)
#> data is transformed: TRUE
pl <- tr$lfq$get_Plotter()
pl$intensity_distribution_density()
#> Warning: Removed 36 rows containing non-finite outside the scale range
#> (`stat_density()`).

lfqdata2$get_Plotter()$intensity_distribution_density()
#> Warning: Removed 36 rows containing non-finite outside the scale range
#> (`stat_density()`).

robscale <- lfqdata2$get_Transformer()$robscale_subset(internal)$lfq
#> data is : TRUE
#> Joining with `by = join_by(sampleName, isotopeLabel, protein_Id, peptide_Id)`
robscale$get_Plotter()$intensity_distribution_density()
#> Warning: Removed 36 rows containing non-finite outside the scale range
#> (`stat_density()`).