Skip to content

Commit

Permalink
Merge pull request #271 from Olink-Proteomics/optimization_develop
Browse files Browse the repository at this point in the history
Optimization develop to develop
  • Loading branch information
kathy-nevola authored Jul 26, 2023
2 parents 34d9a51 + 9773f09 commit 589e180
Show file tree
Hide file tree
Showing 39 changed files with 1,794 additions and 522 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/R-CMD-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ jobs:
shell: Rscript {0}

- name: Check package
run: |
run: |
check_results <- rcmdcheck::rcmdcheck(error_on = "error",
path = "OlinkAnalyze",
check_dir = "check")
Expand Down
3 changes: 2 additions & 1 deletion OlinkAnalyze/DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Description: A collection of functions to facilitate analysis of proteomic
License: AGPL (>= 3)
Depends:
R (>= 4.1.0)
Imports:
Imports:
broom,
car,
dplyr,
Expand Down Expand Up @@ -83,6 +83,7 @@ Imports:
utils,
zip
Suggests:
arrow,
clusterProfiler,
extrafont,
FSA,
Expand Down
2 changes: 1 addition & 1 deletion OlinkAnalyze/R/Olink_anova.R
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ olink_anova <- function(df,
}

number_of_samples_w_more_than_one_level <- df %>%
dplyr::group_by(SampleID, Index) %>%
dplyr::group_by(SampleID) %>%
dplyr::summarise(n_levels = dplyr::n_distinct(!!rlang::ensym(effect), na.rm = TRUE)) %>%
dplyr::ungroup() %>%
dplyr::filter(n_levels > 1) %>%
Expand Down
40 changes: 36 additions & 4 deletions OlinkAnalyze/R/Olink_bridgeselector.R
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,11 @@ olink_bridgeselector<-function(df, sampleMissingFreq, n){

#Outlier calculation as in qc_plot for filtering
qc_outliers <- df %>%
dplyr::group_by(Panel, SampleID, Index) %>%
dplyr::group_by(Panel, SampleID) %>%
dplyr::mutate(IQR = IQR(NPX, na.rm = TRUE),
sample_median = median(NPX, na.rm = TRUE)) %>%
dplyr::ungroup() %>%
dplyr::select(SampleID, Index, Panel, IQR, sample_median) %>%
dplyr::select(SampleID, Panel, IQR, sample_median) %>%
dplyr::distinct() %>%
dplyr::group_by(Panel) %>%
dplyr::mutate(median_low = mean(sample_median, na.rm = TRUE) - 3*sd(sample_median, na.rm = TRUE),
Expand All @@ -58,10 +58,42 @@ olink_bridgeselector<-function(df, sampleMissingFreq, n){
IQR > iqr_low &
IQR < iqr_high,
0, 1)) %>%
dplyr::select(SampleID, Index, Panel, Outlier)

dplyr::select(SampleID, Panel, Outlier)


# Alternative LODs for when LOD is not present
if(!("LOD" %in% names(df))){
if("Max LOD" %in% names(df)){
df <- df |>
dplyr::mutate(LOD = `Max LOD`)
message("Using Max LOD as filter criteria...")
} else if ("Plate LOD" %in% names(df)){
df <- df |>
dplyr::mutate(LOD = `Plate LOD`)

message("Using Plate LOD as filter criteria...")
} else if ("Plate_LOD" %in% names(df)){
df <- df |>
dplyr::mutate(LOD = Plate_LOD)

message("Using Plate_LOD as filter criteria...")
} else {
df <- df |>
dplyr::mutate(LOD = -Inf)

message("LOD not available. No filtering by LOD...")
}
}

if("SampleQC" %in% names(df)){
df <- df |>
dplyr::mutate(QC_Warning = SampleQC)
}


df_1 <- df %>%
dplyr::left_join(qc_outliers, by = c('SampleID', 'Index', 'Panel')) %>%
dplyr::left_join(qc_outliers, by = c('SampleID', 'Panel')) %>%
dplyr::mutate(NPX = ifelse(NPX <= LOD, NA, NPX)) %>%
dplyr::group_by(SampleID) %>%
dplyr::mutate(QC_Warning = dplyr::if_else(all(toupper(QC_Warning) == 'PASS'),
Expand Down
46 changes: 42 additions & 4 deletions OlinkAnalyze/R/Olink_normalization.R
Original file line number Diff line number Diff line change
Expand Up @@ -196,8 +196,27 @@ olink_normalization <- function(df1,
df_adjusted_data <- df1 %>%
dplyr::mutate(Panel=stringr::str_replace(Panel,'\\(.+', '')) %>%
dplyr::left_join(adj_factor_df,by='OlinkID') %>%
dplyr::mutate(NPX = NPX + Adj_factor) %>%
dplyr::mutate(LOD = LOD + Adj_factor)
dplyr::mutate(NPX = NPX + Adj_factor)

if("LOD" %in% names(df_adjusted_data)){
df_adjusted_data <- df_adjusted_data %>%
dplyr::mutate(LOD = LOD + Adj_factor)
}

if("Max LOD" %in% names(df_adjusted_data)){
df_adjusted_data <- df_adjusted_data %>%
dplyr::mutate(`Max LOD` = `Max LOD` + Adj_factor)
}

if("Plate LOD" %in% names(df_adjusted_data)){
df_adjusted_data <- df_adjusted_data %>%
dplyr::mutate(`Plate LOD` = `Plate LOD` + Adj_factor)
}

if("Plate_LOD" %in% names(df_adjusted_data)){
df_adjusted_data <- df_adjusted_data %>%
dplyr::mutate(Plate_LOD = Plate_LOD + Adj_factor)
}

return(df_adjusted_data)

Expand Down Expand Up @@ -331,8 +350,27 @@ olink_normalization <- function(df1,
dplyr::mutate(Panel=stringr::str_replace(Panel,'\\(.+', '')) %>%
dplyr::left_join(adj_factor_df,by='OlinkID') %>%
dplyr::mutate(Adj_factor = dplyr::if_else(Project == reference_project,0,Adj_factor)) %>%
dplyr::mutate(NPX = NPX + Adj_factor) %>%
dplyr::mutate(LOD = LOD + Adj_factor)
dplyr::mutate(NPX = NPX + Adj_factor)

if("LOD" %in% names(df_adjusted_data)){
df_adjusted_data <- df_adjusted_data %>%
dplyr::mutate(LOD = LOD + Adj_factor)
}

if("Max LOD" %in% names(df_adjusted_data)){
df_adjusted_data <- df_adjusted_data %>%
dplyr::mutate(`Max LOD` = `Max LOD` + Adj_factor)
}

if("Plate LOD" %in% names(df_adjusted_data)){
df_adjusted_data <- df_adjusted_data %>%
dplyr::mutate(`Plate LOD` = `Plate LOD` + Adj_factor)
}

if("Plate_LOD" %in% names(df_adjusted_data)){
df_adjusted_data <- df_adjusted_data %>%
dplyr::mutate(Plate_LOD = Plate_LOD + Adj_factor)
}


return(df_adjusted_data)
Expand Down
2 changes: 1 addition & 1 deletion OlinkAnalyze/R/Olink_one_non_parametric.R
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ olink_one_non_parametric <- function(df,
}

number_of_samples_w_more_than_one_level <- df %>%
dplyr::group_by(SampleID, Index) %>%
dplyr::group_by(SampleID) %>%
dplyr::summarise(n_levels = dplyr::n_distinct(!!rlang::ensym(effect), na.rm = T),.groups = "drop") %>%
dplyr::filter(n_levels > 1) %>%
nrow(.)
Expand Down
2 changes: 1 addition & 1 deletion OlinkAnalyze/R/Olink_ordinalRegression.R
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ olink_ordinalRegression <- function(df,
}

number_of_samples_w_more_than_one_level <- df %>%
dplyr::group_by(SampleID, Index) %>%
dplyr::group_by(SampleID) %>%
dplyr::summarise(n_levels = n_distinct(!!rlang::ensym(effect), na.rm = T)) %>%
dplyr::ungroup() %>%
dplyr::filter(n_levels > 1) %>%
Expand Down
Loading

0 comments on commit 589e180

Please sign in to comment.