From 189c353febaa9818e275706bc811842eb1e917c1 Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Thu, 20 Mar 2025 18:42:38 -0400 Subject: [PATCH 1/2] add initial validation function for spectronaut columns --- R/clean_Spectronaut.R | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/R/clean_Spectronaut.R b/R/clean_Spectronaut.R index 2b0d4dbb..87625c25 100644 --- a/R/clean_Spectronaut.R +++ b/R/clean_Spectronaut.R @@ -7,6 +7,7 @@ FFrgLossType = FExcludedFromQuantification = NULL spec_input = getInputFile(msstats_object, "input") + .validateSpectronautInput(spec_input) spec_input = spec_input[FFrgLossType == "noloss", ] if (is.character(spec_input$FExcludedFromQuantification)) { @@ -32,3 +33,19 @@ .logSuccess("Spectronaut", "clean") spec_input } + +#' Helper method to validate input has necessary columns +#' @param spec_input dataframe input +#' @noRd +.validateSpectronautInput = function(spec_input) { + required_columns = c( + "FFrgLossType", "FExcludedFromQuantification", "PGProteinGroups", + "FGCharge") + missing_columns = setdiff(required_columns, colnames(spec_input)) + if (length(missing_columns) > 0) { + msg = paste("The following columns are missing from the input data:", + paste(missing_columns, sep = ", ", collapse = ", ")) + getOption("MSstatsLog")("ERROR", msg) + stop(msg) + } +} From 1d0b9c112ce2cd59411a43f66d9e33be954afc0c Mon Sep 17 00:00:00 2001 From: Tony Wu Date: Thu, 20 Mar 2025 19:06:09 -0400 Subject: [PATCH 2/2] add unit tests --- ...st_converters_SpectronauttoMSstatsFormat.R | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/inst/tinytest/test_converters_SpectronauttoMSstatsFormat.R b/inst/tinytest/test_converters_SpectronauttoMSstatsFormat.R index 041ae405..6aee95d0 100644 --- a/inst/tinytest/test_converters_SpectronauttoMSstatsFormat.R +++ b/inst/tinytest/test_converters_SpectronauttoMSstatsFormat.R @@ -15,4 +15,43 @@ expect_true("ProductCharge" %in% colnames(output)) expect_true("IsotopeLabelType" %in% colnames(output)) expect_true("Condition" %in% colnames(output)) expect_true("BioReplicate" %in% colnames(output)) -expect_true("Fraction" %in% colnames(output)) \ No newline at end of file +expect_true("Fraction" %in% colnames(output)) + + +# Test SpectronauttoMSstatsFormat Missing Columns --------------------------- +spectronaut_raw = system.file("tinytest/raw_data/Spectronaut/spectronaut_input.csv", + package = "MSstatsConvert") +spectronaut_raw = data.table::fread(spectronaut_raw) +spectronaut_raw$F.ExcludedFromQuantification = NULL +expect_error( + SpectronauttoMSstatsFormat(spectronaut_raw, use_log_file = FALSE), + "The following columns are missing from the input data: FExcludedFromQuantification" +) + +spectronaut_raw = system.file("tinytest/raw_data/Spectronaut/spectronaut_input.csv", + package = "MSstatsConvert") +spectronaut_raw = data.table::fread(spectronaut_raw) +spectronaut_raw$F.FrgLossType = NULL +expect_error( + SpectronauttoMSstatsFormat(spectronaut_raw, use_log_file = FALSE), + "The following columns are missing from the input data: FFrgLossType" +) + +spectronaut_raw = system.file("tinytest/raw_data/Spectronaut/spectronaut_input.csv", + package = "MSstatsConvert") +spectronaut_raw = data.table::fread(spectronaut_raw) +spectronaut_raw$PG.ProteinGroups = NULL +expect_error( + SpectronauttoMSstatsFormat(spectronaut_raw, use_log_file = FALSE), + "The following columns are missing from the input data: PGProteinGroups" +) + +spectronaut_raw = system.file("tinytest/raw_data/Spectronaut/spectronaut_input.csv", + package = "MSstatsConvert") +spectronaut_raw = data.table::fread(spectronaut_raw) +spectronaut_raw$FG.Charge = NULL +expect_error( + SpectronauttoMSstatsFormat(spectronaut_raw, use_log_file = FALSE), + "The following columns are missing from the input data: FGCharge" +) +