R/small_molecule_evidence.R

# mzTab-M reference implementation and validation API.
#
# This is the mzTab-M reference implementation and validation API service.
#
# The version of the OpenAPI document: 2.0.0
# Contact: nils.hoffmann@cebitec.uni-bielefeld.de
# Generated by: https://openapi-generator.tech

#' @docType class
#' @title SmallMoleculeEvidence
#' @description SmallMoleculeEvidence Class
#' @format An \code{R6Class} generator object
#' @field prefix  character [optional]
#'
#' @field header_prefix  character [optional]
#'
#' @field sme_id  integer 
#'
#' @field evidence_input_id  character 
#'
#' @field database_identifier  character 
#'
#' @field chemical_formula  character [optional]
#'
#' @field smiles  character [optional]
#'
#' @field inchi  character [optional]
#'
#' @field chemical_name  character [optional]
#'
#' @field uri  character [optional]
#'
#' @field derivatized_form  \link{Parameter} [optional]
#'
#' @field adduct_ion  character [optional]
#'
#' @field exp_mass_to_charge  numeric 
#'
#' @field charge  integer 
#'
#' @field theoretical_mass_to_charge  numeric 
#'
#' @field spectra_ref  list( \link{SpectraRef} ) 
#'
#' @field identification_method  \link{Parameter} 
#'
#' @field ms_level  \link{Parameter} 
#'
#' @field id_confidence_measure  list( numeric ) [optional]
#'
#' @field rank  integer 
#'
#' @field opt  list( \link{OptColumnMapping} ) [optional]
#'
#' @field comment  list( \link{Comment} ) [optional]
#'
#'
#' @importFrom R6 R6Class
#' @importFrom jsonlite fromJSON toJSON
#' @export
SmallMoleculeEvidence <- R6::R6Class(
  'SmallMoleculeEvidence',
  public = list(
    `prefix` = NULL,
    `header_prefix` = NULL,
    `sme_id` = NULL,
    `evidence_input_id` = NULL,
    `database_identifier` = NULL,
    `chemical_formula` = NULL,
    `smiles` = NULL,
    `inchi` = NULL,
    `chemical_name` = NULL,
    `uri` = NULL,
    `derivatized_form` = NULL,
    `adduct_ion` = NULL,
    `exp_mass_to_charge` = NULL,
    `charge` = NULL,
    `theoretical_mass_to_charge` = NULL,
    `spectra_ref` = NULL,
    `identification_method` = NULL,
    `ms_level` = NULL,
    `id_confidence_measure` = NULL,
    `rank` = NULL,
    `opt` = NULL,
    `comment` = NULL,
    #' @description Create a new SmallMoleculeEvidence.
    #' @param sme_id The small molecule evidence id.
    #' @param evidence_input_id The evidence input id.
    #' @param database_identifier The database identifier.
    #' @param exp_mass_to_charge The experimental mass to charge of the evidence.
    #' @param charge The charge of the evidence.
    #' @param theoretical_mass_to_charge The theoretical mass to charge.
    #' @param spectra_ref The references to source spectra list( \link{SpectraRef} ).
    #' @param identification_method The identification method \link{Parameter}.
    #' @param ms_level The ms level used for evidence \link{Parameter}.
    #' @param rank The database search / id rank.
    #' @param prefix 'SMF'.
    #' @param header_prefix 'SFH'.
    #' @param chemical_formula The chemical formula.
    #' @param smiles The SMILES string.
    #' @param inchi The INCHI identifier.
    #' @param chemical_name The chemical name. 
    #' @param uri External URI.
    #' @param derivatized_form The derivatized form of the molecule.
    #' @param adduct_ion The adduct ion.
    #' @param id_confidence_measure The confidence measure used.
    #' @param opt Optional columns and values.
    #' @param comment Comments.
    #' @param ... local optional variable arguments. 
    initialize = function(`sme_id`, `evidence_input_id`, `database_identifier`, `exp_mass_to_charge`, `charge`, `theoretical_mass_to_charge`, `spectra_ref`, `identification_method`, `ms_level`, `rank`, `prefix`='SME', `header_prefix`='SEH', `chemical_formula`=NULL, `smiles`=NULL, `inchi`=NULL, `chemical_name`=NULL, `uri`=NULL, `derivatized_form`=NULL, `adduct_ion`=NULL, `id_confidence_measure`=NULL, `opt`=NULL, `comment`=NULL, ...){
      local.optional.var <- list(...)
      if (!missing(`sme_id`)) {
        stopifnot(is.numeric(`sme_id`), length(`sme_id`) == 1)
        self$`sme_id` <- `sme_id`
      }
      if (!missing(`evidence_input_id`)) {
        stopifnot(is.character(`evidence_input_id`), length(`evidence_input_id`) == 1)
        self$`evidence_input_id` <- `evidence_input_id`
      }
      if (!missing(`database_identifier`)) {
        stopifnot(is.character(`database_identifier`), length(`database_identifier`) == 1)
        self$`database_identifier` <- `database_identifier`
      }
      if (!missing(`exp_mass_to_charge`)) {
        stopifnot(is.numeric(`exp_mass_to_charge`), length(`exp_mass_to_charge`) == 1)
        self$`exp_mass_to_charge` <- `exp_mass_to_charge`
      }
      if (!missing(`charge`)) {
        stopifnot(is.numeric(`charge`), length(`charge`) == 1)
        self$`charge` <- `charge`
      }
      if (!missing(`theoretical_mass_to_charge`)) {
        stopifnot(is.numeric(`theoretical_mass_to_charge`), length(`theoretical_mass_to_charge`) == 1)
        self$`theoretical_mass_to_charge` <- `theoretical_mass_to_charge`
      }
      if (!missing(`spectra_ref`)) {
        stopifnot(is.vector(`spectra_ref`), length(`spectra_ref`) != 0)
        sapply(`spectra_ref`, function(x) stopifnot(R6::is.R6(x)))
        self$`spectra_ref` <- `spectra_ref`
      }
      if (!missing(`identification_method`)) {
        stopifnot(R6::is.R6(`identification_method`))
        self$`identification_method` <- `identification_method`
      }
      if (!missing(`ms_level`)) {
        stopifnot(R6::is.R6(`ms_level`))
        self$`ms_level` <- `ms_level`
      }
      if (!missing(`rank`)) {
        stopifnot(is.numeric(`rank`), length(`rank`) == 1)
        self$`rank` <- `rank`
      }
      if (!is.null(`prefix`)) {
        stopifnot(is.character(`prefix`), length(`prefix`) == 1)
        self$`prefix` <- `prefix`
      }
      if (!is.null(`header_prefix`)) {
        stopifnot(is.character(`header_prefix`), length(`header_prefix`) == 1)
        self$`header_prefix` <- `header_prefix`
      }
      if (!is.null(`chemical_formula`)) {
        stopifnot(is.character(`chemical_formula`), length(`chemical_formula`) == 1)
        self$`chemical_formula` <- `chemical_formula`
      }
      if (!is.null(`smiles`)) {
        stopifnot(is.character(`smiles`), length(`smiles`) == 1)
        self$`smiles` <- `smiles`
      }
      if (!is.null(`inchi`)) {
        stopifnot(is.character(`inchi`), length(`inchi`) == 1)
        self$`inchi` <- `inchi`
      }
      if (!is.null(`chemical_name`)) {
        stopifnot(is.character(`chemical_name`), length(`chemical_name`) == 1)
        self$`chemical_name` <- `chemical_name`
      }
      if (!is.null(`uri`)) {
        stopifnot(is.character(`uri`), length(`uri`) == 1)
        self$`uri` <- `uri`
      }
      if (!is.null(`derivatized_form`)) {
        stopifnot(R6::is.R6(`derivatized_form`))
        self$`derivatized_form` <- `derivatized_form`
      }
      if (!is.null(`adduct_ion`)) {
        stopifnot(is.character(`adduct_ion`), length(`adduct_ion`) == 1)
        self$`adduct_ion` <- `adduct_ion`
      }
      if (!is.null(`id_confidence_measure`)) {
        stopifnot(is.vector(`id_confidence_measure`), length(`id_confidence_measure`) != 0)
        sapply(`id_confidence_measure`, function(x) stopifnot(is.character(x)))
        self$`id_confidence_measure` <- `id_confidence_measure`
      }
      if (!is.null(`opt`)) {
        stopifnot(is.vector(`opt`), length(`opt`) != 0)
        sapply(`opt`, function(x) stopifnot(R6::is.R6(x)))
        self$`opt` <- `opt`
      }
      if (!is.null(`comment`)) {
        stopifnot(is.vector(`comment`), length(`comment`) != 0)
        sapply(`comment`, function(x) stopifnot(R6::is.R6(x)))
        self$`comment` <- `comment`
      }
    },
    #' @description Serialize to list object suitable for jsonlite
    toJSON = function() {
      SmallMoleculeEvidenceObject <- list()
      if (!is.null(self$`prefix`)) {
        SmallMoleculeEvidenceObject[['prefix']] <-
          rmzTabM::safe_unbox(self$`prefix`)
      }
      if (!is.null(self$`header_prefix`)) {
        SmallMoleculeEvidenceObject[['header_prefix']] <-
          rmzTabM::safe_unbox(self$`header_prefix`)
      }
      if (!is.null(self$`sme_id`)) {
        SmallMoleculeEvidenceObject[['sme_id']] <-
          rmzTabM::safe_unbox(self$`sme_id`)
      }
      if (!is.null(self$`evidence_input_id`)) {
        SmallMoleculeEvidenceObject[['evidence_input_id']] <-
          rmzTabM::safe_unbox(self$`evidence_input_id`)
      }
      if (!is.null(self$`database_identifier`)) {
        SmallMoleculeEvidenceObject[['database_identifier']] <-
          rmzTabM::safe_unbox(self$`database_identifier`)
      }
      if (!is.null(self$`chemical_formula`)) {
        SmallMoleculeEvidenceObject[['chemical_formula']] <-
          rmzTabM::safe_unbox(self$`chemical_formula`)
      }
      if (!is.null(self$`smiles`)) {
        SmallMoleculeEvidenceObject[['smiles']] <-
          rmzTabM::safe_unbox(self$`smiles`)
      }
      if (!is.null(self$`inchi`)) {
        SmallMoleculeEvidenceObject[['inchi']] <-
          rmzTabM::safe_unbox(self$`inchi`)
      }
      if (!is.null(self$`chemical_name`)) {
        SmallMoleculeEvidenceObject[['chemical_name']] <-
          rmzTabM::safe_unbox(self$`chemical_name`)
      }
      if (!is.null(self$`uri`)) {
        SmallMoleculeEvidenceObject[['uri']] <-
          rmzTabM::safe_unbox(self$`uri`)
      }
      if (!is.null(self$`derivatized_form`)) {
        SmallMoleculeEvidenceObject[['derivatized_form']] <-
          self$`derivatized_form`$toJSON()
      }
      if (!is.null(self$`adduct_ion`)) {
        SmallMoleculeEvidenceObject[['adduct_ion']] <-
          rmzTabM::safe_unbox(self$`adduct_ion`)
      }
      if (!is.null(self$`exp_mass_to_charge`)) {
        SmallMoleculeEvidenceObject[['exp_mass_to_charge']] <-
          rmzTabM::safe_unbox(self$`exp_mass_to_charge`)
      }
      if (!is.null(self$`charge`)) {
        SmallMoleculeEvidenceObject[['charge']] <-
          rmzTabM::safe_unbox(self$`charge`)
      }
      if (!is.null(self$`theoretical_mass_to_charge`)) {
        SmallMoleculeEvidenceObject[['theoretical_mass_to_charge']] <-
         rmzTabM::safe_unbox(self$`theoretical_mass_to_charge`)
      }
      if (!is.null(self$`spectra_ref`)) {
        SmallMoleculeEvidenceObject[['spectra_ref']] <-
          lapply(self$`spectra_ref`, function(x) x$toJSON())
      }
      if (!is.null(self$`identification_method`)) {
        SmallMoleculeEvidenceObject[['identification_method']] <-
          self$`identification_method`$toJSON()
      }
      if (!is.null(self$`ms_level`)) {
        SmallMoleculeEvidenceObject[['ms_level']] <-
          self$`ms_level`$toJSON()
      }
      if (!is.null(self$`id_confidence_measure`)) {
        SmallMoleculeEvidenceObject[['id_confidence_measure']] <-
          unlist(self$`id_confidence_measure`)
      }
      if (!is.null(self$`rank`)) {
        SmallMoleculeEvidenceObject[['rank']] <-
          rmzTabM::safe_unbox(self$`rank`)
      }
      if (!is.null(self$`opt`)) {
        SmallMoleculeEvidenceObject[['opt']] <-
          lapply(self$`opt`, function(x) x$toJSON())
      }
      if (!is.null(self$`comment`)) {
        SmallMoleculeEvidenceObject[['comment']] <-
          lapply(self$`comment`, function(x) x$toJSON())
      }

      SmallMoleculeEvidenceObject
    },
    #' @description Deserialize from jsonlite list object
    #' @param SmallMoleculeEvidenceJson list object.
    fromJSON = function(SmallMoleculeEvidenceJson) {
      SmallMoleculeEvidenceObject <- jsonlite::fromJSON(SmallMoleculeEvidenceJson)
      if (!is.null(SmallMoleculeEvidenceObject$`prefix`)) {
        self$`prefix` <- SmallMoleculeEvidenceObject$`prefix`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`header_prefix`)) {
        self$`header_prefix` <- SmallMoleculeEvidenceObject$`header_prefix`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`sme_id`)) {
        self$`sme_id` <- SmallMoleculeEvidenceObject$`sme_id`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`evidence_input_id`)) {
        self$`evidence_input_id` <- SmallMoleculeEvidenceObject$`evidence_input_id`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`database_identifier`)) {
        self$`database_identifier` <- SmallMoleculeEvidenceObject$`database_identifier`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`chemical_formula`)) {
        self$`chemical_formula` <- SmallMoleculeEvidenceObject$`chemical_formula`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`smiles`)) {
        self$`smiles` <- SmallMoleculeEvidenceObject$`smiles`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`inchi`)) {
        self$`inchi` <- SmallMoleculeEvidenceObject$`inchi`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`chemical_name`)) {
        self$`chemical_name` <- SmallMoleculeEvidenceObject$`chemical_name`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`uri`)) {
        self$`uri` <- SmallMoleculeEvidenceObject$`uri`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`derivatized_form`)) {
        derivatized_formObject <- Parameter$new()
        derivatized_formObject$fromJSON(jsonlite::toJSON(SmallMoleculeEvidenceObject$derivatized_form, auto_unbox = TRUE, null = "null", na = "null", digits = NA))
        self$`derivatized_form` <- derivatized_formObject
      }
      if (!is.null(SmallMoleculeEvidenceObject$`adduct_ion`)) {
        self$`adduct_ion` <- SmallMoleculeEvidenceObject$`adduct_ion`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`exp_mass_to_charge`)) {
        self$`exp_mass_to_charge` <- SmallMoleculeEvidenceObject$`exp_mass_to_charge`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`charge`)) {
        self$`charge` <- SmallMoleculeEvidenceObject$`charge`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`theoretical_mass_to_charge`)) {
        self$`theoretical_mass_to_charge` <- SmallMoleculeEvidenceObject$`theoretical_mass_to_charge`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`spectra_ref`)) {
        self$`spectra_ref` <- ApiClient$new()$deserializeObj(SmallMoleculeEvidenceObject$`spectra_ref`, "array[SpectraRef]", loadNamespace("rmzTabM"))
      }
      if (!is.null(SmallMoleculeEvidenceObject$`identification_method`)) {
        identification_methodObject <- Parameter$new()
        identification_methodObject$fromJSON(jsonlite::toJSON(SmallMoleculeEvidenceObject$identification_method, auto_unbox = TRUE, null = "null", na = "null", digits = NA))
        self$`identification_method` <- identification_methodObject
      }
      if (!is.null(SmallMoleculeEvidenceObject$`ms_level`)) {
        ms_levelObject <- Parameter$new()
        ms_levelObject$fromJSON(jsonlite::toJSON(SmallMoleculeEvidenceObject$ms_level, auto_unbox = TRUE, null = "null", na = "null", digits = NA))
        self$`ms_level` <- ms_levelObject
      }
      if (!is.null(SmallMoleculeEvidenceObject$`id_confidence_measure`)) {
        self$`id_confidence_measure` <- ApiClient$new()$deserializeObj(SmallMoleculeEvidenceObject$`id_confidence_measure`, "array[numeric]", loadNamespace("rmzTabM"))
      }
      if (!is.null(SmallMoleculeEvidenceObject$`rank`)) {
        self$`rank` <- SmallMoleculeEvidenceObject$`rank`
      }
      if (!is.null(SmallMoleculeEvidenceObject$`opt`)) {
        self$`opt` <- ApiClient$new()$deserializeObj(SmallMoleculeEvidenceObject$`opt`, "array[OptColumnMapping]", loadNamespace("rmzTabM"))
      }
      if (!is.null(SmallMoleculeEvidenceObject$`comment`)) {
        self$`comment` <- ApiClient$new()$deserializeObj(SmallMoleculeEvidenceObject$`comment`, "array[Comment]", loadNamespace("rmzTabM"))
      }
    },
    #' @description Serialize to JSON string. 
    toJSONString = function() {
      jsoncontent <- c(
        if (!is.null(self$`prefix`)) {
        sprintf(
        '"prefix":
          "%s"
                ',
        rmzTabM::safe_unbox(self$`prefix`)
        )},
        if (!is.null(self$`header_prefix`)) {
        sprintf(
        '"header_prefix":
          "%s"
                ',
        rmzTabM::safe_unbox(self$`header_prefix`)
        )},
        if (!is.null(self$`sme_id`)) {
        sprintf(
        '"sme_id":
          %d
                ',
        rmzTabM::safe_unbox(self$`sme_id`)
        )},
        if (!is.null(self$`evidence_input_id`)) {
        sprintf(
        '"evidence_input_id":
          "%s"
                ',
        rmzTabM::safe_unbox(self$`evidence_input_id`)
        )},
        if (!is.null(self$`database_identifier`)) {
        sprintf(
        '"database_identifier":
          "%s"
                ',
        rmzTabM::safe_unbox(self$`database_identifier`)
        )},
        if (!is.null(self$`chemical_formula`)) {
        sprintf(
        '"chemical_formula":
          "%s"
                ',
        rmzTabM::safe_unbox(self$`chemical_formula`)
        )},
        if (!is.null(self$`smiles`)) {
        sprintf(
        '"smiles":
          "%s"
                ',
        rmzTabM::safe_unbox(self$`smiles`)
        )},
        if (!is.null(self$`inchi`)) {
        sprintf(
        '"inchi":
          "%s"
                ',
        rmzTabM::safe_unbox(self$`inchi`)
        )},
        if (!is.null(self$`chemical_name`)) {
        sprintf(
        '"chemical_name":
          "%s"
                ',
        rmzTabM::safe_unbox(self$`chemical_name`)
        )},
        if (!is.null(self$`uri`)) {
        sprintf(
        '"uri":
          "%s"
                ',
        rmzTabM::safe_unbox(self$`uri`)
        )},
        if (!is.null(self$`derivatized_form`)) {
        sprintf(
        '"derivatized_form":
        %s
        ',
        jsonlite::toJSON(self$`derivatized_form`$toJSON(), auto_unbox=FALSE, null = "null", na = "null", digits = NA)
        )},
        if (!is.null(self$`adduct_ion`)) {
        sprintf(
        '"adduct_ion":
          "%s"
                ',
        rmzTabM::safe_unbox(self$`adduct_ion`)
        )},
        if (!is.null(self$`exp_mass_to_charge`)) {
        sprintf(
        '"exp_mass_to_charge":
          %f
                ',
        rmzTabM::safe_unbox(self$`exp_mass_to_charge`)
        )},
        if (!is.null(self$`charge`)) {
        sprintf(
        '"charge":
          %d
                ',
        rmzTabM::safe_unbox(self$`charge`)
        )},
        if (!is.null(self$`theoretical_mass_to_charge`)) {
        sprintf(
        '"theoretical_mass_to_charge":
          %f
                ',
        rmzTabM::safe_unbox(self$`theoretical_mass_to_charge`)
        )},
        if (!is.null(self$`spectra_ref`)) {
        sprintf(
        '"spectra_ref":
        [%s]
',
        paste(sapply(self$`spectra_ref`, function(x) jsonlite::toJSON(x$toJSON(), auto_unbox=FALSE, null = "null", na = "null", digits = NA)), collapse=",")
        )},
        if (!is.null(self$`identification_method`)) {
        sprintf(
        '"identification_method":
        %s
        ',
        jsonlite::toJSON(self$`identification_method`$toJSON(), auto_unbox=FALSE, null = "null", na = "null", digits = NA)
        )},
        if (!is.null(self$`ms_level`)) {
        sprintf(
        '"ms_level":
        %s
        ',
        jsonlite::toJSON(self$`ms_level`$toJSON(), auto_unbox=FALSE, null = "null", na = "null", digits = NA)
        )},
        if (!is.null(self$`id_confidence_measure`)) {
        sprintf(
        '"id_confidence_measure":
           [%s]
        ',
        paste(unlist(lapply(self$`id_confidence_measure`, function(x) paste0('"', x, '"'))), collapse=",")
        )},
        if (!is.null(self$`rank`)) {
        sprintf(
        '"rank":
          %d
                ',
        rmzTabM::safe_unbox(self$`rank`)
        )},
        if (!is.null(self$`opt`)) {
        sprintf(
        '"opt":
        [%s]
',
        paste(sapply(self$`opt`, function(x) jsonlite::toJSON(x$toJSON(), auto_unbox=FALSE, null = "null", na = "null", digits = NA)), collapse=",")
        )},
        if (!is.null(self$`comment`)) {
        sprintf(
        '"comment":
        [%s]
',
        paste(sapply(self$`comment`, function(x) jsonlite::toJSON(x$toJSON(), auto_unbox=FALSE, null = "null", na = "null", digits = NA)), collapse=",")
        )}
      )
      jsoncontent <- paste(jsoncontent, collapse = ",")
      paste('{', jsoncontent, '}', sep = "")
    },
    #' @description Deserialize from JSON string
    #' @param SmallMoleculeEvidenceJson SmallMoleculeEvidenceJson string
    fromJSONString = function(SmallMoleculeEvidenceJson) {
      SmallMoleculeEvidenceObject <- jsonlite::fromJSON(SmallMoleculeEvidenceJson)
      self$`prefix` <- SmallMoleculeEvidenceObject$`prefix`
      self$`header_prefix` <- SmallMoleculeEvidenceObject$`header_prefix`
      self$`sme_id` <- SmallMoleculeEvidenceObject$`sme_id`
      self$`evidence_input_id` <- SmallMoleculeEvidenceObject$`evidence_input_id`
      self$`database_identifier` <- SmallMoleculeEvidenceObject$`database_identifier`
      self$`chemical_formula` <- SmallMoleculeEvidenceObject$`chemical_formula`
      self$`smiles` <- SmallMoleculeEvidenceObject$`smiles`
      self$`inchi` <- SmallMoleculeEvidenceObject$`inchi`
      self$`chemical_name` <- SmallMoleculeEvidenceObject$`chemical_name`
      self$`uri` <- SmallMoleculeEvidenceObject$`uri`
      self$`derivatized_form` <- Parameter$new()$fromJSONString(jsonlite::toJSON(SmallMoleculeEvidenceObject$derivatized_form, auto_unbox = TRUE, null = "null", na = "null", digits = NA))
      self$`adduct_ion` <- SmallMoleculeEvidenceObject$`adduct_ion`
      self$`exp_mass_to_charge` <- SmallMoleculeEvidenceObject$`exp_mass_to_charge`
      self$`charge` <- SmallMoleculeEvidenceObject$`charge`
      self$`theoretical_mass_to_charge` <- SmallMoleculeEvidenceObject$`theoretical_mass_to_charge`
      self$`spectra_ref` <- ApiClient$new()$deserializeObj(SmallMoleculeEvidenceObject$`spectra_ref`, "array[SpectraRef]", loadNamespace("rmzTabM"))
      self$`identification_method` <- Parameter$new()$fromJSONString(jsonlite::toJSON(SmallMoleculeEvidenceObject$identification_method, auto_unbox = TRUE, null = "null", na = "null", digits = NA))
      self$`ms_level` <- Parameter$new()$fromJSONString(jsonlite::toJSON(SmallMoleculeEvidenceObject$ms_level, auto_unbox = TRUE, null = "null", na = "null", digits = NA))
      self$`id_confidence_measure` <- ApiClient$new()$deserializeObj(SmallMoleculeEvidenceObject$`id_confidence_measure`, "array[numeric]", loadNamespace("rmzTabM"))
      self$`rank` <- SmallMoleculeEvidenceObject$`rank`
      self$`opt` <- ApiClient$new()$deserializeObj(SmallMoleculeEvidenceObject$`opt`, "array[OptColumnMapping]", loadNamespace("rmzTabM"))
      self$`comment` <- ApiClient$new()$deserializeObj(SmallMoleculeEvidenceObject$`comment`, "array[Comment]", loadNamespace("rmzTabM"))
      self
    },
    #' @description Serialize to data frame
    toDataFrame = function() {
      fixed_header_values <- c(
        "SEH"=valueOrDefault(self$`prefix`, nullable = FALSE),
        "SME_ID"=valueOrDefault(self$`sme_id`, nullable = FALSE),	
        "evidence_input_id"=valueOrDefault(self$`evidence_input_id`, nullable = FALSE),
        "database_identifier"=valueOrDefault(self$`database_identifier`),
        "chemical_formula"=valueOrDefault(self$`chemical_formula`),
        "smiles"=valueOrDefault(self$`smiles`),
        "inchi"=valueOrDefault(self$`inchi`),
        "chemical_name"=valueOrDefault(self$`chemical_name`),
        "uri"=valueOrDefault(self$`uri`),
        "derivatized_form"=valueOrDefault(self$`derivatized_form`, FUN=function(x){x$toString()}),
        "adduct_ion"=valueOrDefault(self$`adduct_ion`),
        "exp_mass_to_charge"=valueOrDefault(self$`exp_mass_to_charge`, nullable = FALSE),
        "charge"=valueOrDefault(self$`charge`, nullable = FALSE),
        "theoretical_mass_to_charge"=valueOrDefault(self$`theoretical_mass_to_charge`, nullable = FALSE),
        "spectra_ref"=paste(unlist(lapply(self$`spectra_ref`, function(x) {
          valueOrDefault(x, FUN=function(y){y$toString()}, nullable = FALSE)
        })), collapse="|"),
        "identification_method"=valueOrDefault(self$`identification_method`, FUN=function(x){x$toString()}, nullable = FALSE),
        "ms_level"=valueOrDefault(self$`ms_level`, FUN=function(x){x$toString()}, nullable = FALSE)
      )
      
      id_confidence_measure <-
        unlist(lapply(seq_along(self$`id_confidence_measure`), function(idx, x) {
          paste0("id_confidence_measure[", idx, "]")
        }, x = self$`id_confidence_measure`))
      id_confidence_measure_values <-
        unlist(lapply(seq_along(self$`id_confidence_measure`), function(idx, x) {
          valueOrDefault(x)
        }, x = self$`id_confidence_measure`))
      names(id_confidence_measure_values) <- id_confidence_measure
      
      opt <-
        unlist(lapply(self$`opt`, function(x) {
          x$toString()
        }))
      opt_values <- 
        unlist(lapply(self$`opt`, function(x) {
          valueOrDefault(x$`value`)
        }))
      names(opt_values) <- opt
      entries <-
        as.data.frame(
          t(
            c(
              fixed_header_values,
              id_confidence_measure_values,
              "rank"=valueOrDefault(self$`rank`, nullable = FALSE),
              opt_values
            )
          )
        )
      entries
    },
    #' @description Deserialize from evidence data frame
    #' @param EvidenceDataFrame Evidence data frame
    fromDataFrame = function(EvidenceDataFrame) {
      stopifnot(nrow(EvidenceDataFrame)==1)
      columnNames <- colnames(EvidenceDataFrame)
      self$`prefix` <- "SME"
      self$`header_prefix` <- "SEH"
      if (rlang::has_name(EvidenceDataFrame, "sme_id")) {
        self$`sme_id` <- as.numeric(EvidenceDataFrame$`sme_id`)
      }
      if (rlang::has_name(EvidenceDataFrame, "SME_ID")) {
        self$`sme_id` <- as.numeric(EvidenceDataFrame$`SME_ID`)
      }
      if (rlang::has_name(EvidenceDataFrame, "evidence_input_id")) {
        self$`evidence_input_id` <- EvidenceDataFrame$`evidence_input_id`
      }
      if (rlang::has_name(EvidenceDataFrame, "database_identifier")) {
        self$`database_identifier` <- EvidenceDataFrame$`database_identifier`
      }
      if (rlang::has_name(EvidenceDataFrame, "chemical_formula")) {
        self$`chemical_formula` <- EvidenceDataFrame$`chemical_formula`
      }
      if (rlang::has_name(EvidenceDataFrame, "smiles")) {
        self$`smiles` <- EvidenceDataFrame$`smiles`
      }
      if (rlang::has_name(EvidenceDataFrame, "inchi")) {
        self$`inchi` <- EvidenceDataFrame$`inchi`
      }
      if (rlang::has_name(EvidenceDataFrame, "chemical_name")) {
        self$`chemical_name` <- EvidenceDataFrame$`chemical_name`
      }
      if (rlang::has_name(EvidenceDataFrame, "uri")) {
        self$`uri` <- EvidenceDataFrame$`uri`
      }
      if (rlang::has_name(EvidenceDataFrame, "derivatized_form")) {
        param <- Parameter$new()
        self$`derivatized_form` <- param$fromString(NULL, EvidenceDataFrame$`derivatized_form`)
      }
      if (rlang::has_name(EvidenceDataFrame, "adduct_ion")) {
        self$`adduct_ion` <- EvidenceDataFrame$`adduct_ion`
      }
      if (rlang::has_name(EvidenceDataFrame, "exp_mass_to_charge")) {
        self$`exp_mass_to_charge` <- as.numeric(EvidenceDataFrame$`exp_mass_to_charge`)
      }
      if (rlang::has_name(EvidenceDataFrame, "charge")) {
        self$`charge` <- as.numeric(EvidenceDataFrame$`charge`)
      }
      if (rlang::has_name(EvidenceDataFrame, "theoretical_mass_to_charge")) {
        self$`theoretical_mass_to_charge` <- as.numeric(EvidenceDataFrame$`theoretical_mass_to_charge`)
      }
      if (rlang::has_name(EvidenceDataFrame, "spectra_ref")) {
        refList <- splitList(EvidenceDataFrame$`spectra_ref`)
        self$`spectra_ref` <- lapply(refList, function(x) {
          sr <- SpectraRef$new()
          sr$fromString(x)
        })
      }
      if (rlang::has_name(EvidenceDataFrame, "identification_method")) {
        param <- Parameter$new()
        self$`identification_method` <- param$fromString(NULL, EvidenceDataFrame$`identification_method`)
      }
      if (rlang::has_name(EvidenceDataFrame, "ms_level")) {
        param <- Parameter$new()
        self$`ms_level` <- param$fromString(NULL, EvidenceDataFrame$`ms_level`)
      }
      id_confidence_measure_df <- EvidenceDataFrame %>% dplyr::select(dplyr::starts_with("id_confidence_measure"))
      if (!is.null(dim(id_confidence_measure_df)) && dim(id_confidence_measure_df)[1] > 0) {
        self$`id_confidence_measure` <- unlist(lapply(id_confidence_measure_df, function(x) {
          as.numeric(x)
        }))
      }
      
      if (rlang::has_name(EvidenceDataFrame, "rank")) {
        self$`rank` <- as.numeric(EvidenceDataFrame$`rank`)
      }
      # TODO opt handling
      # self$`opt` <- ApiClient$new()$deserializeObj(SmallMoleculeFeatureObject$`opt`, "array[OptColumnMapping]", loadNamespace("rmzTabM"))
      opt_cols <- EvidenceDataFrame %>% dplyr::select(dplyr::starts_with("opt_"))
      if (!is.null(dim(opt_cols)) && dim(opt_cols)[1] > 0) {
        warning("Handling of Optional columns not yet implemented")
      }
      
      if (rlang::has_name(EvidenceDataFrame, "comment")) {
        comment <- Comment$new()
        self$`comment` <- comment$fromDataFrame(EvidenceDataFrame$`comment`)
      }
      self
    }
  )
)
lifs-tools/rmzTab-m documentation built on Jan. 26, 2023, 4:45 p.m.