R/peakBlend.R

Defines functions peakBlend

Documented in peakBlend

#'Peak Blender
#'
#'combines overlapping peaks in a given peak dataframe
#'
#' @param SUMpeaks.data a peak dataframe
#'
#' @return a new peak dataframe with combined peaks at overlapping areas
#'
#' @examples
#' peaks.data = peakBlend(SUMpeaks.data)
#'
#' @export
peakBlend <- function(SUMpeaks.data){
  i=1
  length = dim(SUMpeaks.data)[1]
  while(i < length)
  {
    SUMpeaks.data[i,2] = as.numeric(as.character(SUMpeaks.data[i,2]))
    SUMpeaks.data[i,3] = as.numeric(as.character(SUMpeaks.data[i,3]))
    SUMpeaks.data[i+1,2] = as.numeric(as.character(SUMpeaks.data[i+1,2]))
    SUMpeaks.data[i,3] = as.numeric(as.character(SUMpeaks.data[i,3]))


    if(as.numeric(SUMpeaks.data[i,3]) >= as.numeric(SUMpeaks.data[i+1,2]))
    {
      while(as.numeric(SUMpeaks.data[i,3]) >= as.numeric(SUMpeaks.data[i+1,2]) & i != dim(SUMpeaks.data)[1])
      {
        if(as.numeric(SUMpeaks.data[i,3]) > as.numeric(SUMpeaks.data[i+1,3]))
        {
          if(as.numeric(SUMpeaks.data[i,2]) <= as.numeric(SUMpeaks.data[i+1,2]))
          {
            if(SUMpeaks.data[i,4] == "B" | SUMpeaks.data[i+1,4] == "B")
            {
              SUMpeaks.data[i,4] = "B"
            }
            else if(SUMpeaks.data[i,4] != SUMpeaks.data[i+1,4])
            {
              SUMpeaks.data[i,4] = "B"
            }
            SUMpeaks.data <- SUMpeaks.data[-(i+1),]
            length = dim(SUMpeaks.data)[1]

          }
          else if (as.numeric(SUMpeaks.data[i,2]) >= as.numeric(SUMpeaks.data[i+1,2]))
          {
            if(as.numeric(SUMpeaks.data[i,2]) <= as.numeric(SUMpeaks.data[i+1,3]))
            {
              if(SUMpeaks.data[i,4] == "B" | SUMpeaks.data[i+1,4] == "B")
              {
                SUMpeaks.data[i,4] = "B"
              }
              else if(SUMpeaks.data[i,4] != SUMpeaks.data[i+1,4])
              {
                SUMpeaks.data[i,4] = "B"
              }
              SUMpeaks.data[i,2] = SUMpeaks.data[i+1,2]
              SUMpeaks.data <- SUMpeaks.data[-(i+1),]
              length = dim(SUMpeaks.data)[1]

            }

          }

        }
        else if(as.numeric(SUMpeaks.data[i,3]) <= as.numeric(SUMpeaks.data[i+1,3]))
        {
          if(as.numeric(SUMpeaks.data[i,2]) < as.numeric(SUMpeaks.data[i+1,2]))
          {
            if(SUMpeaks.data[i,4] == "B" | SUMpeaks.data[i+1,4] == "B")
            {
              SUMpeaks.data[i,4] = "B"
            }
            else if(SUMpeaks.data[i,4] != SUMpeaks.data[i+1,4])
            {
              SUMpeaks.data[i,4] = "B"
            }
            SUMpeaks.data[i,3] = SUMpeaks.data[i+1,3]
            SUMpeaks.data <- SUMpeaks.data[-(i+1),]
            length = dim(SUMpeaks.data)[1]

          }
          else if(as.numeric(SUMpeaks.data[i,2]) >= as.numeric(SUMpeaks.data[i+1,2]))
          {
            if(SUMpeaks.data[i,4] == "B" | SUMpeaks.data[i+1,4] == "B")
            {
              SUMpeaks.data[i+1,4] = "B"
            }
            else if(SUMpeaks.data[i,4] != SUMpeaks.data[i+1,4])
            {
              SUMpeaks.data[i+1,4] = "B"
            }
            SUMpeaks.data <- SUMpeaks.data[-(i),]
            length = dim(SUMpeaks.data)[1]
          }

        }
      }
      i = i + 1
    }
    else if(as.numeric(SUMpeaks.data[i,3]) < as.numeric(SUMpeaks.data[i+1,2]))
    {
      i = i + 1

    }
  }
  return(SUMpeaks.data)

}
samissimas/ciceroAddition documentation built on Aug. 10, 2019, 12:02 a.m.