view DrawSpec.R @ 10:06b7a5815a1c draft

planemo upload for repository https://github.com/workflow4metabolomics/nmr_bucketing commit e936eab761415f9337f8b4ab0ff0337e27a5b090
author lecorguille
date Fri, 21 Apr 2017 09:08:00 -0400
parents 62c62e31fc80
children
line wrap: on
line source

drawSpec <- function (X, startP = -1, endP = -1, groupLabel = NULL, useLog = -1, highBound = -1, lowBound = -1, 
                      xlab = NULL, ylab = NULL, main = NULL, nAxisPos = 4, offside = 0) 
{
  groupLabel_name = groupLabel
  X = as.data.frame(X)
#  colnames(X) = c(1:ncol(X))
  X = as.matrix(X)
  if (highBound != -1) {
    for (i in 1:nrow(X)) {
      myIndex = which(X[i, ] > highBound)
      X[i, myIndex] = highBound
    }
  }
  if (lowBound != -1) {
    for (i in 1:nrow(X)) {
      myIndex = which(X[i, ] < lowBound)
      X[i, myIndex] = lowBound
    }
  }
  if (is.null(groupLabel)) {
    groupLabel = c(1:nrow(X))
    groupLabel = as.factor(groupLabel)
  }
  else {
    levels(groupLabel) = c(1:length(levels(groupLabel)))
  }
  if (startP == -1) 
    startP = 1
  if (endP == -1) 
    endP = ncol(X)
  if (is.null(xlab)) {
    xlab = "index"
  }
  if (is.null(ylab)) {
    ylab = "intensity"
  }
  if (is.null(main)) {
    main = paste(" ", startP + offside, "-", endP + offside)
  }
  GraphRange <- c(startP:endP)
  yn <- X[, GraphRange]
  if (useLog != -1) 
    yn = log(yn)
  if (length(yn) > ncol(X))
  {
    plot(yn[1, ], ylim = c(min(yn), max(yn)), type = "n", ylab = ylab, xlab = xlab, main = main, xaxt = "n")
    tempVal = trunc(length(GraphRange)/nAxisPos)
    xPos = c(0:nAxisPos) * tempVal
    axis(1, at = xPos, labels = colnames(X)[xPos + startP + offside])
    for (i in 1:length(levels(groupLabel))) 
    {
      groupLabelIdx = which(groupLabel == levels(groupLabel)[i])
      color <- palette(rainbow(length(levels(groupLabel))))
      for (j in 1:length(groupLabelIdx)) 
      {
        lines(yn[groupLabelIdx[j], ], col = color[i])
      }
    }
    if (!is.null(groupLabel_name)) 
    {
      legendPos = "topleft"
      legend(legendPos, levels(groupLabel_name), col = as.integer(levels(groupLabel)), text.col = "black", pch = c(19, 19), bg = "gray90")
    }
  }
  if (length(yn) == ncol(X))
  {
    plot(yn, ylim = c(min(yn), max(yn)), type = "n", ylab = ylab, xlab = xlab, main = main, xaxt = "n")
    tempVal = trunc(length(GraphRange)/nAxisPos)
    xPos = c(0:nAxisPos) * tempVal
#    axis(1, at = xPos, labels = xPos + startP + offside)
    axis(1, at = xPos, labels = colnames(X)[xPos + startP + offside])
    lines(yn)
  }
}