fileNames = c( paste('simulationsText','succinateInfectedSimulation.txt', sep= .Platform$file.sep), paste('simulationsText','acetateInfectedSimulation.txt', sep= .Platform$file.sep), paste('simulationsText','glucoseInfectedSimulation.txt', sep= .Platform$file.sep), paste('simulationsText','tryptoneInfectedSimulation.txt', sep= .Platform$file.sep) ) options( warn = 1 ) mediaLegend <- c('Succinate', 'Acetate','Glucose','Tryptone') # key time point at which either a reference line is plotted on sparks, or flux value is converted to arrow width tIdx = 1 # plotting parameters totalScaleUnits = 30 arrowsBarbAngle = 30 arrowsBarbLength = 0.25 textSize = 8 zeroThresh = 1e-5 # colsSparks <- c('mediumorchid3','orange1') colsSparks <- c('darkgoldenrod1','olivedrab3','steelblue3','coral3') colsClusters <- c('goldenrod1', 'mediumorchid3','firebrick1','olivedrab3', 'cadetblue4', 'dodgerblue3', 'thistle3', 'seagreen3', 'snow4', 'cyan4', 'springgreen3', 'violetred4','midnightblue','chocolate4') # ,, 'darkorange2' colLowSpark <- 'grey50' colHighSpark <- 'grey50' # plot type # 1 is with varrying arrow weights, 2 is a map with equal arrow weights, 3 colors arrows by cluster plotType = 2 sparkFlag <- TRUE sparkScaleFlag <- TRUE normSparkFlag <- TRUE upFlag <- FALSE # ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ # ^ user input & parameter tweaks above here above here ^ # basic preparations # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # read in data # dataTable <- read.table(fileName, sep='\t', header = TRUE) # get subset of table with values for host (such as fluxes) # hostTable <- subset(dataTable, hostFlag == 1) # remove eventually nSim <- length( fileNames ) hostList <- list() # for( i in 1:nSim){ # read in data dataTableTemp <- read.table(fileNames[i], sep='\t', header = TRUE) hostTableTemp <- subset(dataTableTemp, hostFlag == 1) hostList[i] <- list( hostTableTemp ) } # library load library(grid) # open graphics device # postscript(file = "figure6",horizontal = FALSE, paper = "letter", family = "Courier") # pdf(file = "testFluxPlotterPrototypePdfOut2", paper = "letter", family = "Courier") # pdf(file='figure6.pdf', height=7.5, width=7.5, onefile=TRUE, family='Courier') postscript(paste('figureOutput',"figure6a_18cm_width.eps", sep= .Platform$file.sep), width = 6.8, height = 6.8, horizontal = FALSE, onefile = FALSE, paper = "special", pointsize = 8) # , family='Courier' # plotting viewport pushViewport( viewport(width=unit(6.6,"inches"),height=unit(6.6,"inches"), name = 'plotViewport', xscale = c(0,totalScaleUnits), yscale = c(0,totalScaleUnits) ) ) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - gpText <- gpar(fontsize = textSize) # , just = c("centre", "centre") # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - allShift <- 3 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - xGlycolysis = 5 + allShift xLowerGlycolysis = xGlycolysis yG6P = 24 xTCA = xLowerGlycolysis + 2 yTCA = 4.5 rTCA = 3 wSparkLines <- 1 hSparkLines <- 0.5 xPP <- xGlycolysis + 5 yPP = yG6P - 2 xAA1 <- 14 + allShift sAA <- 1.5 yAA <- yTCA-rTCA/3 - 2*sAA yGLT <- yTCA-rTCA/3 yASP <- yTCA+rTCA*5/6 + 1 xAA2 <- 17.5 + allShift ySER <- yG6P - 9 yTYR <- yG6P - 11 yPYR <- yG6P - 13 xMembrane <- xGlycolysis - 5.5 yMembrane <- yG6P - 2 - 4*sAA sSL <- 0.25 dNT <- 1.5*sAA sNT <- 1.25*sAA yNT <- yPP - sNT + 2 xNT <- xAA2 + 0.5 yT7 <- 3.5 xT7 <- 29 sT7 <- 2 vS <- 0.25 hS <- 0.25 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # subfunctions # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sparkLine <- function( xLocationSpark, yLocationSpark, wSpark, hSpark, xValuesSpark, yValuesSpark, idxKeySpark = 1, cexSpark = 0.4 ) { # should the unit conversions occur in here? or be passed? xValuesSpark <- xValuesSpark[[1]] yValuesSpark <- yValuesSpark[[1]] # this is the "inital" value where the dotted line will be placed, with values above in green and below in red oSpark <- yValuesSpark[idxKeySpark ] # ranges to use in axes for sparkline, extend slightly from data to avoid rough edges produced by clipping xRangeSpark <- xValuesSpark[length(xValuesSpark)] - xValuesSpark[1] xScaleSpark <- c(xValuesSpark[1], xValuesSpark[length(xValuesSpark)]+xRangeSpark*0.05) yRangeSpark <- max(yValuesSpark)-min(yValuesSpark) zeroThreshSparkRange <- 1e-9 sparkON <- TRUE if ( abs(yRangeSpark) > zeroThreshSparkRange ){ yScaleSpark <- c( min(yValuesSpark)-0.1*yRangeSpark, max(yValuesSpark)+0.1*yRangeSpark ) } else { yScaleSpark <- c( (oSpark - 1/2), (oSpark + 1/2) ) yRangeSpark <- 1 sparkON <- FALSE } if( sparkON ){ # total sprkline viewport pushViewport( viewport( width = unit( wSpark ,"native"), height = unit( hSpark ,"native"), y = unit( yLocationSpark ,"native"), x = unit( xLocationSpark ,"native"), name = 'sparkViewport', xscale = xScaleSpark, yscale = yScaleSpark, just = c("left", "bottom"), gp = gpar( cex = cexSpark ))) if( sparkScaleFlag ){ allTick <- pretty( yValuesSpark ) if( (allTick[ length(allTick) ] - allTick[1]) < 1.5*yRangeSpark ){ grid.yaxis( at = c(allTick[1], allTick[ length(allTick) ] )) # at = c(-1, 1) } else{ grid.yaxis( at = c(yScaleSpark[1], yScaleSpark[2] )) } } # upper viewport & plotting of values that are above the initial pushViewport( viewport( width = unit( (xScaleSpark[2] - xScaleSpark[1]),"native"), height = unit( (yScaleSpark[2]-oSpark) ,"native"), y = unit( oSpark ,"native"), x = unit( xScaleSpark[1] ,"native"), name = 'sparkUpViewport', xscale = xScaleSpark, yscale = c(oSpark, yScaleSpark[2]), just = c("left", "bottom"), clip = "on")) grid.lines( x = unit( xValuesSpark, "native" ), y = unit( yValuesSpark, "native" ) , gp = gpar(col = colHighSpark)) popViewport() # lower viewport & plotting of values that are below the initial pushViewport( viewport( width = unit( (xScaleSpark[2] - xScaleSpark[1]),"native"), height = unit( (oSpark-yScaleSpark[1]) ,"native"), y = unit( yScaleSpark[1] ,"native"), x = unit( xScaleSpark[1] ,"native"), name = 'sparkLowViewport', xscale = xScaleSpark, yscale = c( yScaleSpark[1],oSpark), just = c("left", "bottom"), clip = "on")) grid.lines( x = unit( xValuesSpark, "native" ), y = unit( yValuesSpark, "native" ) , gp = gpar(col = colLowSpark)) popViewport() # "mid" viewport, plotting of vales considered to be at the inital midHeight = convertUnit( unit(1, 'points'), 'native', valueOnly = TRUE, axisFrom = "y", typeFrom = "dimension" ) pushViewport( viewport( width = unit( (xScaleSpark[2] - xScaleSpark[1]),"native"), height = unit( midHeight ,"native"), y = unit( oSpark ,"native"), x = unit( xScaleSpark[1] ,"native"), name = 'sparkMidViewport', xscale = xScaleSpark, yscale = c( oSpark-midHeight/2, oSpark+midHeight/2), just = c("left", "center"), clip = "on")) grid.lines( x = unit( xValuesSpark, "native" ), y = unit( yValuesSpark, "native" ) , gp=gpar(col = "gray47")) popViewport() # dotted line at initial value grid.lines( x = unit( xScaleSpark, "native" ), y = unit(c(oSpark, oSpark), "native" ), gp=gpar(col = "gray47",lty="dotted") ) # grid.yaxis() popViewport() } } sparkLineMulti <- function( xLocationSpark, yLocationSpark, wSpark, hSpark, xValuesSpark, yValuesSpark, colorSparks, idxKeySpark = 1, cexSpark = 0.6 ) { # xValuesSpark will be a list, find length (assume ySPark Values will have the same length) nSparks = length( xValuesSpark ) zeroThreshSparkRange <- 1e-10 # rescale sparks if flagged if( normSparkFlag ){ for(iSpark in 1:nSparks){ yValuesSpark[[iSpark]] <- yValuesSpark[[iSpark]] - yValuesSpark[[iSpark]][2] maxMagnitude <- max( abs( yValuesSpark[[iSpark]] ) ) if( maxMagnitude > zeroThreshSparkRange ) yValuesSpark[[iSpark]] <- yValuesSpark[[iSpark]] / maxMagnitude } } # find max & min values for axes yValuesSparkMax <- max( unlist(yValuesSpark) ) yValuesSparkMin <- min( unlist(yValuesSpark) ) xValuesSparkMax <- max( unlist(xValuesSpark) ) xValuesSparkMin <- min( unlist(xValuesSpark) ) # print( yValuesSparkMax ) # print( yValuesSparkMin ) # ranges to use in axes for sparkline, extend slightly from data to avoid rough edges produced by clipping xRangeSpark <- xValuesSparkMax - xValuesSparkMin xScaleSpark <- c(xValuesSparkMin, xValuesSparkMax + xRangeSpark*0.05) yRangeSpark <- yValuesSparkMax - yValuesSparkMin sparkON <- TRUE if ( abs(yRangeSpark) > zeroThreshSparkRange ){ yScaleSpark <- c( yValuesSparkMin-0.1*yRangeSpark, yValuesSparkMax+0.1*yRangeSpark ) } else { yScaleSpark <- c( (yValuesSparkMin - 1/2), (yValuesSparkMin + 1/2) ) yRangeSpark <- 1 sparkON <- TRUE } if( sparkON ){ # total sprkline viewport pushViewport( viewport( width = unit( wSpark ,"native"), height = unit( hSpark ,"native"), y = unit( yLocationSpark ,"native"), x = unit( xLocationSpark ,"native"), name = 'sparkViewport', xscale = xScaleSpark, yscale = yScaleSpark, just = c("left", "bottom"), gp = gpar( cex = cexSpark ))) # grid.rect(gp=gpar(lty="solid", col = "gray80")) # temp for layout grid.lines( x = unit( xScaleSpark ,"native"), y= unit( c(0,0) ,"native"), gp=gpar(lty="solid", col = "gray80")) grid.lines( x = unit( c(0,0) ,"native"), y= unit( yScaleSpark ,"native"), gp=gpar(lty="solid", col = "gray80")) for( i in 1:nSparks){ grid.lines( x = unit( xValuesSpark[[i]], "native" ), y = unit( yValuesSpark[[i]], "native" ) , gp = gpar(col = colorSparks[i] )) } # allTick <- pretty( c( yValuesSparkMax, yValuesSparkMin ) ) if( sparkScaleFlag & !normSparkFlag ){ allTick <- pretty( c( yValuesSparkMax, yValuesSparkMin ) ) if( (allTick[ length(allTick) ] - allTick[1]) < 1.5*yRangeSpark ){ grid.yaxis( at = c(allTick[1], allTick[ length(allTick) ] )) # at = c(-1, 1) } else{ grid.yaxis( at = c(yScaleSpark[1], yScaleSpark[2] )) } } # if( (allTick[ length(allTick) ] - allTick[1]) < 1.5*yRangeSpark ){ # grid.yaxis( at = c(allTick[1], allTick[ length(allTick) ] )) # at = c(-1, 1) # } # else{ # grid.yaxis( at = c(yScaleSpark[1], yScaleSpark[2] )) # } # # grid.yaxis() popViewport() } } prepareValues <- function( fluxNames, fluxSigns ){ timeValues <- list() fluxValues <- list() nIso <- length(fluxNames) fluxMissingFlag <- FALSE for( i in 1:nSim){ timeValues <- c( timeValues, list(hostList[[i]][["t"]]) ) fluxNet <- rep(0, length(hostList[[i]][["t"]]) ) hostNames <- names( hostList[[i]] ) for( j in 1:nIso){ fluxName <- fluxNames[j] if( fluxName %in% hostNames ){ fluxNet <- fluxNet + fluxSigns[j]*hostList[[i]][[ fluxName ]] } else{ fluxMissingFlag <- TRUE } } # for j fluxValues <- c( fluxValues, list(fluxNet) ) } # for i listValues <- list( timeValues, fluxValues, fluxMissingFlag ) return(listValues) } # prepareValues maskForArrow <- function( xArrow, yArrow, plotMode, fValue, valueMaxDisplayWeight = 20,weightArrowMax = 5 ){ # line weight if ( plotMode == 1 ){ if ( abs(fValue) > valueMaxDisplayWeight ){ fValue <- sign( fValue ) * valueMaxDisplayWeight } arwLineWidth <- 1 + ( weightArrowMax - 1 ) * abs(fValue) / valueMaxDisplayWeight } else{ # plot mode 2 is only one weight of arrow, also default to this arwLineWidth <- 1 } maskWidth <- arwLineWidth + 4 grid.lines(x = unit(xArrow,"native"), y = unit(yArrow,"native"), gp = gpar( lwd = maskWidth, col = "white" )) } arrowPlot <- function( xArrow, yArrow, plotMode, fValue, fluxNames, arrowBarbAngle = arrowsBarbAngle, arrowBarbLength = arrowsBarbLength, abrevFlag = FALSE, weightArrowMax = 5, zeroThresh = 1e-5, valueMaxDisplayWeight = 20, arrowDirection = 'fwd', fluxMissingFlag = TRUE){ # arrowDirection should be one of 'fwd', 'rev', 'none' # set graphical parameters based on mode and flux value # ........................................................................................................ arwLty <- 1 # line weight if ( plotMode == 1 ){ fValue <- fValue[tIdx] if ( abs(fValue) > valueMaxDisplayWeight ){ fValue <- sign( fValue ) * valueMaxDisplayWeight } arwLineWidth <- 1 + ( weightArrowMax - 1 ) * abs(fValue) / valueMaxDisplayWeight } else{ # plot mode 2 & 3 is only one weight of arrow, also default to this arwLineWidth <- 1 } # arrowhead placement and color arwColor = 'black' if ( plotMode == 1 && !((arrowDirection) == 'none') ){ # plot arrowhead only in direction of rxn if ( fValue > zeroThresh ){ # forward (or zero) flux arwHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "last", type = "open") } else{ if( fValue < (-zeroThresh) ){ # backward flux arwHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "first", type = "open") } else{ # case when flux is zero, use arwHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "both", type = "open") arwColor = 'grey70' } } } else{ if ( arrowDirection == 'fwd' ){ arwHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "last", type = "open") } else{ if ( arrowDirection == 'rev' ){ arwHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "both", type = "open") } else{ arwHead <- NULL } } } plotReverseTooFlag <- FALSE # arrow color if plot type 3 if( plotType == 3 ){ arwColor <- colsClusters[1] nIso <- length(fluxNames) if( nIso == 1 ){ # only one flux, use this flux to cluster arwColor = colsClusters[ fluxClusters[ fluxNames[1] ] ] # print('one iso - - - - - - - - - - - - ' ) # print( fluxNames[1] ) # print( fluxClusters[ fluxNames[1] ] ) # print( colsClusters[ fluxClusters[ fluxNames[1] ] ] ) } # if only one flux else{ # multiple fluxes associated # determine how many of the fluxes are nonzero and varying logicalRealClusters <- (fluxClusters[ fluxNames ] > 2) nRealClusters <- sum(logicalRealClusters, na.rm=TRUE) # if( nRealClusters == 0 ){ if( any( (fluxClusters[ fluxNames ] == 2), na.rm=TRUE ) ){ # there is at least one constant non-zero flux, black arrow arwColor <- colsClusters[2] } # constant nonzero } # no varrying clusters else{ if( nRealClusters == 1 ){ # only one real cluster, color arrow arwColor <- colsClusters[ fluxClusters[ fluxNames[logicalRealClusters] ] ] # print('one real - - - - - - - - - - - -' ) # print( fluxNames[logicalRealClusters] ) # print( fluxClusters[ fluxNames[logicalRealClusters] ] ) # print( colsClusters[ fluxClusters[ fluxNames[logicalRealClusters] ] ] ) } # one varrying flux else{ realClusters <- fluxNames[logicalRealClusters] arwColor <- colsClusters[ fluxClusters[ realClusters[1] ] ] # print( c('warning multiple varrying fluxes for: ', realClusters ) ) } # more than 1 varying flux } # any varying fluxes } # multiple fluxes associated with arrow # set up arrow head for type 3 arwHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "last", type = "open") # changed from both # plotReverseTooFlag <- TRUE allPositive <- all( fValue >= 0, na.rm=TRUE) allNegative <- all( fValue <= 0 , na.rm=TRUE) if( !allNegative ){ #if( allPositive ){ arwHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "last", type = "open") if( arrowDirection == 'rev' ){ plotReverseTooFlag <- TRUE } } else{ if( allNegative ){ arwHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "first", type = "open") plotReverseTooFlag <- TRUE } } } # set up colors for plot type 3 if( (arrowDirection) == 'none' ) arwHead <- NULL if ( !abrevFlag ){ if(fluxMissingFlag){ arwLty <- 1 arwColor <- 'grey50'; #colsClusters[2] # colsClusters[1] if( (arrowDirection) == 'rev') arwHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "both", type = "open") } if( plotType == 2 && (arrowDirection) == 'rev'){ plotReverseTooFlag <- TRUE } # plot arrow if( plotReverseTooFlag && !((arrowDirection) == 'none') ){ # arwHeadRev <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "both", type = "open") arwHeadRev1 <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "first", type = "open") # arwHeadRev2 <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "last", type = "open") grid.lines(x = unit(xArrow,"native"), y = unit(yArrow,"native"), arrow = arwHeadRev1, gp = gpar( lwd = arwLineWidth, col = 'grey50' , lty = arwLty)) # grid.lines(x = unit(xArrow,"native"), y = unit(yArrow,"native"), arrow = arwHeadRev2, gp = gpar( lwd = arwLineWidth, col = arwColor , lty = arwLty)) arwHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "last", type = "open") } # arwHeadRev1 <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "first", type = "open") # arwHeadRev2 <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "last", type = "open") # grid.lines(x = unit(xArrow,"native"), y = unit(yArrow,"native"), arrow = arwHeadRev1, gp = gpar( lwd = arwLineWidth, col = 'grey50' , lty = arwLty)) # grid.lines(x = unit(xArrow,"native"), y = unit(yArrow,"native"), arrow = arwHeadRev2, gp = gpar( lwd = arwLineWidth, col = arwColor , lty = arwLty)) # grid.lines(x = unit(xArrow,"native"), y = unit(yArrow,"native"), arrow = arwHead, gp = gpar( lwd = arwLineWidth, col = arwColor, lty = arwLty )) } else{ # note that this method is only intended to function for single linear segments segmentLength <- sqrt( (xArrow[2] - xArrow[1])^2 + (yArrow[2] - yArrow[1])^2 ) abrevLengthOneDotPts <- 3 * arwLineWidth abrevLengthOneDot <- convertUnit( unit(abrevLengthOneDotPts, "points"), "native", valueOnly = TRUE ) abrevLengthThreeDotsPts <- 6 * arwLineWidth abrevLengthTheeDots <- convertUnit( unit(abrevLengthThreeDotsPts, "points"), "native", valueOnly = TRUE ) abrevLength <- ifelse( abrevLengthTheeDots > (0.7 * segmentLength), abrevLengthOneDot, abrevLengthTheeDots) # abrevLength <- abrevLengthTheeDots abrevFraction <- abrevLength / segmentLength xSegment <- (xArrow[2] - xArrow[1]) ySegment <- (yArrow[2] - yArrow[1]) # 'tail' segment xTailAbrev <- (xArrow[1] + xSegment*(1-abrevFraction)/2) xTail <- c(xArrow[1], xTailAbrev ) yTailAbrev <- (yArrow[1] + ySegment*(1-abrevFraction)/2) yTail <- c( yArrow[1], yTailAbrev ) # 'head' segment xHeadAbrev <- (xArrow[2] - xSegment*(1-abrevFraction)/2) xHead <- c( xHeadAbrev, xArrow[2] ) yHeadAbrev <- (yArrow[2] - ySegment*(1-abrevFraction)/2) yHead <- c( yHeadAbrev, yArrow[2] ) # 'abrev' segment xAbrev <- c( xTailAbrev, xHeadAbrev ) yAbrev <- c( yTailAbrev, yHeadAbrev ) # deal with head options # arrowhead placement and color # arwColor = 'black' if ( plotMode == 1 && !((arrowDirection) == 'none') ){ # plot arrowhead only in direction of rxn if ( fValue > zeroThresh ){ # forward flux arwHeadHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "last", type = "open") arwHeadTail <- NULL } else{ if( fValue < (-zeroThresh) ){ # backward flux arwHeadTail <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "first", type = "open") arwHeadHead <- NULL } else{ # case when flux is zero, use arwHeadHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "last", type = "open") arwHeadTail <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "first", type = "open") arwColor = 'grey80' } } } else{ if ( arrowDirection == 'fwd' ){ arwHeadHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "last", type = "open") arwHeadTail <- NULL } else{ if ( arrowDirection == 'rev' ){ arwHeadHead <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "last", type = "open") arwHeadTail <- arrow(angle = arrowBarbAngle, length = unit(arrowBarbLength, "native"), ends = "first", type = "open") } else{ arwHeadHead <- NULL arwHeadTail <- NULL } } } # plot if(fluxMissingFlag){ arwLty <- 2 arwColor <- colsClusters[1] } grid.lines(x = unit(xTail,"native"), y = unit(yTail,"native"), arrow = arwHeadTail, gp = gpar( lwd = arwLineWidth, col = arwColor, lty = arwLty ) ) grid.lines(x = unit(xHead,"native"), y = unit(yHead,"native"), arrow = arwHeadHead, gp = gpar( lwd = arwLineWidth, col = arwColor, lty = arwLty ) ) grid.lines(x = unit(xAbrev,"native"), y = unit(yAbrev,"native"), gp = gpar( lwd = arwLineWidth, col = arwColor, lty = '11' ) ) } # ........................................................................................................ } addFluxArwAndSpark <- function(xArrow, yArrow, dirArrow, abrevArrow, xSpark, ySpark, fluxNames, fluxSigns, maskFlag = FALSE){ if( upFlag || !(length(xArrow) == 1) ){ # begin by preparing vlaues valuesFlux <- prepareValues( fluxNames, fluxSigns ) fValueArw <- valuesFlux[[2]][[1]] missingFlag <- valuesFlux[[3]] # plot arrows if( is.list(xArrow) ){ # arrows given as list, must plot multiple nArw <- length( xArrow ) # check for need to mask before plotting arrows if( maskFlag ){ for( i in 1:nArw ){ maskForArrow( xArrow = xArrow[[i]], yArrow = yArrow[[i]], plotMode = plotType, fValue = fValueArw) } # for i } # if mask # plot arrows for( i in 1:nArw){ arrowPlot( xArrow = xArrow[[i]], yArrow = yArrow[[i]] , arrowDirection = dirArrow[i], fValue = fValueArw, fluxNames = fluxNames, arrowBarbAngle = arrowsBarbAngle, arrowBarbLength = arrowsBarbLength, abrevFlag = abrevArrow[i], plotMode = plotType, fluxMissingFlag = missingFlag) } # for i } else{ # only one segment to arrow # check for need to mask before plotting arrows if( maskFlag ){ maskForArrow( xArrow = xArrow, yArrow = yArrow, plotMode = plotType, fValue = fValueArw) } # if mask # plot arrow arrowPlot( xArrow = xArrow, yArrow = yArrow , arrowDirection = dirArrow, fValue = fValueArw, fluxNames = fluxNames, arrowBarbAngle = arrowsBarbAngle, arrowBarbLength = arrowsBarbLength, abrevFlag = abrevArrow, plotMode = plotType, fluxMissingFlag = missingFlag) } # else xArrow is list # test if sparkline is to be plotted if( sparkFlag & !(is.null( xSpark ))){ if(is.character(ySpark)){ ySparkChar <- ySpark # assume center ySpark <- (max(unlist(yArrow)) + min(unlist(yArrow)))/2 - hSparkLines/2 if( ySparkChar == 'A'){ # above ySpark <- max(unlist(yArrow)) + vS } if( ySparkChar == 'B' ){ # below ySpark <- min(unlist(yArrow)) - vS - hSparkLines } if( ySparkChar == 'BC' ){ # below ySpark <- min(unlist(yArrow)) - hSparkLines/2 } if( ySparkChar == 'BB' ){ # below ySpark <- min(unlist(yArrow)) } if( ySparkChar == 'AE'){ # above ySpark <- max(unlist(yArrow)) + 1.5*vS } if( ySparkChar == 'BE' ){ # below ySpark <- min(unlist(yArrow)) - 1.5*vS - hSparkLines } } # if y char if(is.character(xSpark)){ xSparkChar <- xSpark xSpark <- (max(unlist(xArrow)) + min(unlist(xArrow)))/2 - wSparkLines/2 if( xSparkChar == 'R'){ # above xSpark <- max(unlist(xArrow)) + hS } if( xSparkChar == 'L' ){ # below xSpark <- min(unlist(xArrow)) - hS - wSparkLines } if( xSparkChar == 'LF' ){ # below xSpark <- min(unlist(xArrow)) - wSparkLines } if( xSparkChar == 'RC' ){ # below xSpark <- (max(unlist(xArrow)) + min(unlist(xArrow)))/2 } } # if y char if( nSim > 1 ){ # plot the sparkline sparkLineMulti(xLocationSpark = xSpark, yLocationSpark = ySpark, wSpark = wSparkLines, hSpark = hSparkLines, xValuesSpark = valuesFlux[[1]], yValuesSpark = valuesFlux[[2]], colorSparks = colsSparks, idxKeySpark = tIdx) } else{ sparkLine( xLocationSpark= xSpark, yLocationSpark= ySpark, wSpark = wSparkLines, hSpark = hSparkLines, xValuesSpark = valuesFlux[[1]], yValuesSpark = valuesFlux[[2]], idxKeySpark = tIdx ) } } } } clusterFluxes <- function( fluxTable ){ dataAll <- fluxTable # remove any concentrations based on name begining with CONC nameOfCols <- colnames(dataAll) # # try # for( i in 1:length(nameOfCols)){ # valuesTemp <- dataAll[[ nameOfCols[i] ]] - dataAll[[ nameOfCols[i] ]][1] # if( any( abs( valuesTemp ) > zeroThresh ) ){ # dataAll[[ nameOfCols[i] ]] <- valuesTemp / max( abs( valuesTemp ) ) # } # } notFluxes <- c( grep("^CONC", nameOfCols, value=TRUE), 't', 'biomass', 'hostFlag') justFluxes <- nameOfCols[!nameOfCols %in% notFluxes ] dataFluxes <- dataAll[justFluxes] # get fluxes that vary (to not break the distance metrics) zeroThresh <- 1e-9 fluxStDevs <- apply(dataFluxes, 2, sd) logicalFluxesThatVary <- fluxStDevs > zeroThresh dataForDist <- as.matrix(dataFluxes[ ,logicalFluxesThatVary ]) # dataForDist <- diff( dataForDist, lag = 1 ) # get distance matrix, currently using correlation measure distancesForCluster <- as.dist( (1 - cor(dataForDist)) ) # distancesForCluster <- dist(dataForDist, method = "euclidean") # # # library(lsa) # only needed for cosine # distancesForCluster <- cosine( as.matrix(dataForDist)) # distancesForCluster <- as.dist( distancesForCluster ) # cluster, devide into groups clusterObjOfFluxes <- hclust(distancesForCluster, method="average") clusterGroups <- cutree(clusterObjOfFluxes, k = NULL, h = 0.58) # print( clusterGroups ) clusterOutput <- list( clusterGroups, justFluxes, dataAll ) return( clusterOutput ) } # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Preparations for map plotting # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if( plotType == 3 ){ # note that this only takes the first flux and colors the map clusterOutput <- clusterFluxes( hostList[[1]] ) fluxClusters <- clusterOutput [[1]] fluxAllNames <- clusterOutput [[2]] hostList[[1]] <- clusterOutput [[3]] # color index translation initialization colIdxTrans <- rep( 0, max(fluxClusters) ) # check if the number of flux clusters exceeded the number of defined colors if( length(colsClusters) < length(fluxClusters) ){ nRepCols <- ceiling( length(fluxClusters)/length(colsClusters) ) colsClusters <- rep(colsClusters, nRepCols) } # if more clusters than colors # print( names( fluxClusters ) ) nonClusteredFluxNames <- fluxAllNames[!fluxAllNames %in% names( fluxClusters ) ] nonClusteredFluxesForZeroTest <- lapply(hostList[[1]][nonClusteredFluxNames], max) zeroFluxNames <- names(nonClusteredFluxesForZeroTest[ nonClusteredFluxesForZeroTest < zeroThresh ]) constantFluxNames <- names(nonClusteredFluxesForZeroTest[ nonClusteredFluxesForZeroTest >= zeroThresh ]) zeroFluxClusters <- rep( 1, length(zeroFluxNames) ) names( zeroFluxClusters ) <- zeroFluxNames constantFluxClusters <- rep( 2, length(constantFluxNames) ) names( constantFluxClusters ) <- constantFluxNames fluxClusters <- c( (fluxClusters+2), constantFluxClusters, zeroFluxClusters ) # print( fluxClusters ) colsClusters <- c( 'gray85', 'black', colsClusters ) } # print( colsClusters ) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Plot arrows # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - plotTheMap <- function(){ # O2 in # ........................................................................................................ grid.text("O2(media)", x = unit(xGlycolysis+ 9, "native"), y = unit(yG6P + 5.5, "native"), gp = gpText, just = c("center", "center") ) addFluxArwAndSpark(xArrow = c(xGlycolysis+ 9,xGlycolysis+ 9), yArrow = c(yG6P + 5,yG6P + 3), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('eO2'), fluxSigns = c( -1 ), maskFlag = FALSE) # ........................................................................................................ plotGlycolysisMain <- function(){ # Glucose in media # ......................................... grid.text("Glucose(media)", x = unit(xGlycolysis, "native"), y = unit(yG6P + 5.5, "native"), gp = gpText ) # ......................................... # GLC up to g6p # ........................................................................................................ t <- seq(from=pi/4, to=-pi/4, by=-pi/20) x_GlucInToG6P <- cos(t)*3 + xGlycolysis - 1.75 y_GlucInToG6P <- yG6P + 2.75 + sin(t)*3 addFluxArwAndSpark(xArrow = x_GlucInToG6P, yArrow = y_GlucInToG6P, dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'R', ySpark = 'C', fluxNames = c('tMALX1','tMALX2','tGLCPTS'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # ........................................................................................................ # # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xGlycolysis, xGlycolysis), yArrow = c(yG6P+5, yG6P+3.5), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'BB', fluxNames = c('tGLCUP'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # G1P # ......................................... grid.text("G1P", x = unit(xGlycolysis - 2.5, "native"), y = unit(yG6P , "native"), gp = gpText ) # ......................................... # PGMR # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xGlycolysis - 0.75, xGlycolysis - 1.75), yArrow = c(yG6P , yG6P ), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C', ySpark = 'A', fluxNames = c('cPGMR','cYQABR'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # ........................................................................................................ # GLCD # ......................................... grid.text("GLCD", x = unit(xGlycolysis, "native"), y = unit(yG6P + 3, "native"), gp = gpText ) # ......................................... # GLK # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xGlycolysis, xGlycolysis), yArrow = c(yG6P+2.5, yG6P+0.5), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('cGLK'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # G6P # ......................................... grid.text("G6P", x = unit(xGlycolysis, "native"), y = unit(yG6P, "native"), gp = gpText ) # ......................................... # PGIR # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xGlycolysis, xGlycolysis), yArrow = c(yG6P-0.5, yG6P-1.5), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('cPGIR'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # F6P # ......................................... grid.text("F6P", x = unit(xGlycolysis, "native"), y = unit(yG6P - 2, "native"), gp = gpText ) # ......................................... # PFKB etc # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xGlycolysis+0.25, xGlycolysis+0.25), yArrow = c(yG6P-2.5, yG6P-3.5), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c('cPFKB','cPFKA'), fluxSigns = c(1,1), maskFlag = FALSE) addFluxArwAndSpark(xArrow = c(xGlycolysis-0.25, xGlycolysis-0.25), yArrow = c(yG6P-3.5, yG6P-2.5), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('cFBP'), fluxSigns = c(1), maskFlag = FALSE) # ........................................................................................................ # FDP # ......................................... grid.text("FDP", x = unit(xGlycolysis, "native"), y = unit(yG6P - 4, "native"), gp = gpText ) # ......................................... # FBAR # ........................................................................................................ addFluxArwAndSpark(xArrow = list(c(xGlycolysis, xGlycolysis, xGlycolysis+1),c(xGlycolysis, xGlycolysis, xGlycolysis-1)), yArrow = list(c(yG6P-4.5, yG6P-5.5, yG6P-6.5),c(yG6P-4.5, yG6P-5.5, yG6P-6.5)) , dirArrow = c('rev','rev'), abrevArrow = c(FALSE, FALSE), xSpark = (xGlycolysis - sSL - wSparkLines), ySpark = (yG6P-5.5), fluxNames = c('cB1773R' , 'cFBAR' , 'cFBABR'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # ........................................................................................................ # DHAP # ......................................... grid.text("DHAP", x = unit(xGlycolysis-1.1, "native"), y = unit(yG6P - 7, "native"), gp = gpText ) # ......................................... # G3P # ......................................... grid.text("G3P", x = unit(xGlycolysis+1.1, "native"), y = unit(yG6P - 7, "native"), gp = gpText ) # ......................................... # TPIAR # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xGlycolysis-0.35, xGlycolysis+0.35), yArrow = c(yG6P-7, yG6P-7), dirArrow = 'rev', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c('cTPIAR'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # (GAPAR, GAPCR) & PGKR # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xGlycolysis+1, xLowerGlycolysis), yArrow = c(yG6P-7.5, yG6P-8.5), dirArrow = 'rev', abrevArrow = TRUE, xSpark = 'L', ySpark = 'C', fluxNames = c('cPGKR'), fluxSigns = c( -1 ), maskFlag = FALSE) # ........................................................................................................ # 3PG # ......................................... grid.text("3PG", x = unit(xLowerGlycolysis, "native"), y = unit(yG6P - 9, "native"), gp = gpText ) # ......................................... # (GPMAR, GPMBR) & ENOR # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xLowerGlycolysis, xLowerGlycolysis), yArrow = c(yG6P-9.5, yG6P-10.5), dirArrow = 'rev', abrevArrow = TRUE, xSpark = 'L', ySpark = 'C', fluxNames = c('cENOR'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # PEP # ......................................... grid.text("PEP", x = unit(xLowerGlycolysis, "native"), y = unit(yG6P - 11, "native"), gp = gpText ) # ......................................... # PYKF,PYKA & PPSA # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xLowerGlycolysis+0.25, xLowerGlycolysis+0.25), yArrow = c(yG6P-11.5, yG6P-12.5), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c('cPYKF','cPYKA'), fluxSigns = c( 1,1 ), maskFlag = FALSE) addFluxArwAndSpark(xArrow = c(xLowerGlycolysis-0.25, xLowerGlycolysis-0.25), yArrow = c(yG6P-12.5, yG6P-11.5), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c('cPPSA'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # PYR # ......................................... grid.text("PYR", x = unit(xLowerGlycolysis, "native"), y = unit(yG6P - 13, "native"), gp = gpText ) # ......................................... # ACEE # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xLowerGlycolysis, xLowerGlycolysis), yArrow = c(yG6P-13.5, yG6P-14.5), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xLowerGlycolysis+0.75), 'C', fluxNames = c('cACEE'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # AcCoA # ......................................... grid.text(" AcCoA", x = unit(xLowerGlycolysis, "native"), y = unit(yG6P - 15, "native"), gp = gpText ) # ......................................... # # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xLowerGlycolysis-0.75, xLowerGlycolysis-4.25), yArrow = c(yG6P-15.12, yG6P-15.12), dirArrow = 'rev', abrevArrow = FALSE, xSpark = (xLowerGlycolysis - 3 - wSparkLines), ySpark = 'B', fluxNames = c('cACKAR'), fluxSigns = c( -1 ), maskFlag = FALSE) # ........................................................................................................ # AC # ......................................... grid.text("AC", x = unit(xLowerGlycolysis-5, "native"), y = unit(yG6P - 15, "native"), gp = gpText ) # ......................................... # # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xLowerGlycolysis-5, xLowerGlycolysis-5), yArrow = c(yG6P-17.5, yG6P-15.5), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('tACUPR'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # AC[ex] # ......................................... grid.text("AC(media)", x = unit(xTCA-rTCA/3 - 4.75, "native"), y = unit(yG6P - 18, "native"), gp = gpText , just = c("right", "center")) # ......................................... # GLYCOGEN # ......................................... grid.text("GLYCGN", x = unit(xGlycolysis - 5.5, "native"), y = unit(yG6P , "native"), gp = gpText ) # ......................................... # to GLYCOGEN # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xGlycolysis - 3.25, xGlycolysis - 4.25), yArrow = c(yG6P , yG6P ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = "C", ySpark = 'B', fluxNames = c('cGLGA'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ } plotGlycolysisMain() # to ASP # ........................................................................................................ t <- seq(from=pi*9/8, to=pi/2, by=-pi/20) xOAAtoASP <- c((cos(t)*0.5 + xTCA-rTCA/2 - 0.5), xAA1 - 0.75) yOAAtoASP <- c((sin(t)*0.5 + yTCA+rTCA*5/6 + 0.5), yASP ) addFluxArwAndSpark(xArrow = xOAAtoASP, yArrow = yOAAtoASP, dirArrow = 'rev', abrevArrow = FALSE, xSpark = (xLowerGlycolysis+3), ySpark = (yASP+1/3), fluxNames = c('cASPC1R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # from OAA # ........................................................................................................ t <- seq(from=pi*3/2, to=pi, by=-pi/20) t2 <- seq(from=pi, to=pi/2, by=-pi/20) xOAAtoPEP <- c((cos(t)*0.75 + xTCA-rTCA/2 - 1.25), (cos(t2)*0.75 + xTCA-rTCA/2 - 1.25)) yOAAtoPEP <- c((sin(t)*0.75 + yTCA+rTCA*5/6 + 0.65), (sin(t2)*0.75 + yG6P - 11 - 0.75) ) addFluxArwAndSpark(xArrow = xOAAtoPEP, yArrow = yOAAtoPEP, dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c('cPCKA'), fluxSigns = c( 1 ), maskFlag = TRUE) xPEPtoOAA <- rev(c((cos(t)*0.5 + xTCA-rTCA/2 - 1.25), (cos(t2)*0.5 + xTCA-rTCA/2 - 1.25))) yPEPtoOAA <- rev(c((sin(t)*0.5 + yTCA+rTCA*5/6 + 0.65), (sin(t2)*0.5 + yG6P - 11 - 0.75) )) addFluxArwAndSpark(xArrow = xPEPtoOAA, yArrow = yPEPtoOAA, dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c('cPPC'), fluxSigns = c( 1 ), maskFlag = TRUE) # ........................................................................................................ # from MAL # ........................................................................................................ t <- seq(from=pi*5/4, to=pi, by=-pi/20) t2 <- seq(from=pi, to=pi/2, by=-pi/20) xMALtoPYR <- c((cos(t)*0.75 + xTCA-rTCA - 0.4), (cos(t2)*0.75 + xTCA-rTCA - 0.4),xLowerGlycolysis-0.75 ) yMALtoPYR <- c((sin(t)*0.75 + yTCA+rTCA/3 + 0.65), (sin(t2)*0.75 + yG6P - 13 - 0.75), (yG6P - 13)) addFluxArwAndSpark(xArrow = xMALtoPYR, yArrow = yMALtoPYR, dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c('cMAEB','cSFCA'), fluxSigns = c( 1,1 ), maskFlag = TRUE) # ........................................................................................................ # ACEB, GLCB (glx part 2) # ........................................................................................................ t <- seq(from=pi/3, to=-pi/2, by=-pi/20) xACNR_1 <- c((cos(t)*rTCA/2 + xTCA - rTCA*2/3), xTCA - rTCA*3/4) yACNR_1 <- c((sin(t)*rTCA/2 + yTCA + rTCA*5/6), yTCA + rTCA/3 ) xACNR_2 <- c(xTCA - rTCA*0.35, xTCA - rTCA*3/4) yACNR_2 <- c( yTCA + rTCA/3, yTCA + rTCA/3) addFluxArwAndSpark(xArrow = list( xACNR_1,xACNR_2), yArrow = list( yACNR_1,yACNR_2), dirArrow = c('fwd', 'fwd'), abrevArrow = c(FALSE, FALSE), xSpark = NULL, ySpark = NULL, fluxNames = c('cACEB', 'cGLCB'), fluxSigns = c( 1,1 ), maskFlag = TRUE) # ........................................................................................................ # the TCA cycle plotTCACycle <- function(){ # GLTA # ........................................................................................................ fValueGLTA <- 1 t1 <- seq(from=-3*pi/4, to=-pi/2, by=pi/100) t2 <- seq(from=2*pi/3*0.95, to=pi/3*1.05, by=-pi/100) xGLTA_1 <- (cos(t1)*rTCA + xTCA) yGLTA_1 <- (sin(t1)*rTCA + 2*rTCA+yTCA) xGLTA_2 <- (cos(t2)*rTCA + xTCA) yGLTA_2 <- (sin(t2)*rTCA + yTCA) addFluxArwAndSpark(xArrow = list(xGLTA_1,xGLTA_2), yArrow = list(yGLTA_1,yGLTA_2), dirArrow = c('none','fwd'), abrevArrow = c(FALSE, FALSE), xSpark = NULL, ySpark = NULL, fluxNames = c('cGLTA'), fluxSigns = c( 1 ), maskFlag = TRUE) # ........................................................................................................ # Succ in (proton co) # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xTCA-rTCA/3-4.5,xTCA-rTCA/3-1.75), yArrow = c(yTCA-rTCA*5/6+0.2,yTCA-rTCA*5/6+0.2), dirArrow = c('fwd'), abrevArrow = c(FALSE), xSpark = 'L', ySpark = 'A', fluxNames = c('tDCTA1','tDCUB1','tDCUA1'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # ........................................................................................................ # Succ in (fum exch) # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xTCA-rTCA/3-4.5,xTCA-rTCA/3-1.75), yArrow = c(yTCA-rTCA*5/6-0.2,yTCA-rTCA*5/6-0.2), dirArrow = c('fwd'), abrevArrow = c(FALSE), xSpark = 'L', ySpark = 'B', fluxNames = c('tDCUA5R','tDCUB5R','tDCUC2R'), fluxSigns = c( -1,-1,-1 ), maskFlag = FALSE) # ........................................................................................................ # Succ in (cit exch) # ........................................................................................................ # addFluxArwAndSpark(xArrow = c(xTCA-rTCA/3-0.5,xTCA-rTCA/3-0.5), yArrow = c(yTCA-rTCA*5/6-2.25,yTCA-rTCA*5/6-0.25), dirArrow = c('fwd'), # abrevArrow = c(FALSE), xSpark = (xTCA-rTCA/3-2.5), ySpark = (yTCA-rTCA*5/6-3), # fluxNames = c('tCITT'), fluxSigns = c( -1 ), maskFlag = FALSE) # ........................................................................................................ # Succ in (tart exch) # ........................................................................................................ # addFluxArwAndSpark(xArrow = c(xTCA-rTCA/3-0.25,xTCA-rTCA/3-0.25), yArrow = c(yTCA-rTCA*5/6-2.25,yTCA-rTCA*5/6-0.25), dirArrow = c('fwd'), # abrevArrow = c(FALSE), xSpark = (xTCA-rTCA/3-2.5), ySpark = (yTCA-rTCA*5/6-3), # fluxNames = c('tYGJER'), fluxSigns = c( -1 ), maskFlag = FALSE) # ........................................................................................................ # Succ in (atp) # ........................................................................................................ # addFluxArwAndSpark(xArrow = c(xTCA-rTCA/3-0.25,xTCA-rTCA/3-0.25), yArrow = c(yTCA-rTCA*5/6-2.25,yTCA-rTCA*5/6-0.25), dirArrow = c('fwd'), # abrevArrow = c(FALSE), xSpark = (xTCA-rTCA/3-2.5), ySpark = (yTCA-rTCA*5/6-3), # fluxNames = c('cYIAO'), fluxSigns = c( -1 ), maskFlag = FALSE) # ........................................................................................................ grid.text("Succ(media)", x = unit(xTCA-rTCA/3 - 4.75, "native"), y = unit(yTCA-rTCA*5/6, "native"), gp = gpText, just = c("right", "center") ) # TCA metabolites # ......................................... grid.text("CIT", x = unit(xTCA+rTCA/2, "native"), y = unit(yTCA+rTCA*5/6, "native"), gp = gpText, just = c("left", "center") ) grid.text("ICIT", x = unit(xTCA+rTCA, "native"), y = unit(yTCA+rTCA/3, "native"), gp = gpText, just = c("center", "center") ) grid.text("AKG", x = unit(xTCA+rTCA, "native"), y = unit(yTCA-rTCA/3, "native"), gp = gpText, just = c("center", "center") ) grid.text("SucCoA", x = unit(xTCA+rTCA/3, "native"), y = unit(yTCA-rTCA*5/6, "native"), gp = gpText, just = c("left", "center") ) grid.text("Succ", x = unit(xTCA-rTCA/3, "native"), y = unit(yTCA-rTCA*5/6, "native"), gp = gpText, just = c("right", "center") ) grid.text("FUM", x = unit(xTCA-rTCA, "native"), y = unit(yTCA-rTCA/3, "native"), gp = gpText, just = c("center", "center") ) grid.text("MALL", x = unit(xTCA-rTCA, "native"), y = unit(yTCA+rTCA/3, "native"), gp = gpText, just = c("center", "center") ) grid.text("OAA", x = unit(xTCA-rTCA/2, "native"), y = unit(yTCA+rTCA*5/6, "native"), gp = gpText, just = c("right", "center") ) # ......................................... # ACNAR (CIT to ICIT) # ........................................................................................................ t <- seq(from=pi/4, to=pi/6, by=-pi/100) addFluxArwAndSpark(xArrow = (cos(t)*rTCA + xTCA), yArrow = (sin(t)*rTCA + yTCA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'R', ySpark = "C", fluxNames = c('cACNAR','cACNBR'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # ........................................................................................................ # ICDAR (ICIT to AKG) # ........................................................................................................ t <- seq(from=pi/15, to=-pi/15, by=-pi/100) addFluxArwAndSpark(xArrow = (cos(t)*rTCA + xTCA), yArrow = (sin(t)*rTCA + yTCA) , dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'R', ySpark = 'C', fluxNames = c('cICDAR'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # AKG to SuccCoA # ........................................................................................................ t <- seq(from=-pi/6, to=-pi/4, by=-pi/100) addFluxArwAndSpark(xArrow = (cos(t)*rTCA + xTCA), yArrow = (sin(t)*rTCA + yTCA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = "R", ySpark = 'C', fluxNames = c('cSUCA'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # SUCCR (succ to sucCoA) # ........................................................................................................ t <- seq(from=-pi/3*1.2, to=-2*pi/3*0.9, by=-pi/100) addFluxArwAndSpark(xArrow = (cos(t)*rTCA + xTCA), yArrow = (sin(t)*rTCA + yTCA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C', ySpark = 'B', fluxNames = c('cSUCCR'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # SDHA1 # ........................................................................................................ t <- seq(from=pi+pi/4, to=7*pi/6, by=-pi/100) addFluxArwAndSpark(xArrow = (cos(t)*rTCA + xTCA), yArrow = (sin(t)*rTCA + yTCA) , dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'RC', ySpark = 'A' , fluxNames = c('cSDHA1'), fluxSigns = c( 1 ), maskFlag = FALSE) # ADD other reverse rxns t <- seq(to=pi+pi/4, from=7*pi/6, by=pi/100) addFluxArwAndSpark(xArrow = (cos(t)*rTCA + xTCA - 0.4), yArrow = (sin(t)*rTCA + yTCA) , dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('cFRDA1'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # FUMAR, FUMBR, FUMCR (FUM to MAL) # ........................................................................................................ t <- seq(from=pi+pi/15, to=pi-pi/15, by=-pi/100) addFluxArwAndSpark(xArrow = (cos(t)*rTCA + xTCA), yArrow = (sin(t)*rTCA + yTCA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = (xTCA-rTCA-1.25*wSparkLines), ySpark = 'C', fluxNames = c('cFUMAR', 'cFUMBR', 'cFUMCR' ), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # ........................................................................................................ # MDHR (mal to oaa) # ........................................................................................................ t <- seq(from=pi*5/6, to=(pi/4*3), by=-pi/100) addFluxArwAndSpark(xArrow = (cos(t)*rTCA + xTCA), yArrow = (sin(t)*rTCA + yTCA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('cMDHR'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # cACEA # ........................................................................................................ t <- seq(from=pi/2, to=pi, by=pi/20) xACEA_1 <- c(xTCA + rTCA*3/4,(cos(t)*rTCA + xTCA + rTCA*0.6)) xACEA_2 <- c(xTCA + rTCA*3/4, xTCA) yACEA_1 <- c(yTCA + rTCA/3,(sin(t)*rTCA + yTCA - rTCA*2/3)) yACEA_2 <- c( yTCA + rTCA/3, yTCA + rTCA/3) addFluxArwAndSpark(xArrow = list(xACEA_1, xACEA_2), yArrow = list( yACEA_1, yACEA_2), dirArrow = c('fwd','fwd'), abrevArrow = c(FALSE,FALSE), xSpark = 'C', ySpark = 'C', fluxNames = c('cACEA'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ grid.text("GLX", x = unit(xTCA - rTCA/6, "native"), y = unit(yTCA + rTCA/3, "native"), gp = gpText, just = c("center", "center") ) } plotTCACycle() # the pentose phosphate pathway plotPentosPhosphatePathway <- function(){ # PP pathway # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - grid.text("S7P", x = unit(xPP + 1, "native"), y = unit(yPP , "native"), gp = gpText ) grid.text("X5P", x = unit(xPP - 1, "native"), y = unit(yPP + 2 , "native"), gp = gpText ) grid.text("RU5P", x = unit(xPP, "native"), y = unit( yG6P + 2 , "native"), gp = gpText ) grid.text("R5P", x = unit(xPP + 1, "native"), y = unit(yPP + 2 , "native"), gp = gpText ) grid.text("E4P", x = unit(xPP + 0.5 , "native"), y = unit(yPP - 1 , "native"), gp = gpText ) grid.text("6PGC", x = unit(xPP - 2.35, "native"), y = unit( yG6P + 2 , "native"), gp = gpText ) # RPER (RU5P to X5P) # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xPP - 0.5, xPP - 1), yArrow = c(yG6P + 1.5, yPP + 2.5), dirArrow = 'rev', abrevArrow = FALSE, xSpark = (xPP - 2), ySpark = (yPP + 2.75), fluxNames = c('cRPER'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # 'cRPIAR','RPIBR' # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xPP + 0.5, xPP + 1), yArrow = c(yG6P + 1.5, yPP + 2.5), dirArrow = 'rev', abrevArrow = FALSE, xSpark = (xPP + 1.8), ySpark = (yPP + 2.75), fluxNames = c('cRPIAR','cRPIBR'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # ........................................................................................................ # GND # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xPP - 1.5, xPP - 0.9), yArrow = c(yG6P + 2, yG6P + 2), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xPP - 1.5), ySpark = (yG6P + 2.25), fluxNames = c('cGND'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # PGL # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xGlycolysis + 0.75, xPP - 3), yArrow = c(yG6P + 0.25, yG6P + 1.5 ), dirArrow = 'fwd', abrevArrow = TRUE, xSpark = NULL, ySpark = NULL, fluxNames = c('cPGL'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # TKTB1R & TKTA1R ( S7P G3P to X5P R5P) # ........................................................................................................ t <- seq(from=pi/4, to=-pi/6, by=-pi/20) xTKTA1Retc_1 <- rev(c((cos(t) + xPP - 1), (xGlycolysis + 1.9) )) yTKTA1Retc_1 <- rev(c((sin(t) + yPP + 1),yG6P-6.65) ) t <- seq(from=pi*3/4, to=pi*5/4, by=pi/20) xTKTA1Retc_2 <- rev((cos(t) + xPP + 1)) yTKTA1Retc_2 <- rev((sin(t) + yPP + 1)) addFluxArwAndSpark(xArrow = list(xTKTA1Retc_1, xTKTA1Retc_2), yArrow = list(yTKTA1Retc_1, yTKTA1Retc_2), dirArrow = c('rev', 'rev'), abrevArrow = c(FALSE,FALSE), xSpark = (xPP + 1.5), ySpark = (yPP + sSL + 0.4), fluxNames = c('cTKTB1R','cTKTA1R'), fluxSigns = c( 1,1), maskFlag = FALSE) # ........................................................................................................ # TALBR & TALAR (e4p f6p to g3p s7p ) # ........................................................................................................ t1 <- seq(from=pi/8, to=pi/2, by=pi/20) t2 <- seq(from=pi/2, to=pi, by=pi/20) fValueTALARetc <- 1 xTALARetc_1 <- (c((cos(t1) + xPP - 1 ), (cos(t2) + xGlycolysis + 2.25 ), xGlycolysis + 1.25 )) yTALARetc_1 <- (c((sin(t1) + yPP - 1), (sin(t2) + yPP - 1), yG6P - 6.5)) xTALARetc_2 <- rev(c((xPP + 0.25), xGlycolysis + 0.75 )) yTALARetc_2 <- rev(c(yPP, yPP)) addFluxArwAndSpark(xArrow = list(xTALARetc_1,xTALARetc_2), yArrow = list(yTALARetc_1,yTALARetc_2), dirArrow = c('rev', 'rev'), abrevArrow = c(FALSE,FALSE), xSpark = (xGlycolysis + 4), ySpark = (yG6P - 5 - sSL), fluxNames = c('cTALBR' , 'cTALAR'), fluxSigns = c( 1,1 ), maskFlag = TRUE) # ........................................................................................................ # TKTB2R & TKTA2R # ........................................................................................................ t <- seq(from=-7*pi/8, to=-pi/2, by=pi/20) fValueTKTA2Retc <- 2 xTKTA2Retc_1 <- (c((cos(t) + xGlycolysis + 1.5 ), xPP - 0.25 )) yTKTA2Retc_1 <- (c((sin(t) + yPP), yPP - 1)) t1 <- seq(from=0, to=-pi/2, by=-pi/20) t2 <- seq(from=pi/2, to=pi, by=pi/20) xTKTA2Retc_2 <- rev(c(xPP - 1.25,(cos(t1) + xPP - 2.25 ),(cos(t2) + xPP - 2.35 ), xGlycolysis + 1.65 )) yTKTA2Retc_2 <- rev(c(yPP + 1.5, (sin(t1) + yPP),(sin(t2) + yPP-2), yG6P-6.5)) addFluxArwAndSpark(xArrow = list(xTKTA2Retc_1,xTKTA2Retc_2), yArrow = list(yTKTA2Retc_1,yTKTA2Retc_2), dirArrow = c('rev', 'rev'), abrevArrow = c(FALSE,FALSE), xSpark = (xGlycolysis + 2), ySpark = (yG6P-2 + sSL), fluxNames = c('cTKTB2R','cTKTA2R'), fluxSigns = c( 1,1 ), maskFlag = TRUE) # ........................................................................................................ } plotPentosPhosphatePathway() dAA <- 0.4 plotAminoAcidBranches <- function(){ # grid.rect(x = unit(xAA1 - 1*sAA, "native"), y = unit( yGLT - 1.5*sAA, "native") , height = unit(11.5*sAA, "native"), width = unit( 4*sAA, "native"), gp=gpar(lty="dashed", col = "grey50") ,just = c("left", "bottom")) grid.text("PRO", x = unit(xAA2, "native"), y = unit(yGLT , "native"), gp = gpText ) grid.text("ARG", x = unit(xAA1, "native"), y = unit(yGLT + 1*sAA , "native"), gp = gpText ) grid.text("GLT", x = unit(xAA1, "native"), y = unit(yGLT , "native"), gp = gpText ) grid.text("GLN", x = unit(xAA1, "native"), y = unit(yGLT - 1*sAA , "native"), gp = gpText ) # grid.text("HIS", x = unit(xAA1, "native"), y = unit(yAA + 4*sAA , "native"), gp = gpText ) # up GLN addFluxArwAndSpark(xArrow = c( xAA1 + 0.75), yArrow = c(yGLT-sAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'R', ySpark = 'A', fluxNames = c('tGLNHPQ'), fluxSigns = c( 1 ), maskFlag = FALSE) # GLT to GLN addFluxArwAndSpark(xArrow = c(xAA1,xAA1), yArrow = c(yAA+ 2*sAA-dAA,yAA+ 1*sAA + dAA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c(''), fluxSigns = c( 1 ), maskFlag = FALSE) # up GLT addFluxArwAndSpark(xArrow = c( xAA1 + 0.75), yArrow = c(yGLT+dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'R', ySpark = 'A', fluxNames = c('tGLTUP'), fluxSigns = c( 1 ), maskFlag = FALSE) # GLT to PRO addFluxArwAndSpark(xArrow = c( xAA1 + 0.75, xAA2 - 0.75), yArrow = c(yGLT,yGLT), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xAA2 - 0.75), ySpark = ( yGLT - 0.5 - hSparkLines), fluxNames = c('cPROC'), fluxSigns = c( 1 ), maskFlag = FALSE) # up PRO addFluxArwAndSpark(xArrow = c( xAA2 + 0.75), yArrow = c(yGLT), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'LF', ySpark = 'A', fluxNames = c('tPROUPR','tPROUP2','tPROUP2'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # GLT to ARG addFluxArwAndSpark(xArrow = c(xAA1,xAA1), yArrow = c(yAA+ 2*sAA+dAA,yAA+ 3*sAA -dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = ( xAA1 + 1 ), ySpark = (yGLT + 0.75), fluxNames = c('cARGHR'), fluxSigns = c( 1 ), maskFlag = FALSE) # up ARG addFluxArwAndSpark(xArrow = c( xAA1 + 0.75), yArrow = c(yGLT+sAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xAA1+1.5*sAA), ySpark = 'C', fluxNames = c('tARGUP','tARGUP2','tARCDR'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # AKG to GLT addFluxArwAndSpark(xArrow = c(xTCA+rTCA+0.75,xAA1-0.75), yArrow = c(yTCA-rTCA/3,yAA+ 2*sAA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c(''), fluxSigns = c( 1 ), maskFlag = FALSE) grid.text("ASP", x = unit(xAA1, "native"), y = unit(yASP, "native"), gp = gpText ) grid.text("ASN", x = unit(xAA1, "native"), y = unit(yASP - 1*sAA , "native"), gp = gpText ) grid.text("THR", x = unit(xAA2, "native"), y = unit(yASP , "native"), gp = gpText ) grid.text("ILE", x = unit(xAA2, "native"), y = unit(yASP + 1*sAA , "native"), gp = gpText ) grid.text("LYS", x = unit(xAA2, "native"), y = unit(yASP - 1*sAA , "native"), gp = gpText ) # THR(pre) to LYS t <- seq(from =pi*13/12, to = pi*17/12, by = pi/20) addFluxArwAndSpark(xArrow = (cos(t)*sAA + xAA2 - sAA/4), yArrow = (sin(t)*sAA + yASP ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xAA2-0.75), ySpark = (yASP - sAA - 0.5 - hSparkLines), fluxNames = c('cLYSA'), fluxSigns = c( 1 ), maskFlag = FALSE) # up LYS addFluxArwAndSpark(xArrow = (xAA2+0.75), yArrow = (yASP - 1*sAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'LF', ySpark = 'B', fluxNames = c('tLYSUP1R','tLYSUP2','tLYSUP3'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # up THR addFluxArwAndSpark(xArrow = (xAA2+0.75), yArrow = (yASP ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'B', fluxNames = c('tTHRUP1','tTHRUP2R','tTHRUP3'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # from ASP to THR addFluxArwAndSpark(xArrow = c(xAA1+0.75,xAA2-2), yArrow = c(yASP,yASP), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'RC', ySpark = 'A' , fluxNames = c('cASDR'), fluxSigns = c( 1 ), maskFlag = TRUE) addFluxArwAndSpark(xArrow = c(xAA2-1.75,xAA2-0.75), yArrow = c(yASP,yASP), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c('cTHRC1'), fluxSigns = c( 1 ), maskFlag = FALSE) # GLY to THR # ........................................................................................................ addFluxArwAndSpark(xArrow = c( xAA1 +0.75 ,xAA2-0.75), yArrow = c(ySER - 1*sAA - dAA*0.75, yASP+0.5 ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L' , ySpark = (ySER - 1*sAA - 0.75 - hSparkLines ), fluxNames = c('cLTAAR','cGLYA4R'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # ........................................................................................................ # THR to ILE # arrowPlot( xArrow = c(xAA2, xAA2), yArrow = c(yASP + dAA ,yASP + 1*sAA - dAA ), arrowDirection = 'fwd', fValue = fValueX, # arrowBarbAngle = arrowsBarbAngle, arrowBarbLength = arrowsBarbLength, abrevFlag = FALSE, plotMode = plotType, # weightArrowMax = 5, zeroThresh = 1e-5, valueMaxDisplayWeight = 20) addFluxArwAndSpark(xArrow = c(xAA2, xAA2), yArrow = c(yASP + dAA ,yASP + 1*sAA - dAA ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'C', ySpark = (yASP + 1*sAA+0.4), fluxNames = c('cILVE1R'), fluxSigns = c( 1 ), maskFlag = FALSE) # up ILE addFluxArwAndSpark(xArrow = (xAA2+0.75), yArrow = (yASP + 1*sAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'LF', ySpark = 'A', fluxNames = c('tBCAAUP2R','tILEUP'), fluxSigns = c( 1,1), maskFlag = FALSE) # ASP to ASN addFluxArwAndSpark(xArrow = c(xAA1+dAA,xAA1+dAA), yArrow = c(yASP-dAA,yASP- sAA +dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c('cASNA1'), fluxSigns = c( 1 ), maskFlag = FALSE) addFluxArwAndSpark(xArrow = c(xAA1,xAA1), yArrow = c(yASP-dAA,yASP- sAA +dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xAA1 - 0.25 - sSL - wSparkLines), ySpark = (yASP- hSparkLines - sSL), fluxNames = c('cASNB1'), fluxSigns = c( 1 ), maskFlag = FALSE) addFluxArwAndSpark(xArrow = c(xAA1-dAA,xAA1-dAA), yArrow = c(yASP- sAA +dAA,yASP-dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c('cANSA','cANSB','cYBIK'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # up ASP addFluxArwAndSpark(xArrow = (xAA1-0.75), yArrow = (yASP - dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'B', fluxNames = c('tASPUP1','tASPUP2','tDCUB2','tDCUA2','tDCTA2'), fluxSigns = c( 1,1,1,1,1), maskFlag = FALSE) # up ASN addFluxArwAndSpark(xArrow = (xAA1+0.75), yArrow = (yASP - 1*sAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'B', fluxNames = c('tASNUP1R','tASNUP2'), fluxSigns = c( 1,1), maskFlag = FALSE) grid.text("TYR", x = unit(xAA2, "native"), y = unit(yTYR , "native"), gp = gpText ) grid.text("PHE", x = unit(xAA2, "native"), y = unit(yTYR + 1*sAA, "native"), gp = gpText ) grid.text("TRP", x = unit(xAA2, "native"), y = unit(yTYR + 2*sAA, "native"), gp = gpText ) grid.text("HIS", x = unit(xAA2, "native"), y = unit(yTYR + 3*sAA, "native"), gp = gpText ) # PEP to TYR(pre) t <- seq(from = pi, to = 3*pi/2, by = pi/20) xAROC_1 = c(xPP + 0.5 , xPP + 0.5, (cos(t) + xPP + 0.5 + 1),xAA2-2) yAROC_1 = c(yPP - 1.5, yTYR+1, (sin(t) + yTYR + 1),yTYR) addFluxArwAndSpark(xArrow = list(xAROC_1,c(xGlycolysis+0.75,xAA2-2)), yArrow = list(yAROC_1,c(yG6P - 11,yG6P - 11)), dirArrow = c('fwd','fwd'), abrevArrow = c(FALSE, FALSE), xSpark = (xLowerGlycolysis+3), ySpark = (yTYR+sSL), fluxNames = c('cAROC'), fluxSigns = c( 1 ), maskFlag = TRUE) # TYR(pre) to TYR addFluxArwAndSpark(xArrow = c(xAA2-1.75,xAA2-0.75), yArrow = c(yTYR,yTYR), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xAA2-0.75), ySpark = (yTYR - 0.5 - hSparkLines), fluxNames = c('cTYRB2R', 'cASPC2R'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # up TYR addFluxArwAndSpark(xArrow = c(xAA2+0.75), yArrow = c(yTYR), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'LF', ySpark = 'B', fluxNames = c('tTYRUPR', 'tTYRUP2R','tTYRUP3R'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # up PHE addFluxArwAndSpark(xArrow = c(xAA2+0.75), yArrow = c(yTYR + 1*sAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'LF', ySpark = 'BE', fluxNames = c('tPHEUPR', 'tPHEUP2R'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # up TRP addFluxArwAndSpark(xArrow = c(xAA2+0.75), yArrow = c(yTYR + 2*sAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'LF', ySpark = 'A', fluxNames = c('tTRPUPR', 'tTRPUP2R','tTRPUP3R'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # TYR(pre) to PHE t <- seq(from = pi*11/12, to = pi*7/12, by = -pi/20) addFluxArwAndSpark(xArrow = (cos(t)*sAA + xAA2 - sAA/4), yArrow = (sin(t)*sAA + yTYR ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xAA2-0.75), ySpark = (yTYR + sAA - 0.5 - hSparkLines), fluxNames = c('cTYRB1R','cASPC3R','cILVE3R'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # TYR(pre) to TRP t <- seq(from = pi, to = pi/2, by = -pi/20) xArrow1 = c(xAA2 - 2 , xAA2 - 2, (cos(t) + xAA2 - 1),xAA2 - 0.75) yArrow1 = c(yTYR+dAA, yTYR+2*sAA -1, (sin(t) + yTYR + 2*sAA -1),yTYR + 2*sAA) # HIS(pre) to TRP t <- seq(from = pi, to = pi*3/2, by = pi/20) xArrow2 = c(xAA2 - 2 , xAA2 - 2, (cos(t) + xAA2 - 1),xAA2 - 0.75) yArrow2 = c(yTYR+3*sAA, yTYR+2*sAA +1, (sin(t) + yTYR + 2*sAA +1),yTYR + 2*sAA) addFluxArwAndSpark(xArrow = list(xArrow1, xArrow2), yArrow = list(yArrow1, yArrow2), dirArrow = c('fwd','fwd'), abrevArrow = c(FALSE,FALSE), xSpark = 'R', ySpark = (yTYR + 2*sAA - 0.4 - hSparkLines), fluxNames = c('cTRPA','cTRPA2','cTNAA3R'), fluxSigns = c( 1,1,-1 ), maskFlag = FALSE) # PPRP to HIS(pre) t <- seq(from = pi, to = 5*pi/4, by = pi/20) xArrow1 = c(xAA2 - 2,xAA2 - 2) yArrow2 = c(yNT-0.25 + sNT,yTYR+3*sAA + dAA) addFluxArwAndSpark(xArrow = xArrow1, yArrow = yArrow2, dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c(''), fluxSigns = c( 1 ), maskFlag = FALSE) # HIS(pre) to HIS addFluxArwAndSpark(xArrow = c(xAA2-1.75,xAA2-0.75), yArrow = c(yTYR+3*sAA,yTYR+3*sAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'R', ySpark = 'A', fluxNames = c('cHISD'), fluxSigns = c( 1 ), maskFlag = FALSE) # up HIS addFluxArwAndSpark(xArrow = c(xAA2+0.75), yArrow = c(yTYR+3*sAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'A', fluxNames = c( 'tHISUP', 'tHISUP2R'), fluxSigns = c( 1,1 ), maskFlag = FALSE) grid.text("VAL", x = unit(xAA1, "native"), y = unit(yPYR , "native"), gp = gpText ) grid.text("LEU", x = unit(xAA1, "native"), y = unit(yPYR - 1*sAA, "native"), gp = gpText ) grid.text("ALA", x = unit(xAA2, "native"), y = unit(yPYR , "native"), gp = gpText ) # Val(pre) to VAL addFluxArwAndSpark(xArrow = c(xAA1-1.75,xAA1-0.75), yArrow = c(yPYR,yPYR), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'RC', ySpark = 'B', fluxNames = c('cILVE2R'), fluxSigns = c( 1 ), maskFlag = FALSE) # up VAL addFluxArwAndSpark(xArrow = c(xAA1+0.75), yArrow = c(yPYR), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C', ySpark = 'B', fluxNames = c('tBCAAUP3R','tVALUP'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # up LEU addFluxArwAndSpark(xArrow = c(xAA1-0.75), yArrow = c(yPYR- sAA ), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C', ySpark = 'B', fluxNames = c('tBCAAUP1R','tLEUUP','tLEUUP2'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # up ALA addFluxArwAndSpark(xArrow = c(xAA2+0.75), yArrow = c(yPYR), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'L', ySpark = 'AE', fluxNames = c('tALAUP','tCYCAR','tYTFQ2R'), fluxSigns = c( 1,1,1), maskFlag = FALSE) # PYR to VAL(pre) addFluxArwAndSpark(xArrow = c(xGlycolysis + 0.75,xAA1-2), yArrow = c(yPYR,yPYR), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xLowerGlycolysis+3), ySpark = (yPYR-1/3-hSparkLines), fluxNames = c('cILVD2'), fluxSigns = c( 1 ), maskFlag = FALSE) # VAL(pre) to LEU t <- seq(from =pi*13/12, to = pi*17/12, by = pi/20) addFluxArwAndSpark(xArrow = (cos(t)*sAA + xAA1 - sAA/4 ), yArrow = (sin(t)*sAA + yPYR ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = ( xAA1 - 3), ySpark = 'BB', fluxNames = c('cILVE4','cTYRB'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # PYR to ALA t1 <- seq(from = pi*3/4, to = pi/2, by = -pi/20) t2 <- seq(from = pi/2, to = pi/4, by = -pi/20) xArrow1 = c( (cos(t1) + xGlycolysis + 1.5),(cos(t2) + xAA2 - 1.5)) yArrow2 = c((sin(t1) + yPYR - dAA),(sin(t2) + yPYR -dAA )) addFluxArwAndSpark(xArrow = xArrow1, yArrow = yArrow2, dirArrow = 'rev', abrevArrow = FALSE, xSpark = (xLowerGlycolysis+3), ySpark = (yPYR+5/6), fluxNames = c('cALABR'), fluxSigns = c( 1 ), maskFlag = TRUE) grid.text("SER", x = unit(xAA1, "native"), y = unit(ySER, "native"), gp = gpText ) grid.text("GLY", x = unit(xAA1, "native"), y = unit(ySER - 1*sAA, "native"), gp = gpText ) grid.text("CYS", x = unit(xAA1, "native"), y = unit(ySER + 1*sAA, "native"), gp = gpText ) grid.text("MET", x = unit(xAA1, "native"), y = unit(ySER + 2*sAA, "native"), gp = gpText ) # 3PG to SER addFluxArwAndSpark(xArrow = c(xGlycolysis+0.75,xAA1-0.75), yArrow = c(ySER,ySER), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xLowerGlycolysis+3), ySpark = (ySER+sSL), fluxNames = c('cSERB'), fluxSigns = c( 1 ), maskFlag = TRUE) # up SER addFluxArwAndSpark(xArrow = c( xAA1-0.75), yArrow = c(ySER + dAA ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'BB', fluxNames = c('tSERUP1R','tSERUP2','tSERUP3R'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # SER to CYS addFluxArwAndSpark(xArrow = c(xAA1, xAA1), yArrow = c(ySER + dAA ,ySER + 1*sAA - dAA ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xAA1 - wSparkLines - sSL), ySpark = (ySER + dAA), fluxNames = c('cCYSK','cCYSM'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # up CYS addFluxArwAndSpark(xArrow = c( xAA1-0.75), yArrow = c(ySER + 1*sAA ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'C', ySpark = 'A', fluxNames = c('tCYSUP','tCYSUP2','tCYSUP3'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) # CYS to MET addFluxArwAndSpark(xArrow = c(xAA1, xAA1), yArrow = c(ySER + 1*sAA+ dAA ,ySER + 2*sAA - dAA ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xAA1 - wSparkLines - sSL), ySpark = (ySER + sAA + dAA), fluxNames = c('cMETH','cMETE'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # up MET addFluxArwAndSpark(xArrow = c( xAA1-0.75), yArrow = c(ySER + 2*sAA ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'R', ySpark = 'A', fluxNames = c('tMETUP'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # SER to GLY addFluxArwAndSpark(xArrow = c(xAA1, xAA1), yArrow = c(ySER - dAA ,ySER - 1*sAA + dAA ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xAA1 - wSparkLines - sSL), ySpark = (ySER - hSparkLines - dAA), fluxNames = c('cGLYA3'), fluxSigns = c( 1 ), maskFlag = FALSE) # up GLY addFluxArwAndSpark(xArrow = c( xAA1-0.75), yArrow = c(ySER - 1*sAA ), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('tYAAJR','tYEAV2R','tGLYUP1R'), fluxSigns = c( 1,1,1 ), maskFlag = FALSE) } plotAminoAcidBranches() plotMembraneBranches <- function(){ grid.text("mPG", x = unit(xMembrane, "native"), y = unit(yMembrane - sAA , "native"), gp = gpText ) grid.text("mCLPN", x = unit(xMembrane, "native"), y = unit(yMembrane - 2*sAA , "native"), gp = gpText ) grid.text("mPS", x = unit(xMembrane, "native"), y = unit(yMembrane + sAA , "native"), gp = gpText ) grid.text("mPE", x = unit(xMembrane, "native"), y = unit(yMembrane + 2*sAA , "native"), gp = gpText ) grid.text("mLPS", x = unit(xMembrane, "native"), y = unit(yMembrane + 3*sAA , "native"), gp = gpText ) grid.text("mPeptido", x = unit(xMembrane, "native"), y = unit(yMembrane + 4*sAA , "native"), gp = gpText ) # from ACCOA # ........................................................................................................ t <- seq(from=pi*3/2, to=pi, by=-pi/20) xACCOAtoLipoPre <- c(xLowerGlycolysis - 0.75,(cos(t) + xLowerGlycolysis -1.25 - 1), xLowerGlycolysis - 3.25) yACCOAtoLipoPre <- c(yG6P - 14.87,(sin(t) + yG6P - 14.87 + 1), yMembrane - 0.25) addFluxArwAndSpark(xArrow = xACCOAtoLipoPre, yArrow = yACCOAtoLipoPre, dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = (yG6P - 13), fluxNames = c('cFABB2','cFABF', 'cFABH2'), fluxSigns = c( 1,1,1 ), maskFlag = TRUE) # last one is not really an isozyme, fix later # ........................................................................................................ # # # # ........................................................................................................ # addFluxArwAndSpark(xArrow = c((xLowerGlycolysis - 3.5),xMembrane + 0.25), yArrow = c(yMembrane+0.25, yMembrane+0.25), dirArrow = 'fwd', abrevArrow = FALSE, # xSpark = NULL, ySpark = NULL, fluxNames = c(''), fluxSigns = c( 1 ), maskFlag = FALSE) # # ........................................................................................................ # # ........................................................................................................ addFluxArwAndSpark(xArrow = c((xLowerGlycolysis - 3.5),xMembrane + 0.25), yArrow = c(yMembrane, yMembrane), dirArrow = 'rev', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c('cCDSAR'), fluxSigns = c( 1 ), maskFlag = FALSE) # there is a back only rxn option here, add later # ........................................................................................................ # pre to PS_EC # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xMembrane,xMembrane), yArrow = c(yMembrane + 0.25, yMembrane + 1*sAA - dAA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('cPSSAR'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xMembrane,xMembrane), yArrow = c(yMembrane - 0.25, yMembrane - 1*sAA + dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('cPGPA','cPGPB'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # ........................................................................................................ # # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xMembrane,xMembrane), yArrow = c(yMembrane - 1*sAA - dAA, yMembrane - 2*sAA + dAA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('cCLSR'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xMembrane,xMembrane), yArrow = c(yMembrane + 1*sAA + dAA, yMembrane + 2*sAA - dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('cPSD'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # F6P to prePeptido # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xGlycolysis - 0.75,xGlycolysis - 1.75), yArrow = c(yG6P - 2, yG6P - 2), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c('cGLMU2'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # prePeptido to peptido # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xGlycolysis - 2, xMembrane + 1.5), yArrow = c(yG6P - 2, yG6P - 2), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'C', ySpark = 'A', fluxNames = c('cUNKRXN7'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # to LPS_EC # ........................................................................................................ t <- seq(from=0 , to=-pi/2, by= -pi/20) t2 <- seq(from=0 , to=pi/2, by= pi/20) x_toLPS1 <- c(xGlycolysis - 2, cos(t) + xGlycolysis - 2 - 1 ,xMembrane + 0.75) y_toLPS1 <- c(yG6P - 2 - 0.25, sin(t) + yMembrane+ 3*sAA + 1 ,yMembrane + 3*sAA) x_toLPS2 <- c(xLowerGlycolysis - 3.25, cos(t2) + xLowerGlycolysis - 3.25 - 1 ,xMembrane + 0.75) y_toLPS2 <- c(yMembrane, sin(t2) + yMembrane + 3*sAA - 1 ,yMembrane + 3*sAA) addFluxArwAndSpark(xArrow = list(x_toLPS1,x_toLPS2), yArrow = list(y_toLPS1,y_toLPS2), dirArrow = c('fwd','fwd'), abrevArrow = c(FALSE,FALSE), xSpark = 'C', ySpark = (yMembrane + 3*sAA + vS), fluxNames = c('cRFAL'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ } plotMembraneBranches() plotNTBranches <- function(){ # grid.rect(x = unit(xNT + 0.5* dNT, "native"), y = unit( yNT - 6*sNT, "native") , height = unit(10*sNT, "native"), width = unit( 3*dNT, "native"), gp=gpar(lty="dashed", col = "grey50") ,just = c("left", "bottom")) # # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xPP + 1.75,xNT- dNT-0.25), yArrow = c(yPP + 2, yNT+sNT), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xPP + 3) , ySpark = 'B', fluxNames = c('cPRSAR'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # GLY to # ........................................................................................................ t <- seq( from = -pi/2, to = 0, by = pi/20) addFluxArwAndSpark(xArrow = c((cos(t)*0.5 + xAA1+1.25-0.5),xAA1+1.25), yArrow = c((sin(t)*0.5+ 0.5+ySER - 1*sAA), yNT + sNT - 0.5), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xAA1 + 1 - wSparkLines) , ySpark = (yNT + - 3*hSparkLines ), fluxNames = c('cPURDR'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # PPRP to AMP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT -dNT, xNT + dNT - 0.75 ), yArrow = c(yNT+sNT-0.25, yNT+sNT-0.25), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = (xNT + 0.5) , ySpark = ( yNT+sNT-0.5 - hSparkLines), fluxNames = c('cPURB2R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ grid.text("AMP", x = unit(xNT + dNT, "native"), y = unit(yNT + sNT , "native"), gp = gpText ) grid.text("ADP", x = unit(xNT + 2*dNT, "native"), y = unit(yNT + sNT , "native"), gp = gpText ) grid.text("ATP", x = unit(xNT + 3*dNT, "native"), y = unit(yNT + sNT , "native"), gp = gpText ) grid.text("dAMP", x = unit(xNT + dNT, "native"), y = unit(yNT , "native"), gp = gpText ) grid.text("dADP", x = unit(xNT + 2*dNT, "native"), y = unit(yNT , "native"), gp = gpText ) grid.text("dATP", x = unit(xNT + 3*dNT, "native"), y = unit(yNT , "native"), gp = gpText ) # dAMP to dADP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +dNT + 0.75, xNT + 2*dNT - 0.75 ), yArrow = c(yNT, yNT), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'C' , ySpark = 'A', fluxNames = c('cADK4R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # dADP to dATP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +2*dNT + 0.75, xNT + 3*dNT - 0.75 ), yArrow = c(yNT, yNT), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'RC' , ySpark = 'A', fluxNames = c('cADK4R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # AMP to ADP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +dNT + 0.75, xNT + 2*dNT - 0.75 ), yArrow = c(yNT+ sNT, yNT+ sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, fluxNames = c(''), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # ADP to ATP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +2*dNT + 0.75, xNT + 3*dNT - 0.75 ), yArrow = c(yNT+ sNT, yNT+ sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = NULL , ySpark = NULL, fluxNames = c(''), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # ATP to dATP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +3*dNT, xNT + 3*dNT), yArrow = c( yNT+sNT - dAA,yNT+ dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L' , ySpark = 'C', fluxNames = c('cNRDD1'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # ADP to dADP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +2*dNT, xNT + 2*dNT), yArrow = c( yNT+sNT - dAA,yNT+ dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL , ySpark = NULL, fluxNames = c('cNRDA1'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # PPRP to GMP and AMP # ........................................................................................................ t <- seq( from = -pi/2, to = -pi/4, by = pi/20) addFluxArwAndSpark(xArrow = list( c((cos(t) + xNT - dNT/2 ), xNT + dNT - 0.75 ), c(xNT -dNT, xNT + dNT - 0.75 )), yArrow = list( c((sin(t)+yNT+sNT+1+0.1), yNT + 2*sNT - 0.25) , c(yNT+sNT +0.1, yNT+sNT+0.1)), dirArrow = c('fwd','fwd'), abrevArrow = c(FALSE, FALSE), xSpark = (xNT -dNT) , ySpark = (yNT +sNT+ 0.5), fluxNames = c('cGUAA'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ grid.text("GMP", x = unit(xNT + dNT, "native"), y = unit(yNT + 2*sNT, "native"), gp = gpText ) grid.text("GDP", x = unit(xNT + 2*dNT, "native"), y = unit(yNT + 2*sNT, "native"), gp = gpText ) grid.text("GTP", x = unit(xNT + 3*dNT, "native"), y = unit(yNT + 2*sNT, "native"), gp = gpText ) grid.text("dGMP", x = unit(xNT + dNT, "native"), y = unit(yNT + 3*sNT , "native"), gp = gpText ) grid.text("dGDP", x = unit(xNT + 2*dNT, "native"), y = unit(yNT + 3*sNT , "native"), gp = gpText ) grid.text("dGTP", x = unit(xNT + 3*dNT, "native"), y = unit(yNT + 3*sNT , "native"), gp = gpText ) # dGMP to dGDP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +dNT + 0.75, xNT + 2*dNT - 0.75 ), yArrow = c(yNT+3*sNT, yNT+3*sNT), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'C' , ySpark = 'B', fluxNames = c('cGMK2R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # dGDP to dGTP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT + 2*dNT + 0.75, xNT + 3*dNT - 0.75 ), yArrow = c(yNT+3*sNT, yNT+3*sNT), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'RC' , ySpark = 'B', fluxNames = c('cGMK2R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # GTP to dGTP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +3*dNT, xNT + 3*dNT), yArrow = c(yNT+ 2*sNT + dAA, yNT+3*sNT - dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = NULL , ySpark = NULL, fluxNames = c('cNRDD2'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # GDP to dGDP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +2*dNT, xNT + 2*dNT), yArrow = c(yNT+ 2*sNT + dAA, yNT+3*sNT - dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L' , ySpark = 'BB', fluxNames = c('cNRDA2'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # GMP to GDP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +dNT + 0.75, xNT + 2*dNT - 0.75 ), yArrow = c(yNT+ 2*sNT, yNT+ 2*sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = NULL , ySpark = NULL, fluxNames = c(''), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # GDP to GTP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +2*dNT + 0.75, xNT + 3*dNT - 0.75 ), yArrow = c(yNT+ 2*sNT, yNT+ 2*sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = NULL , ySpark = NULL, fluxNames = c(''), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ grid.text("dTMP", x = unit(xNT + dNT, "native"), y = unit(yNT - sNT , "native"), gp = gpText ) grid.text("dTDP", x = unit(xNT + 2*dNT, "native"), y = unit(yNT - sNT , "native"), gp = gpText ) grid.text("dTTP", x = unit(xNT + 3*dNT, "native"), y = unit(yNT - sNT , "native"), gp = gpText ) # dTMP to dTDP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +dNT + 0.75, xNT + 2*dNT - 0.75 ), yArrow = c(yNT-1*sNT, yNT-1*sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C', ySpark = 'A', fluxNames = c('cTMKR'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # dTDP to dTTP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +2*dNT + 0.75, xNT + 3*dNT - 0.75 ), yArrow = c(yNT-1*sNT, yNT-1*sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C', ySpark = 'A', fluxNames = c('cNDK0R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ grid.text("dUMP", x = unit(xNT + dNT, "native"), y = unit(yNT - 2*sNT , "native"), gp = gpText ) grid.text("dUDP", x = unit(xNT + 2*dNT, "native"), y = unit(yNT - 2*sNT , "native"), gp = gpText ) grid.text("dUTP", x = unit(xNT + 3*dNT, "native"), y = unit(yNT - 2*sNT , "native"), gp = gpText ) # dUMP to dTMP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +1*dNT , xNT + 1*dNT ), yArrow = c(yNT-2*sNT + dAA, yNT-1*sNT - dAA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'L' , ySpark = 'C', fluxNames = c('cTHYA'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # dUMP to dUDP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +dNT + 0.75, xNT + 2*dNT - 0.75 ), yArrow = c(yNT-2*sNT, yNT-2*sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C' , ySpark = 'B', fluxNames = c('cPYRH2R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # dUDP to dUTP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +2*dNT + 0.75, xNT + 3*dNT - 0.75 ), yArrow = c(yNT-2*sNT, yNT-2*sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C' , ySpark = 'A', fluxNames = c('cNDK6R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ grid.text("UMP", x = unit(xNT + dNT, "native"), y = unit(yNT - 3*sNT , "native"), gp = gpText ) grid.text("UDP", x = unit(xNT + 2*dNT, "native"), y = unit(yNT - 3*sNT , "native"), gp = gpText ) grid.text("UTP", x = unit(xNT + 3*dNT, "native"), y = unit(yNT - 3*sNT , "native"), gp = gpText ) # UTP to dUTP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +3*dNT , xNT + 3*dNT ), yArrow = c(yNT-3*sNT + dAA, yNT-2*sNT - dAA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'L' , ySpark = 'C', fluxNames = c('cNRDD4'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # UDP to dUDP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +2*dNT , xNT + 2*dNT ), yArrow = c(yNT-3*sNT + dAA, yNT-2*sNT - dAA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'L' , ySpark = 'BB', fluxNames = c('cNRDA4'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # UMP to UDP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +dNT + 0.75, xNT + 2*dNT - 0.75 ), yArrow = c(yNT-3*sNT, yNT-3*sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C' , ySpark = 'B', fluxNames = c('cCMKB3R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # UDP to UTP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +2*dNT + 0.75, xNT + 3*dNT - 0.75 ), yArrow = c(yNT-3*sNT, yNT-3*sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C' , ySpark = 'B', fluxNames = c('cNDK2R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # UTP to CTP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +3*dNT , xNT + 3*dNT ), yArrow = c(yNT-3*sNT - dAA, yNT-4*sNT + dAA), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'L' , ySpark = 'BB', fluxNames = c('cPYRG'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # to UMP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT -0.75, xNT +dNT - 0.75 ), yArrow = c(yNT-1.5*sNT, yNT-3*sNT+0.35), dirArrow = 'fwd', abrevArrow = TRUE, xSpark = (xNT -0.75) , ySpark = 'A', fluxNames = c('cPYRF'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ grid.text("CMP", x = unit(xNT + dNT, "native"), y = unit(yNT - 4*sNT , "native"), gp = gpText ) grid.text("CDP", x = unit(xNT + 2*dNT, "native"), y = unit(yNT - 4*sNT , "native"), gp = gpText ) grid.text("CTP", x = unit(xNT + 3*dNT, "native"), y = unit(yNT - 4*sNT , "native"), gp = gpText ) # CMP to CDP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +dNT + 0.75, xNT + 2*dNT - 0.75 ), yArrow = c(yNT-4*sNT, yNT-4*sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C' , ySpark = 'B', fluxNames = c('cCMKA2R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # CDP to CTP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +2*dNT + 0.75, xNT + 3*dNT - 0.75 ), yArrow = c(yNT-4*sNT, yNT-4*sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'RC' , ySpark = 'B', fluxNames = c('cNDK3R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ grid.text("dCMP", x = unit(xNT + dNT, "native"), y = unit(yNT - 5*sNT , "native"), gp = gpText ) grid.text("dCDP", x = unit(xNT + 2*dNT, "native"), y = unit(yNT - 5*sNT , "native"), gp = gpText ) grid.text("dCTP", x = unit(xNT + 3*dNT, "native"), y = unit(yNT - 5*sNT , "native"), gp = gpText ) # dCMP to dCDP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +dNT + 0.75, xNT + 2*dNT - 0.75 ), yArrow = c(yNT-5*sNT, yNT-5*sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C' , ySpark = 'B', fluxNames = c('cCMKA1R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # dCDP to dCTP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +2*dNT + 0.75, xNT + 3*dNT - 0.75 ), yArrow = c(yNT-5*sNT, yNT-5*sNT), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C' , ySpark = 'B', fluxNames = c('cNDK7R'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # CTP to dCTP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +3*dNT , xNT + 3*dNT ), yArrow = c(yNT-4*sNT - dAA, yNT-5*sNT + dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L' , ySpark = 'BB', fluxNames = c('cNRDD3'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # CDP to dCDP # ........................................................................................................ addFluxArwAndSpark(xArrow = c(xNT +2*dNT , xNT + 2*dNT ), yArrow = c(yNT-4*sNT - dAA, yNT-5*sNT + dAA), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L' , ySpark = 'BB', fluxNames = c('cNRDA3','cNRDE'), fluxSigns = c( 1,1 ), maskFlag = FALSE) # ........................................................................................................ } plotNTBranches() # yCellTop <- 28 # xCellRight <- 0 # rCell <- 2 # xCellLeft <- 30 # cShift <- 2 # tRT <- seq( from = pi/2, to =pi, by = pi/20) # xRT <- cos(tRT)*rCell+(xCellRight+rCell) # yRT <- sin(tRT)*rCell+ (yCellTop-rCell) # # tLT <- seq( from = 0, to =pi/2, by = pi/20) # xLT <- cos(tLT)*rCell+(xCellLeft-rCell) # yLT <- sin(tLT)*rCell+ (yCellTop-rCell) # # t1 <- seq( from = pi, to =5/4*pi, by = pi/20) # x1 <- cos(t1)*rCell+(xCellRight+rCell) # y1 <- sin(t1)*rCell+15 # # t2 <- seq( from = pi/4, to =0, by = -pi/20) # x2 <- cos(t2)*rCell+(xCellRight+rCell-rCell*sqrt(2)) + cShift # y2 <- sin(t2)*rCell+15-(rCell*sqrt(2)) - cShift # # xCell <- c(xLT,xRT,x1, x2) # yCell <- c(yLT,yRT, y1,y2) # # grid.lines( x= unit(xCell, "native"),y=unit(yCell, "native"), gp=gpar(lty="solid", col = "grey50") ) # xBioBox <- xMembrane # wBioBox <- 3 # yBioBox <- 27.5 # hBioBox <- 2 # # hViralBox <- 2*sT7+5.5 # yViralBox <- yT7-3.5 # # xHostRight <- 30 # yHostBottom <- yViralBox + 0.5 # xHostLeft <- (xBioBox-wBioBox/2) - 1.25 # xHostTuck <- 4.8 # yHostTuck <- 7 # xViralBox <- xT7+1.5 # wViralBox <- (3.75*sT7) # # # # # - - - - - - - - # grid.rect(x= unit(xBioBox, "native"),y=unit(yBioBox, "native"),width=unit(wBioBox, "native"),height=unit(hBioBox, "native"), # gp=gpar(lty="dotted", col = "black"),just=c("center",'bottom')) # # xHost <- c( (xBioBox+wBioBox/2),xHostRight,xHostRight,NA, (xViralBox-wViralBox) , xHostTuck, xHostTuck,xHostLeft, xHostLeft, (xBioBox-wBioBox/2)) # yHost <- c( (yBioBox+1), (yBioBox+1), (yT7-2.5+ 2*sT7+4.5) ,NA,yHostBottom,yHostBottom,yHostTuck,yHostTuck,(yBioBox+1),(yBioBox+1)) # grid.lines( x= unit(xHost, "native"),y=unit(yHost, "native"), gp=gpar(lty="dotted", col = "black") ) xBioBox <- xMembrane wBioBox <- 3 yBioBox <- 27.5 hBioBox <- 2 hViralBox <- 2*sT7+5.5 yViralBox <- yT7-3.5 xHostRight <- 30 -0.25 yHostBottom <- yViralBox + 0.5 xHostLeft <- (xBioBox-wBioBox/2) - 1.4 xHostTuck <- 4.8 yHostTuck <- 7 xViralBox <- xT7+1.25 wViralBox <- (3.75*sT7) # - - - - - - - - grid.rect(x= unit(xBioBox, "native"),y=unit(yBioBox, "native"),width=unit(wBioBox, "native"),height=unit(hBioBox, "native"), gp=gpar(lty="dotted", col = "black"),just=c("center",'bottom')) xHost <- c( (xBioBox+wBioBox/2),xHostRight,xHostRight,NA, (xViralBox-wViralBox) , xHostTuck, xHostTuck,xHostLeft, xHostLeft, (xBioBox-wBioBox/2)) yHost <- c( (yBioBox+1), (yBioBox+1), (yT7-2.5+ 2*sT7+4.5) ,NA,yHostBottom,yHostBottom,yHostTuck,yHostTuck,(yBioBox+1),(yBioBox+1)) grid.lines( x= unit(xHost, "native"),y=unit(yHost, "native"), gp=gpar(lty="dotted", col = "black") ) # - - - - - - - - - - - - - - - - - - - - - - - - ySL <- 0.5 xL <- 22 xSL <- 5 wL <- 0.5 grid.lines( x= unit(c(xL,xL+wL), "native"),y=unit((yBioBox+1.5 + ySL), "native"), gp=gpar(lty="solid", col = colsSparks[1]) ) grid.lines( x= unit(c(xL,xL+wL), "native"),y=unit((yBioBox+1.5 + ySL*2), "native"), gp=gpar(lty="solid", col = colsSparks[2]) ) grid.lines( x= unit(c(xL,xL+wL)+xSL, "native"),y=unit((yBioBox+1.5 + ySL), "native"), gp=gpar(lty="solid", col = colsSparks[3]) ) grid.lines( x= unit(c(xL,xL+wL)+xSL, "native"),y=unit((yBioBox+1.5 + ySL*2), "native"), gp=gpar(lty="solid", col = colsSparks[4]) ) grid.text(mediaLegend[1], x= unit(c(xL+wL+0.25), "native"),y=unit((yBioBox+1.5 + ySL), "native") ,just = c("left", "center") ) grid.text(mediaLegend[2], x= unit(c(xL+wL+0.25), "native"),y=unit((yBioBox+1.5 + ySL*2), "native"),just = c("left", "center") ) grid.text(mediaLegend[3], x= unit(c(xL+wL+0.25)+xSL, "native"),y=unit((yBioBox+1.5 + ySL), "native"),just = c("left", "center") ) grid.text(mediaLegend[4], x= unit(c(xL+wL+0.25)+xSL, "native"),y=unit((yBioBox+1.5 + ySL*2), "native"),just = c("left", "center") ) # - - - - - - - - - - - - - - - - - - - - - - - - # biomass # ........................................................................................................ grid.text("Biomass", x = unit(xBioBox, "native"), y = unit(yBioBox+hBioBox-0.5, "native"), gp = gpText, just = c("center", "center") ) addFluxArwAndSpark(xArrow = c(xBioBox+1,xBioBox+1), yArrow = c(yBioBox+hBioBox-1.75,yBioBox+hBioBox-1), dirArrow = 'fwd', abrevArrow = FALSE, xSpark = 'L', ySpark = 'C', fluxNames = c('bBIOMASS'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # - - - - - - - - viral rect grid.rect(x= unit(xViralBox, "native"),y=unit(yViralBox, "native"),width=unit(wViralBox, "native"),height=unit(hViralBox, "native"), gp=gpar(lty="dashed", col = "black"),just=c("right",'bottom')) grid.text("VIRAL \nREACTIONS", x = unit(((xViralBox - wViralBox)+0.25), "native"), y = unit((yViralBox + 0.25), "native"), gp = gpText, just = c("left", "bottom") ) # phage 10A # ........................................................................................................ t1 <- seq( from = pi/4, to =0, by = -pi/20) t2 <- seq( from = pi, to =3*pi/2, by = pi/20) t3 <- seq( from = -pi/4, to =0, by = pi/20) t4 <- seq( from = pi, to =pi/2, by = -pi/20) x_arwTo10A <- c((cos(t1) + (xAA2)) , (cos(t2) + (xAA2) + 2) , (xT7-2*sT7-0.75)) y_arwTo10A <- c((sin(t1) + (yTYR + 3*sAA) - 0.25),( sin(t2) + yT7+1 +0.5), yT7+0.5) x_arwTo10A2 <- c((cos(t3) + (xAA2)) , (cos(t4) + (xAA2) + 2) , (xT7-2*sT7-0.75)) y_arwTo10A2 <- c((sin(t3) + (yGLT) - 1),( sin(t4) + yT7-1 +0.5), yT7+0.5) grid.text("10A", x = unit(xT7-2*sT7, "native"), y = unit(yT7+0.5, "native"), gp = gpText, just = c("center", "center") ) addFluxArwAndSpark(xArrow = list(x_arwTo10A,x_arwTo10A2), yArrow = list(y_arwTo10A,y_arwTo10A2), dirArrow = c('fwd', 'fwd'), abrevArrow = c(FALSE,FALSE), xSpark = 'R', ySpark = (yT7+0.5+vS), fluxNames = c('vR_PROTEIN_GP10A'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # phage PC # ........................................................................................................ grid.text("PC", x = unit(xT7-0.75*sT7, "native"), y = unit(yT7+0.5, "native"), gp = gpText, just = c("center", "center") ) addFluxArwAndSpark(xArrow = c(xT7-2*sT7+0.75,xT7-0.75*sT7-0.5), yArrow = c(yT7+0.5,yT7+0.5), dirArrow = 'rev', abrevArrow = FALSE, xSpark = 'C', ySpark = 'B', fluxNames = c('vR_PROCAPSID'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # phage dNTPs # ........................................................................................................ t <- seq( from = pi/4, to =0, by = -pi/20) x_arwDATP <- c(cos(t) + (xT7) - 1, xT7) y_arwDATP <- c(sin(t) + (yNT) - 0.75 , yT7+2*sT7+0.5) x_arwDCTP <- c(cos(t) + (xT7) -1, xT7) y_arwDCTP <- c(sin(t) + (yNT - 5*sNT) - 0.75, yT7+2*sT7+0.5) x_arwDGTP <- c(cos(t) + (xT7) -1, xT7) y_arwDGTP <- c(sin(t) + (yNT + 3*sNT) - 0.75, yT7+2*sT7+0.5) x_arwDTTP <- c(cos(t) + (xT7) -1, xT7) y_arwDTTP <- c(sin(t) + (yNT - sNT) - 0.75, yT7+2*sT7+0.5) grid.text("t7dNTPs", x = unit(xT7, "native"), y = unit(yT7+2*sT7, "native"), gp = gpText, just = c("center", "center") ) addFluxArwAndSpark(xArrow = list(x_arwDATP,x_arwDCTP,x_arwDGTP,x_arwDTTP), yArrow = list(y_arwDATP,y_arwDCTP,y_arwDGTP,y_arwDTTP), dirArrow = c('fwd','fwd','fwd','fwd'), abrevArrow = c(FALSE, FALSE,FALSE, FALSE), xSpark = (xT7-0.25-wSparkLines), ySpark = (yT7+2*sT7+0.75), fluxNames = c('vR_ECGENDEG'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # phage genome # ........................................................................................................ grid.text("t7DNA", x = unit(xT7, "native"), y = unit(yT7+1*sT7, "native"), gp = gpText, just = c("center", "center") ) addFluxArwAndSpark(xArrow = c(xT7,xT7), yArrow = c(yT7+2*sT7-0.5,yT7+1*sT7+0.5), dirArrow = 'rev', abrevArrow = FALSE, xSpark = (xT7-0.25-wSparkLines), ySpark = (yT7+1*sT7+0.75), fluxNames = c('vR_GENOME'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # phage # ........................................................................................................ grid.text("T7", x = unit(xT7, "native"), y = unit(yT7 - 2, "native"), gp = gpText, just = c("center", "center") ) t <- seq( from = pi/2, to =0, by = -pi/20) x_arwFromPC <- c((xT7-0.75*sT7+0.5),cos(t) + (xT7) - 1, xT7) y_arwFromPC <- c((yT7+0.5),sin(t) + (yT7 -0.5), yT7-1.5) addFluxArwAndSpark(xArrow = list(c(xT7,xT7), x_arwFromPC), yArrow = list(c(yT7+1*sT7-0.5,yT7-1.5),y_arwFromPC), dirArrow = c('fwd','none'), abrevArrow = c(FALSE,FALSE), xSpark = (xT7-0.25-wSparkLines), ySpark = (yT7+0.75), fluxNames = c('vR_PHAGE'), fluxSigns = c( 1 ), maskFlag = FALSE) # addFluxArwAndSpark(xArrow = c(xT7-1*sT7+0.5,xT7-0.5), yArrow = c(yT7,yT7), dirArrow = 'rev', abrevArrow = FALSE, xSpark = NULL, ySpark = NULL, # fluxNames = c('vR_PHAGE'), fluxSigns = c( 1 ), maskFlag = FALSE) # ........................................................................................................ # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # print('done plotting') dev.off() # print('device off') } plotTheMap() # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # repFluxes <- c('bBIOMASS','cRFAL','cPRSAR','vR_MRNA_GP10A','cHISD','vR_PROTEIN_GP10A','cNDK7R','vR_ECGENDEG','vR_GENOME') repFluxes <- c('cRFAL','bBIOMASS','cPRSAR', 'cPGIR','cLYSA','cICDAR') #,'vR_PROTEIN_GP10A','vR_ECGENDEG','vR_MRNA_GP10A','vR_GENOME') subLabels <- c('i','ii','iii','iv','v','vi','vii','viii','ix','x') # open graphics device # postscript(file = paste("testFluxPlotterREpresentativeFluxes",fileTagToPlot,sep=''),horizontal = FALSE, paper = "letter", family = "Courier") # pdf(file = "testFluxPlotterPrototypePdfOut2", paper = "letter", family = "Courier") # pdf(file='figure4bHoriz.pdf', height=(hAll+0.5), width=(wAll+0.5), onefile=TRUE, family="Helvetica", pointsize = 7) postscript(paste('figureOutput',"figure6b_18cm_width.eps", sep= .Platform$file.sep), width = 6.5, height = 1.25, horizontal = FALSE, onefile = FALSE, paper = "special", pointsize = 8) nRepFlux <- length(repFluxes) layoutMat <- rbind(1:nRepFlux) par(ps=8,oma = c(1,0.5,1,0.5)) layout( layoutMat ) xValuesSpark <- list() yValuesSpark <- list() for(iPlotFlux in 1:nRepFlux){ par( mar= (c(2, 2, 0, 0)+0.1), xpd = NA, cex=1) for( iSim in 1:nSim){ # should the unit conversions occur in here? or be passed? xValuesSpark[[iSim]] <- hostList[[iSim]][['t']]*60 yValuesSpark[[iSim]] <- hostList[[iSim]][[repFluxes[iPlotFlux]]] yValuesSpark[[iSim]] <- yValuesSpark[[iSim]] - yValuesSpark[[iSim]][2] maxVal <- max(abs(yValuesSpark[[iSim]])) if( maxVal > 0 ){ yValuesSpark[[iSim]] <- yValuesSpark[[iSim]] / maxVal } } yScaleSpark <- c(min(unlist(yValuesSpark)),max(unlist(yValuesSpark))) yRangeSpark <- max(yScaleSpark) - min(yScaleSpark) for( iSim in 1:nSim){ idxEnd <- which.min( abs( xValuesSpark[[iSim]] - 20 ) ) xValuesSparkThis <- xValuesSpark[[iSim]][1:idxEnd] yValuesSparkThis <- yValuesSpark[[iSim]][1:idxEnd] if( iSim == 1){ plot( x=xValuesSparkThis, y=yValuesSparkThis, col = colsSparks[iSim] , type='l', xlab = '', ylab = '', axes = FALSE,ylim = c(yScaleSpark[1],(yScaleSpark[2]+yRangeSpark*0.2 ))) } else{ lines( x=xValuesSparkThis, y=yValuesSparkThis, col = colsSparks[iSim] ) } } atTicksOrig <- pretty( yScaleSpark ) if( atTicksOrig[1] < yScaleSpark[1] ){ atTicksOrig <- atTicksOrig[ 2:length(atTicksOrig) ] } if( atTicksOrig[length(atTicksOrig)] > yScaleSpark[2] ){ atTicksOrig <- atTicksOrig[ 1:(length(atTicksOrig)-1) ] } labels <- as.character( c(atTicksOrig[1],rep(NA, (length(atTicksOrig)-2)),atTicksOrig[length(atTicksOrig)]) ) axis(2,at = atTicksOrig, label = labels, cex=1) axis(1,at = c(0,5,10,15,20),label = c('0', NA, NA,NA,'20'), cex=1) title(paste(subLabels[iPlotFlux] ,sep=''), font.main = 1, cex = 1 ) } dev.off()