R/Utils_adduct_rules.R

Defines functions adduct_rules adduct_rules_pos adduct_rules_neg get_adduct_names

Documented in adduct_rules adduct_rules_neg adduct_rules_pos get_adduct_names

#' @title Create list with all adduct calculation rules (all rules)
#' 
#' This function returns a list with rules for the calculation of adducts. It is required for the calculation of adduct m/z values from exact masses and the other way round. This list contains all rules for both ionization modes.
#' 
#' 
#' @author Michael Witting, \email{michael.witting@@helmholtz-muenchen.de}
#'
#' @seealso \code{\link{adduct_rules_pos}}
#' @seealso \code{\link{adduct_rules_neg}}
#' @seealso \code{\link{get_adduct_names}}
#'
#' @export
adduct_rules <- function() {
  
  ## create list with all the adduct definitoins
  adduct_list <- list(
    '[M+3H]3+'      = list(mass_multi = 1 / 3,
                           mass_add = 3 * rcdk::get.formula('H', charge = 1)@mass / 3,
                           formula_add = 'H3',
                           formula_sub = 'C0',
                           charge = 3),
    '[M+2H+Na]3+'   = list(mass_multi = 1 / 3,
                           mass_add = (2 * rcdk::get.formula('H', charge = 1)@mass + 1 * rcdk::get.formula('Na', charge = 1)@mass) / 3,
                           formula_add = 'H2Na',
                           formula_sub = 'C0',
                           charge = 3),
    '[M+H+Na2]3+'   = list(mass_multi = 1 / 3,
                           mass_add = (1 * rcdk::get.formula('H', charge = 1)@mass + 2 * rcdk::get.formula('Na', charge = 1)@mass) / 3,
                           formula_add = 'HNa2',
                           formula_sub = 'C0',
                           charge = 3),
    '[M+Na3]3+'     = list(mass_multi = 1 / 3,
                           mass_add = (3 * rcdk::get.formula('Na', charge = 1)@mass) / 3,
                           formula_add = 'Na3',
                           formula_sub = 'C0',
                           charge = 3),
    '[M+2H]2+'      = list(mass_multi = 1 / 2,
                           mass_add = 2 * rcdk::get.formula('H', charge = 1)@mass / 2,
                           formula_add = 'H2',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+H+NH4]2+'   = list(mass_multi = 1 / 2,
                           mass_add = (rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('NH4', charge = 1)@mass) / 2,
                           formula_add = 'NH5',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+H+K]2+'     = list(mass_multi = 1 / 2,
                           mass_add = (rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('K', charge = 1)@mass) / 2,
                           formula_add = 'HK',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+H+Na]2+'    = list(mass_multi = 1 / 2,
                           mass_add = (rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('Na', charge = 1)@mass) / 2,
                           formula_add = 'HNa',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+ACN+2H]2+'  = list(mass_multi = 1 / 2,
                           mass_add = (2 * rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('C2H3N', charge = 0)@mass) / 2,
                           formula_add = 'C2H5N',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+2Na]2+'     = list(mass_multi = 1 / 2,
                           mass_add = 2 * rcdk::get.formula('Na', charge = 1)@mass / 2,
                           formula_add = 'Na2',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+2ACN+2H]2+' = list(mass_multi = 1 / 2,
                           mass_add = (2 * rcdk::get.formula('H', charge = 1)@mass + 2 * rcdk::get.formula('C2H3N', charge = 0)@mass) / 2,
                           formula_add = 'C4H8N2',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+3ACN+2H]2+' = list(mass_multi = 1 / 2,
                           mass_add = (2 * rcdk::get.formula('H', charge = 1)@mass + 3 * rcdk::get.formula('C2H3N', charge = 0)@mass) / 2,
                           formula_add = 'C6H11N3',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+H]+'        = list(mass_multi = 1,
                           mass_add =  rcdk::get.formula('H', charge = 1)@mass,
                           formula_add = 'H',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+NH4]+'      = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('NH4', charge = 1)@mass,
                           formula_add = 'NH4',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+Na]+'       = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('Na', charge = 1)@mass,
                           formula_add = 'Na',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+CH3OH+H]+'  = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('CH4O', charge = 0)@mass,
                           formula_add = 'Na',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+K]+'        = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('K', charge = 1)@mass,
                           formula_add = 'K',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+ACN+H]+'    = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('C2H3N', charge = 0)@mass,
                           formula_add = 'C2H4N',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+2Na-H]+'    = list(masS_multi = 1,
                           mass_add = 2 * rcdk::get.formula('Na', charge = 1)@mass - rcdk::get.formula('H', charge = 1)@mass,
                           formula_add = 'Na2',
                           formula_sub = 'H',
                           charge = 1),
    '[M+iPrOH+H]+'  = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('C3H8O', charge = 0)@mass,
                           formula_add = 'C3H9O',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+ACN+Na]+'   = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('Na', charge = 1)@mass + rcdk::get.formula('C2H3N', charge = 0)@mass,
                           formula_add = 'C2H3NNa',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+2K-H]+'     = list(mass_multi = 1,
                           mass_add = 2 * rcdk::get.formula('K', charge = 1)@mass - rcdk::get.formula('H', charge = 1)@mass,
                           formula_add = 'K2',
                           formula_sub = 'H',
                           charge = 1),
    '[M+DMSO+H]+'   = list(mass_multi = 1,
                           masS_add = rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('C2H6OS', charge = 0)@mass,
                           formula_add = 'C2H7OS',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+2ACN+H]+'   = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('H', charge = 1)@mass + 2 * rcdk::get.formula('C2H3N', charge = 0)@mass,
                           formula_add = 'C2H4N',
                           formula_sub = 'C0',
                           charge = 1),
    '[2M+H]+'       = list(mass_multi = 2,
                           mass_add = rcdk::get.formula('H', charge = 1)@mass,
                           formula_add = 'H',
                           formula_sub = 'C0',
                           charge = 1),
    '[2M+NH4]+'     = list(mass_multi = 2,
                           mass_add = rcdk::get.formula('NH4', charge = 1)@mass,
                           formula_add = 'NH4',
                           formula_sub = 'C0',
                           charge = 1),
    '[2M+Na]+'      = list(mass_multi = 2,
                           mass_add = rcdk::get.formula('Na', charge = 1)@mass,
                           formula_add = 'Na',
                           formula_sub = 'C0',
                           charge = 1),
    '[2M+K]+'       = list(mass_multi = 2,
                           mass_add = rcdk::get.formula('K', charge = 1)@mass,
                           formula_add = 'K',
                           formula_sub = 'C0',
                           charge = 1),
    '[2M+ACN+H]+'   = list(mass_multi = 2,
                           mass_add = rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('C2H3N', charge = 0)@mass,
                           formula_add = 'C2H4N',
                           formula_sub = 'C0',
                           charge = 1),
    '[2M+ACN+Na]+'  = list(mass_multi = 2,
                           mass_add = rcdk::get.formula('Na', charge = 1)@mass + rcdk::get.formula('C2H3N', charge = 0)@mass,
                           formula_add = 'C2H3NNa',
                           formula_sub = 'C0',
                           charge = 1),
    '[M-3H]3-'      = list(mass_multi = 1 / 3,
                           mass_add = - 3 * rcdk::get.formula('H', charge = 1)@mass / 3,
                           formula_add = 'C0',
                           formula_sub = 'H3',
                           charge = -3),
    '[M-2H]2-'      = list(mass_multi = 1 / 2,
                           mass_add = - 2 * rcdk::get.formula('H', charge = 1)@mass / 2,
                           formula_add = 'C0',
                           formula_sub = 'H2',
                           charge = -2),
    '[M-H]-'        = list(mass_multi = 1 ,
                           mass_add = - rcdk::get.formula('H', charge = 1)@mass,
                           formula_add = 'C0',
                           formula_sub = 'H',
                           charge = -1),
    '[M+Na-2H]-'    = list(mass_multi = 1,
                           mass_add = - 2 * rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('Na', charge = 1)@mass,
                           formula_add = 'Na',
                           formula_sub = 'H2',
                           charge = -1),
    '[M+Cl]-'       = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('Cl', charge = -1)@mass,
                           formula_add = 'Cl',
                           formula_sub = 'C0',
                           charge = -1),
    '[M+K-2H]-'     = list(mass_multi = 1,
                           mass_add = - 2 * rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('K', charge = 1)@mass,
                           formula_add = 'K',
                           formula_sub = 'H2',
                           charge = -1),
    '[M+FA-H]-'     = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('CHO2', charge = -1)@mass,
                           formula_add = 'CHO2',
                           formula_sub = 'C0',
                           charge = -1),
    '[M+HAc-H]-'    = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('C2H3O2', charge = -1)@mass,
                           formula_add = 'C2H3O2',
                           formula_sub = 'C0',
                           charge = -1),
    '[M+Br]-'       = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('Br', charge = -1)@mass,
                           formula_add = 'Br',
                           formula_sub = 'C0',
                           charge = -1),
    '[M+TFA-H]-'     = list(mass_multi = 1,
                            mass_add = rcdk::get.formula('C2F3O2', charge = -1)@mass,
                            formula_add = 'C2F3O2',
                            formula_sub = 'C0',
                            charge = -1),
    '[2M+FA-H]-'     = list(mass_multi = 2,
                            mass_add = rcdk::get.formula('CHO2', charge = -1)@mass,
                            formula_add = 'CHO2',
                            formula_sub = 'C0',
                            charge = -1),
    '[2M+HAc-H]-'    = list(mass_multi = 2,
                            mass_add = rcdk::get.formula('C2H3O2', charge = -1)@mass,
                            formula_add = 'C2H3O2',
                            formula_sub = 'C0',
                            charge = -1),
    '3[M-H]-'      = list(mass_multi = 3 ,
                          mass_add = - rcdk::get.formula('H', charge = 1)@mass,
                          formula_add = 'C0',
                          formula_sub = 'H',
                          charge = -1))
  
  ## return values
  return(adduct_list)
  
}


#' @title Create list with all adduct calculation rules (positive ionisation)
#' 
#' This function returns a list with rules for the calculation of adducts. It is required for the calculation of adduct m/z values from exact masses and the other way round. This list contains all rules for the positive ionization mode.
#' 
#' 
#' @author Michael Witting, \email{michael.witting@@helmholtz-muenchen.de}
#'
#' @seealso \code{\link{adduct_rules}}
#' @seealso \code{\link{adduct_rules_neg}}
#' @seealso \code{\link{get_adduct_names}}
#'
#' @export
adduct_rules_pos <- function() {
  
  ## create list with all the adduct definitoins
  adduct_list <- list(
    '[M+3H]3+'      = list(mass_multi = 1 / 3,
                           mass_add = 3 * rcdk::get.formula('H', charge = 1)@mass / 3,
                           formula_add = 'H3',
                           formula_sub = 'C0',
                           charge = 3),
    '[M+2H+Na]3+'   = list(mass_multi = 1 / 3,
                           mass_add = (2 * rcdk::get.formula('H', charge = 1)@mass + 1 * rcdk::get.formula('Na', charge = 1)@mass) / 3,
                           formula_add = 'H2Na',
                           formula_sub = 'C0',
                           charge = 3),
    '[M+H+Na2]3+'   = list(mass_multi = 1 / 3,
                           mass_add = (1 * rcdk::get.formula('H', charge = 1)@mass + 2 * rcdk::get.formula('Na', charge = 1)@mass) / 3,
                           formula_add = 'HNa2',
                           formula_sub = 'C0',
                           charge = 3),
    '[M+Na3]3+'     = list(mass_multi = 1 / 3,
                           mass_add = (3 * rcdk::get.formula('Na', charge = 1)@mass) / 3,
                           formula_add = 'Na3',
                           formula_sub = 'C0',
                           charge = 3),
    '[M+2H]2+'      = list(mass_multi = 1 / 2,
                           mass_add = 2 * rcdk::get.formula('H', charge = 1)@mass / 2,
                           formula_add = 'H2',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+H+NH4]2+'   = list(mass_multi = 1 / 2,
                           mass_add = (rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('NH4', charge = 1)@mass) / 2,
                           formula_add = 'NH5',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+H+K]2+'     = list(mass_multi = 1 / 2,
                           mass_add = (rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('K', charge = 1)@mass) / 2,
                           formula_add = 'HK',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+H+Na]2+'    = list(mass_multi = 1 / 2,
                           mass_add = (rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('Na', charge = 1)@mass) / 2,
                           formula_add = 'HNa',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+ACN+2H]2+'  = list(mass_multi = 1 / 2,
                           mass_add = (2 * rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('C2H3N', charge = 0)@mass) / 2,
                           formula_add = 'C2H5N',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+2Na]2+'     = list(mass_multi = 1 / 2,
                           mass_add = 2 * rcdk::get.formula('Na', charge = 1)@mass / 2,
                           formula_add = 'Na2',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+2ACN+2H]2+' = list(mass_multi = 1 / 2,
                           mass_add = (2 * rcdk::get.formula('H', charge = 1)@mass + 2 * rcdk::get.formula('C2H3N', charge = 0)@mass) / 2,
                           formula_add = 'C4H8N2',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+3ACN+2H]2+' = list(mass_multi = 1 / 2,
                           mass_add = (2 * rcdk::get.formula('H', charge = 1)@mass + 3 * rcdk::get.formula('C2H3N', charge = 0)@mass) / 2,
                           formula_add = 'C6H11N3',
                           formula_sub = 'C0',
                           charge = 2),
    '[M+H]+'        = list(mass_multi = 1,
                           mass_add =  rcdk::get.formula('H', charge = 1)@mass,
                           formula_add = 'H',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+NH4]+'      = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('NH4', charge = 1)@mass,
                           formula_add = 'NH4',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+Na]+'       = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('Na', charge = 1)@mass,
                           formula_add = 'Na',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+CH3OH+H]+'  = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('CH4O', charge = 0)@mass,
                           formula_add = 'Na',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+K]+'        = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('K', charge = 1)@mass,
                           formula_add = 'K',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+ACN+H]+'    = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('C2H3N', charge = 0)@mass,
                           formula_add = 'C2H4N',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+2Na-H]+'    = list(masS_multi = 1,
                           mass_add = 2 * rcdk::get.formula('Na', charge = 1)@mass - rcdk::get.formula('H', charge = 1)@mass,
                           formula_add = 'Na2',
                           formula_sub = 'H',
                           charge = 1),
    '[M+iPrOH+H]+'  = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('C3H8O', charge = 0)@mass,
                           formula_add = 'C3H9O',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+ACN+Na]+'   = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('Na', charge = 1)@mass + rcdk::get.formula('C2H3N', charge = 0)@mass,
                           formula_add = 'C2H3NNa',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+2K-H]+'     = list(mass_multi = 1,
                           mass_add = 2 * rcdk::get.formula('K', charge = 1)@mass - rcdk::get.formula('H', charge = 1)@mass,
                           formula_add = 'K2',
                           formula_sub = 'H',
                           charge = 1),
    '[M+DMSO+H]+'   = list(mass_multi = 1,
                           masS_add = rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('C2H6OS', charge = 0)@mass,
                           formula_add = 'C2H7OS',
                           formula_sub = 'C0',
                           charge = 1),
    '[M+2ACN+H]+'   = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('H', charge = 1)@mass + 2 * rcdk::get.formula('C2H3N', charge = 0)@mass,
                           formula_add = 'C2H4N',
                           formula_sub = 'C0',
                           charge = 1),
    '[2M+H]+'       = list(mass_multi = 2,
                           mass_add = rcdk::get.formula('H', charge = 1)@mass,
                           formula_add = 'H',
                           formula_sub = 'C0',
                           charge = 1),
    '[2M+NH4]+'     = list(mass_multi = 2,
                           mass_add = rcdk::get.formula('NH4', charge = 1)@mass,
                           formula_add = 'NH4',
                           formula_sub = 'C0',
                           charge = 1),
    '[2M+Na]+'      = list(mass_multi = 2,
                           mass_add = rcdk::get.formula('Na', charge = 1)@mass,
                           formula_add = 'Na',
                           formula_sub = 'C0',
                           charge = 1),
    '[2M+K]+'       = list(mass_multi = 2,
                           mass_add = rcdk::get.formula('K', charge = 1)@mass,
                           formula_add = 'K',
                           formula_sub = 'C0',
                           charge = 1),
    '[2M+ACN+H]+'   = list(mass_multi = 2,
                           mass_add = rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('C2H3N', charge = 0)@mass,
                           formula_add = 'C2H4N',
                           formula_sub = 'C0',
                           charge = 1),
    '[2M+ACN+Na]+'  = list(mass_multi = 2,
                           mass_add = rcdk::get.formula('Na', charge = 1)@mass + rcdk::get.formula('C2H3N', charge = 0)@mass,
                           formula_add = 'C2H3NNa',
                           formula_sub = 'C0',
                           charge = 1)
    )
  
  ## return values
  return(adduct_list)
  
}

#' @title Create list with all adduct calculation rules (negative ion model)
#' 
#' This function returns a list with rules for the calculation of adducts. It is required for the calculation of adduct m/z values from exact masses and the other way round. This list contains all rules for the negative ionization mode.
#' 
#' 
#' @author Michael Witting, \email{michael.witting@@helmholtz-muenchen.de}
#'
#' @seealso \code{\link{adduct_rules}}
#' @seealso \code{\link{adduct_rules_pos}}
#' @seealso \code{\link{get_adduct_names}}
#'
#' @export
adduct_rules_neg <- function() {
  
  ## create list with all the adduct definitoins
  adduct_list <- list(
    '[M-3H]3-'      = list(mass_multi = 1 / 3,
                           mass_add = - 3 * rcdk::get.formula('H', charge = 1)@mass / 3,
                           formula_add = 'C0',
                           formula_sub = 'H3',
                           charge = -3),
    '[M-2H]2-'      = list(mass_multi = 1 / 2,
                           mass_add = - 2 * rcdk::get.formula('H', charge = 1)@mass / 2,
                           formula_add = 'C0',
                           formula_sub = 'H2',
                           charge = -2),
    '[M-H]-'        = list(mass_multi = 1 ,
                           mass_add = - rcdk::get.formula('H', charge = 1)@mass,
                           formula_add = 'C0',
                           formula_sub = 'H',
                           charge = -1),
    '[M+Na-2H]-'    = list(mass_multi = 1,
                           mass_add = - 2 * rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('Na', charge = 1)@mass,
                           formula_add = 'Na',
                           formula_sub = 'H2',
                           charge = -1),
    '[M+Cl]-'       = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('Cl', charge = -1)@mass,
                           formula_add = 'Cl',
                           formula_sub = 'C0',
                           charge = -1),
    '[M+K-2H]-'     = list(mass_multi = 1,
                           mass_add = - 2 * rcdk::get.formula('H', charge = 1)@mass + rcdk::get.formula('K', charge = 1)@mass,
                           formula_add = 'K',
                           formula_sub = 'H2',
                           charge = -1),
    '[M+FA-H]-'     = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('CHO2', charge = -1)@mass,
                           formula_add = 'CHO2',
                           formula_sub = 'C0',
                           charge = -1),
    '[M+HAc-H]-'    = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('C2H3O2', charge = -1)@mass,
                           formula_add = 'C2H3O2',
                           formula_sub = 'C0',
                           charge = -1),
    '[M+Br]-'       = list(mass_multi = 1,
                           mass_add = rcdk::get.formula('Br', charge = -1)@mass,
                           formula_add = 'Br',
                           formula_sub = 'C0',
                           charge = -1),
    '[M+TFA-H]-'     = list(mass_multi = 1,
                            mass_add = rcdk::get.formula('C2F3O2', charge = -1)@mass,
                            formula_add = 'C2F3O2',
                            formula_sub = 'C0',
                            charge = -1),
    '[2M+FA-H]-'     = list(mass_multi = 2,
                            mass_add = rcdk::get.formula('CHO2', charge = -1)@mass,
                            formula_add = 'CHO2',
                            formula_sub = 'C0',
                            charge = -1),
    '[2M+HAc-H]-'    = list(mass_multi = 2,
                            mass_add = rcdk::get.formula('C2H3O2', charge = -1)@mass,
                            formula_add = 'C2H3O2',
                            formula_sub = 'C0',
                            charge = -1),
    '[3M-H]-'      = list(mass_multi = 3 ,
                          mass_add = - rcdk::get.formula('H', charge = 1)@mass,
                          formula_add = 'C0',
                          formula_sub = 'H',
                          charge = -1))
  
  ## return values
  return(adduct_list)
  
}

#' @title Return current adduct naming
#' 
#' This function returns either all or only positive or negative ionization mode adduct names used in this package.
#' 
#' @param mode Ionization mode for which the adduct names shall be returned, either \code{all}, \code{positive} or \code{negative}
#' 
#' 
#' @author Michael Witting, \email{michael.witting@@helmholtz-muenchen.de}
#'
#' @seealso \code{\link{adduct_rules}}
#' @seealso \code{\link{adduct_rules_pos}}
#' @seealso \code{\link{adduct_rules_neg}}
#'
#' @export
get_adduct_names <- function(mode = c("all", "positive", "negative")) {
  
  # get adduct lists
  adduct_list_neg <- adduct_rules_neg()
  adduct_list_pos <- adduct_rules_pos()
  
  if(mode == "all") {
    
    return(c(names(adduct_list_neg), names(adduct_list_pos)))
    
  } else if(mode == "positive") {
    
    return(names(adduct_list_pos))
    
  } else if(mode == "negative") {
    
    return(names(adduct_list_neg))
    
  }
}
michaelwitting/metabolomicsUtils documentation built on Nov. 9, 2019, 10:44 a.m.