R/runGenericDiscovery.R

Defines functions runGenericDiscovery

Documented in runGenericDiscovery

#' This function orchestrates the MassExpression workflow (could be called by a  workflow step)
#' 
#' @param experimentDesign data.frame. Experiment design provided in input by the user. Required columsn are: `SampleName` and `Condition`.
#' @param proteinIntensities data.frame. Wide matrix of intensities. Rows are proteins and columns are SampleNames. Required column: `ProteinId`. 
#' @param normalisationMethod Normalisation method. One of "None" or "Median". 
#' @param species Species. One of 'Human', 'Mouse', 'Yeast', 'Other'
#' @param labellingMethod One of 'LFQ' or 'TMT'
#' @param fitSeparateModels logical. TRUE to fit separate limma models for each pairwise comparisons 
#' (e.g. filtering and `lmFit` are run separately by comparison).
#' @param returnDecideTestColumn logical. If TRUE the row data of the `CompleteIntensityExperiment` will contain the output from 
#' `limma::decideTests`. If FALSE a single model is run for all contrasts.
#' @param conditionSeparator string. String used to separate up and down condition in output. 
#' 
#' @return List of two SummarisedExperiment objects: `IntensityExperiment` 
#' containing the raw intensities and  `CompleteIntensityExperiment` including 
#' imputed intensities and the results of the limma DE analysis. 
#' 

#' @examples 
#' design <- fragpipe_data$design
#' intensities <- fragpipe_data$intensities
#' parameters <- fragpipe_data$parameters
#' normalisation_method <- parameters[parameters[,1] == "UseNormalisationMethod",2]
#' species <- parameters[parameters[,1] == "Species",2]
#' labellingMethod <- parameters[parameters[,1] == "LabellingMethod",2]
#' listIntensityExperiments <- runGenericDiscovery(experimentDesign = design, 
#' proteinIntensities = intensities, 
#' normalisationMethod = normalisation_method,
#' species = species, 
#' labellingMethod = labellingMethod)


#' @export

runGenericDiscovery <- function(experimentDesign, proteinIntensities, 
                                normalisationMethod="None", species, 
                                labellingMethod, 
                                fitSeparateModels = TRUE,
                                returnDecideTestColumn = FALSE, 
                                conditionSeparator = " - "){
  
  
  print("Sanitize import...")
  # Sanitize invisible and Unicode characters for correct export
  experimentDesign <- sanitize_strings_in_dataframe(experimentDesign)
  proteinIntensities <- sanitize_strings_in_dataframe(proteinIntensities)
  
  print("Starting generic discovery...")
  
  listMetadata <- list(Species = species,
                       LabellingMethod = labellingMethod, 
                       NormalisationAppliedToAssay = normalisationMethod)
  
 
  # Create Data Rep
  IntensityExperiment <- createSummarizedExperiment(experimentDesign = experimentDesign, 
                                                       proteinIntensities = proteinIntensities,
                                                       listMetadata = listMetadata)

  # Get Binary Statistic Comparisons and complete experiment containinig imputed Protein Intensity
  results <- runLimmaPipeline(IntensityExperiment,
                              normalisationMethod=normalisationMethod, 
                              fitSeparateModels=fitSeparateModels,
                              returnDecideTestColumn=returnDecideTestColumn, 
                              conditionSeparator = conditionSeparator)

  print("Workflow completed.")

  return(results)

}
MassDynamics/MassExpression documentation built on May 7, 2023, 11:29 a.m.