
Import Olink Proteomic Data
olink.Rmd
Olink data is…
Import Olink data
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 ]
QC Olink
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