diff --git a/data/genes.rda b/data/genes.rda index 147c955..ea457eb 100644 Binary files a/data/genes.rda and b/data/genes.rda differ diff --git a/scripts/analyze.R b/scripts/analyze.R index 4216ca6..34f1845 100644 --- a/scripts/analyze.R +++ b/scripts/analyze.R @@ -33,6 +33,15 @@ results <- data[, .( above_95 = mean(expression > expression_95) ), by = "gene"] +results[, `:=`( + qcv_expression = iqr_expression / median_expression, + qcv_expression_normalized = + iqr_expression_normalized / median_expression_normalized, + cv_expression = sd_expression / mean_expression, + cv_expression_normalized = + sd_expression_normalized / mean_expression_normalized +)] + # Normalize values to the range of 0.0 to 1.0. results[, `:=`( median_expression_normalized = @@ -45,6 +54,11 @@ results[, `:=`( min(iqr_expression_normalized, na.rm = TRUE)) / (max(iqr_expression_normalized, na.rm = TRUE) - min(iqr_expression_normalized, na.rm = TRUE)), + qcv_expression_normalized = + (qcv_expression_normalized - + min(qcv_expression_normalized, na.rm = TRUE)) / + (max(qcv_expression_normalized, na.rm = TRUE) - + min(qcv_expression_normalized, na.rm = TRUE)), mean_expression_normalized = (mean_expression_normalized - min(mean_expression_normalized, na.rm = TRUE)) / @@ -54,7 +68,12 @@ results[, `:=`( (sd_expression_normalized - min(sd_expression_normalized, na.rm = TRUE)) / (max(sd_expression_normalized, na.rm = TRUE) - - min(sd_expression_normalized, na.rm = TRUE)) + min(sd_expression_normalized, na.rm = TRUE)), + cv_expression_normalized = + (cv_expression_normalized - + min(cv_expression_normalized, na.rm = TRUE)) / + (max(cv_expression_normalized, na.rm = TRUE) - + min(cv_expression_normalized, na.rm = TRUE)) )] fwrite(results, file = here("scripts", "output", "results.csv")) diff --git a/scripts/ranking.R b/scripts/ranking.R index e005d44..ea1ea2c 100644 --- a/scripts/ranking.R +++ b/scripts/ranking.R @@ -10,8 +10,8 @@ genes <- fread(here("scripts", "input", "genes.csv")) data <- fread(here("scripts", "output", "results.csv")) data[, score := 0.5 * above_95 + - 0.25 * mean_expression_normalized + - -0.25 * sd_expression_normalized] + 0.25 * median_expression_normalized + + -0.25 * qcv_expression_normalized] # Normalize scores to be between 0.0 and 1.0. data[, score := (score - min(score, na.rm = TRUE)) /