Skip to contents

Olink data is…

library(metaboprep)

# the example Olink data file path
olink_file <- system.file("extdata", "olink_v1_example.txt", package="metaboprep")

# read data 
dat <- read_olink_v1(olink_file)

Create Metaboprep object

Once imported, we pass the data to the Metaboprep class object.

m <- Metaboprep(data     = dat$data, 
                features = dat$features, 
                samples  = dat$samples)

# view 
m
#> <metaboprep::Metaboprep>
#>  @ data           : num [1:90, 1:100, 1] 8.32 6.12 9.74 5.11 7.96 5.89 6.06 5.62 6.51 8.46 ...
#>  .. - attr(*, "dimnames")=List of 3
#>  ..  ..$ : chr [1:90] "Sample_00001" "Sample_00002" "Sample_00003" "Sample_00004" ...
#>  ..  ..$ : chr [1:100] "OID00001" "OID00002" "OID00003" "OID00004" ...
#>  ..  ..$ : chr "input"
#>  @ samples        :'data.frame': 90 obs. of  3 variables:
#>  .. $ sample_id : chr  "Sample_00001" "Sample_00002" "Sample_00003" "Sample_00004" ...
#>  .. $ PlateID   : chr  "20211440-001_SP211650_IMO" "20211440-001_SP211650_IMO" "20211440-001_SP211650_IMO" "20211440-001_SP211650_IMO" ...
#>  .. $ QC_Warning: chr  "Pass" "Pass" "Warning" "Pass" ...
#>  @ features       :'data.frame': 100 obs. of  8 variables:
#>  .. $ feature_id   : chr  "OID00001" "OID00002" "OID00003" "OID00004" ...
#>  .. $ UniProt      : chr  "P60800" "P69237" "P79933" "P90793" ...
#>  .. $ Assay        : chr  "Protein_1" "Protein_2" "Protein_3" "Protein_4" ...
#>  .. $ MissingFreq  : num  0.00147 0.00147 0.00147 0.00147 0.00147 0.00147 0.00147 0.00147 0.00147 0.00147 ...
#>  .. $ Panel        : chr  "Olink Immuno-Oncology" "Olink Immuno-Oncology" "Olink Immuno-Oncology" "Olink Immuno-Oncology" ...
#>  .. $ Panel_Version: chr  "v.3112" "v.3112" "v.3112" "v.3112" ...
#>  .. $ LOD          : num  2.14 2.14 2.14 2.14 2.14 2.14 2.14 2.14 2.14 2.14 ...
#>  .. $ Normalization: chr  "Intensity Normalized (v.2)" "Intensity Normalized (v.2)" "Intensity Normalized (v.2)" "Intensity Normalized (v.2)" ...
#>  @ exclusions     :List of 2
#>  .. $ samples :List of 5
#>  ..  ..$ user_excluded                    : chr(0) 
#>  ..  ..$ extreme_sample_missingness       : chr(0) 
#>  ..  ..$ user_defined_sample_missingness  : chr(0) 
#>  ..  ..$ user_defined_sample_totalpeakarea: chr(0) 
#>  ..  ..$ user_defined_sample_pca_outlier  : chr(0) 
#>  .. $ features:List of 3
#>  ..  ..$ user_excluded                   : chr(0) 
#>  ..  ..$ extreme_feature_missingness     : chr(0) 
#>  ..  ..$ user_defined_feature_missingness: chr(0) 
#>  @ feature_summary: num[0 , 0 , 0 ] 
#>  @ sample_summary : num[0 , 0 , 0 ]
m <- m |>
  quality_control(source_layer        = "input", 
                  sample_missingness  = 0.5, 
                  feature_missingness = 0.3, 
                  total_peak_area_sd  = 5, 
                  outlier_udist       = 5, 
                  outlier_treatment   = "leave_be", 
                  winsorize_quantile  = 1.0, 
                  tree_cut_height     = 0.5, 
                  pc_outlier_sd       = 5)
#> 
#> ── Starting Metabolite QC Process ──────────────────────────────────────────────
#>  Validating input parameters
#>  Validating input parameters [9ms]
#> 
#>  Sample & Feature Summary Statistics for raw data
#>  Sample & Feature Summary Statistics for raw data [1.3s]
#> 
#>  Copying input data to new 'qc' data layer
#>  Copying input data to new 'qc' data layer [22ms]
#> 
#>  Assessing for extreme sample missingness >=80% - excluding 0 sample(s)
#>  Assessing for extreme sample missingness >=80% - excluding 0 sample(s) [17ms]
#> 
#>  Assessing for extreme feature missingness >=80% - excluding 0 feature(s)
#>  Assessing for extreme feature missingness >=80% - excluding 0 feature(s) [17m
#> 
#>  Assessing for sample missingness at specified level of >=50% - excluding 0 sa…
#>  Assessing for sample missingness at specified level of >=50% - excluding 0 sa…
#> 
#>  Assessing for feature missingness at specified level of >=30% - excluding 0 f…
#>  Assessing for feature missingness at specified level of >=30% - excluding 0 f…
#> 
#>  Calculating total peak abundance outliers at +/- 5 Sdev - excluding 0 sample(…
#>  Calculating total peak abundance outliers at +/- 5 Sdev - excluding 0 sample(…
#> 
#>  Running sample data PCA outlier analysis at +/- 5 Sdev
#>  Running sample data PCA outlier analysis at +/- 5 Sdev [17ms]
#> 
#>  Sample PCA outlier analysis - re-identify feature independence and PC outlier…
#>  Sample PCA outlier analysis - re-identify feature independence and PC outlier…
#> 
#>  Creating final QC dataset...
#>  Creating final QC dataset... [1s]
#> 
#>  Metabolite QC Process Completed
#>  Metabolite QC Process Completed [16ms]
#> 

# view 
m
#> <metaboprep::Metaboprep>
#>  @ data           : num [1:90, 1:100, 1:2] 8.32 6.12 9.74 5.11 7.96 5.89 6.06 5.62 6.51 8.46 ...
#>  .. - attr(*, "dimnames")=List of 3
#>  ..  ..$ : chr [1:90] "Sample_00001" "Sample_00002" "Sample_00003" "Sample_00004" ...
#>  ..  ..$ : chr [1:100] "OID00001" "OID00002" "OID00003" "OID00004" ...
#>  ..  ..$ : chr [1:2] "input" "qc"
#>  .. - attr(*, "qc_sample_missingness")= num 0.5
#>  .. - attr(*, "qc_feature_missingness")= num 0.3
#>  .. - attr(*, "qc_total_peak_area_sd")= num 5
#>  .. - attr(*, "qc_outlier_udist")= num 5
#>  .. - attr(*, "qc_outlier_treatment")= chr "leave_be"
#>  .. - attr(*, "qc_winsorize_quantile")= num 1
#>  .. - attr(*, "qc_tree_cut_height")= num 0.5
#>  .. - attr(*, "qc_pc_outlier_sd")= num 5
#>  .. - attr(*, "qc_features_exclude_but_keep")= chr(0) 
#>  @ samples        :'data.frame': 90 obs. of  5 variables:
#>  .. $ sample_id      : chr  "Sample_00001" "Sample_00002" "Sample_00003" "Sample_00004" ...
#>  .. $ PlateID        : chr  "20211440-001_SP211650_IMO" "20211440-001_SP211650_IMO" "20211440-001_SP211650_IMO" "20211440-001_SP211650_IMO" ...
#>  .. $ QC_Warning     : chr  "Pass" "Pass" "Warning" "Pass" ...
#>  .. $ reason_excluded: chr  NA NA NA NA ...
#>  .. $ excluded       : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
#>  @ features       :'data.frame': 100 obs. of  10 variables:
#>  .. $ feature_id     : chr  "OID00001" "OID00002" "OID00003" "OID00004" ...
#>  .. $ UniProt        : chr  "P60800" "P69237" "P79933" "P90793" ...
#>  .. $ Assay          : chr  "Protein_1" "Protein_2" "Protein_3" "Protein_4" ...
#>  .. $ MissingFreq    : num  0.00147 0.00147 0.00147 0.00147 0.00147 0.00147 0.00147 0.00147 0.00147 0.00147 ...
#>  .. $ Panel          : chr  "Olink Immuno-Oncology" "Olink Immuno-Oncology" "Olink Immuno-Oncology" "Olink Immuno-Oncology" ...
#>  .. $ Panel_Version  : chr  "v.3112" "v.3112" "v.3112" "v.3112" ...
#>  .. $ LOD            : num  2.14 2.14 2.14 2.14 2.14 2.14 2.14 2.14 2.14 2.14 ...
#>  .. $ Normalization  : chr  "Intensity Normalized (v.2)" "Intensity Normalized (v.2)" "Intensity Normalized (v.2)" "Intensity Normalized (v.2)" ...
#>  .. $ reason_excluded: chr  NA NA NA NA ...
#>  .. $ excluded       : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
#>  @ exclusions     :List of 2
#>  .. $ samples :List of 5
#>  ..  ..$ user_excluded                    : chr(0) 
#>  ..  ..$ extreme_sample_missingness       : chr(0) 
#>  ..  ..$ user_defined_sample_missingness  : chr(0) 
#>  ..  ..$ user_defined_sample_totalpeakarea: chr(0) 
#>  ..  ..$ user_defined_sample_pca_outlier  : chr(0) 
#>  .. $ features:List of 3
#>  ..  ..$ user_excluded                   : chr(0) 
#>  ..  ..$ extreme_feature_missingness     : chr(0) 
#>  ..  ..$ user_defined_feature_missingness: chr(0) 
#>  @ feature_summary: num [1:20, 1:100, 1:2] 0 0 90 7.42 1.48 ...
#>  .. - attr(*, "dimnames")=List of 3
#>  ..  ..$ : chr [1:20] "missingness" "outlier_count" "n" "mean" ...
#>  ..  ..$ : chr [1:100] "OID00001" "OID00002" "OID00003" "OID00004" ...
#>  ..  ..$ : chr [1:2] "input" "qc"
#>  .. - attr(*, "qc_tree")=List of 7
#>  ..  ..$ merge      : int [1:99, 1:2] -16 -73 -36 -38 -19 -35 -18 -13 -20 -69 ...
#>  ..  ..$ height     : num [1:99] 0.54 0.613 0.629 0.634 0.647 ...
#>  ..  ..$ order      : int [1:100] 39 41 55 62 6 22 44 77 54 76 ...
#>  ..  ..$ labels     : chr [1:100] "OID00001" "OID00002" "OID00003" "OID00004" ...
#>  ..  ..$ method     : chr "complete"
#>  ..  ..$ call       : language stats::hclust(d = dist_matrix, method = "complete")
#>  ..  ..$ dist.method: NULL
#>  ..  ..- attr(*, "class")= chr "hclust"
#>  .. - attr(*, "qc_outlier_udist")= num 5
#>  .. - attr(*, "qc_tree_cut_height")= num 0.5
#>  @ sample_summary : num [1:90, 1:65, 1:2] 0 0 0 0 0 0 0 0 0 0 ...
#>  .. - attr(*, "dimnames")=List of 3
#>  ..  ..$ : chr [1:90] "Sample_00001" "Sample_00002" "Sample_00003" "Sample_00004" ...
#>  ..  ..$ : chr [1:65] "missingness" "tpa_total" "tpa_complete_features" "outlier_count" ...
#>  ..  ..$ : chr [1:2] "input" "qc"
#>  .. - attr(*, "qc_varexp")= Named num [1:90] 0.0399 0.0386 0.0365 0.035 0.0328 ...
#>  ..  ..- attr(*, "names")= chr [1:90] "PC1" "PC2" "PC3" "PC4" ...
#>  .. - attr(*, "qc_num_pcs_scree")= num 17
#>  .. - attr(*, "qc_num_pcs_parallel")= int 39
#>  .. - attr(*, "qc_outlier_udist")= num 5

Other

Other Olink specific analyses include…