R/plot_ASAP.r

Defines functions PlotASAP

Documented in PlotASAP

#' Plot ASAP
#' 
#' This function calls all the other functions to create the desired outputs.
#' @param wd directory where ASAP run is located
#' @param asap.name Base name of original dat file (without the .dat extension)
#' @param nyrs.ave number of years to average for calculating Reference Points (defaults to 5)
#' @param correlation.limit will return parameter combos where |correlation| > value (defaults to 0.9)
#' @param scale.catch.bubble.resid larger values increase size of catch age comp bubbles (defaults to 2)
#' @param scale.index.bubble.resid larger values increase size of catch age comp bubbles (defaults to 2)
#' @param scale.catch.bubble.data larger values increase size of catch age comp bubbles (defaults to 6)
#' @param scale.index.bubble.data larger values increase size of catch age comp bubbles (defaults to 6)
#' @param orig.bubble.colors logical TRUE = red, white, FALSE = red, blue (defaults to FALSE)
#' @param pspr user defined value(s) of spr, e.g. 0.4 or c(0.4, 0.43, 0.46); if empty (default), calculated at seq(0.2, 0.5, by=0.1) 
#' @param mcmc.burn number of realizations to remove from start of MCMC (defaults to 0)
#' @param mcmc.thin thinning parameter for MCMC (defaults to 1)
#' @param first.age youngest age to use in catch curves, -999 finds peak age (defaults to -999)
#' @param save.plots saves indivdual plots (defaults to TRUE)
#' @param plotf format for individual plots (defaults to 'png')
#' @param make.one.pdf diagnostics/results/ref pts/MCMC/data are all saved as one pdf (defaults to TRUE)
#' @export
#' @examples PlotASAP("C:\\main.dir\\my.asap.results.dir","simple") 

PlotASAP <- function(wd, asap.name, nyrs.ave=5, correlation.limit=0.9, 
                     scale.catch.bubble.resid=2, scale.index.bubble.resid=2, 
                     scale.catch.bubble.data=6, scale.index.bubble.data=6,
                     orig.bubble.colors=FALSE, pspr=c(), 
                     mcmc.burn=0, mcmc.thin=1,
                     first.age=-999, save.plots=TRUE, plotf='png', make.one.pdf=TRUE){

  wd <- gsub("/", "\\\\", wd)  # change from unix to Windows directory approach if needed
  od <- paste0(wd,"\\plots\\")
  if (dir.exists(od) == FALSE)  dir.create(od)
  
  pdf.name <- asap.name
  
  retro.flag <- FALSE  
  if (file.exists(paste0(wd,"\\",asap.name, ".rts"))){
    retro.flag <- TRUE
    asap.name <- paste0(asap.name,"_000")  # change asap.name to use null retro peel
  }

  rdat <- paste0(asap.name,".rdat")
  asap <- dget(paste0(wd,"\\",rdat))
  
  liz.palette = c( "black"  ,  "purple3" ,  "blue"  ,  "turquoise2"  ,
                   "red2" ,   "orange" ,  "#994411",   "#770000"    ,
                   "#335500"  ,  "springgreen3" , "green1" ,  "gold3",
                   "#333388" ,      "orchid"   ,     "mediumpurple1"      , "gray60"  , 
                   "deeppink4"  ,    "violetred2"  ,     "#9900AA"    , "#8888EE",
                   "yellow1"   ,     "yellowgreen"  ,  "#778800" ,      "#FFBB11"  ,  
                   "#CC5588"  ,"#11BB77"   , "#11AADD"   ,   "#335522"   ,  
                   "#BB1133"   ,     "#4400AA",  "#FF7755"   ,  "#77AACC"   , 
                   "#FF00BB" ,  "grey50"   ,  "#FF2233" , "#99BB77"  ,  
                   "grey35"   ,    "#CCDD00" ,    "#AA77FF"   ,  "#88BB88"    )
  liz.palette <- rep(liz.palette, 5)
  
  graphics.off()
  
  windows( height=12, width=10, record=T)

  #--- Model Diagnostics
  
  gn <- GrabNames(wd,asap.name,asap)
  fleet.names <- gn$fleet.names
  index.names <- gn$index.names
  
  a1 <- GrabAuxFiles(wd,asap.name,asap,fleet.names,index.names)  #TODO make sure a1 exists
  npar<-a1$npar     
  max.grad<-a1$max.grad
  MakeSelectivityDecoder(wd,asap,a1,index.names,od)
  PlotFrontPage(wd,asap.name,asap,a1,save.plots,od,plotf)
  PlotHighCorr(a1,correlation.limit,save.plots,od,plotf)
  PlotHighCVs(a1,save.plots,od,plotf)
  SummarizeASAP(asap,a1,od)
  
  PlotMainLikelihoods(asap.name,asap,a1,save.plots,od,plotf,liz.palette)
  PlotRMSEtable(asap.name,asap,save.plots,od,plotf)
  PlotRMSE95CI(asap,index.names,save.plots,od,plotf,liz.palette)
  PlotCatch4Panel(asap,fleet.names,save.plots,od,plotf,liz.palette)
  PlotDiscard4Panel(asap,fleet.names,save.plots,od,plotf,liz.palette)
  PlotCatchAgeComp(asap,fleet.names,save.plots,od,plotf,liz.palette)  # catch
  PlotCatchAgeCompResids(asap,fleet.names,save.plots,od,plotf,scale.catch.bubble.resid,orig.bubble.colors)  # bubble plots
  PlotCatchAgeComp(asap,fleet.names,save.plots,od,plotf,liz.palette,is.catch.flag=FALSE)  # discards
  PlotCatchAgeCompResids(asap,fleet.names,save.plots,od,plotf,scale.catch.bubble.resid,orig.bubble.colors,is.catch.flag=FALSE)  # discard bubble plots
  PlotFleetNeff(asap,fleet.names,save.plots,od,plotf,liz.palette)
  PlotFrancisFleet(asap,a1,fleet.names,save.plots,od,plotf)
  PlotFleetNeff(asap,fleet.names,save.plots,od,plotf,liz.palette,is.catch.flag=FALSE)  # discards
  PlotFrancisFleet(asap,a1,fleet.names,save.plots,od,plotf,is.catch.flag=FALSE)  # discards
  PlotIndices4Panel(asap,index.names,save.plots,od,plotf,liz.palette)
  PlotIndexAgeCompResids(asap,index.names,save.plots,od,plotf,scale.index.bubble.resid,orig.bubble.colors)
  PlotIndexNeff(asap,index.names,save.plots,od,plotf,liz.palette)
  PlotFrancisIndex(asap,index.names,save.plots,od,plotf)  
  
  #--- Model Results
  
  PlotFleetSelBlocks(asap,fleet.names,save.plots,od,plotf,liz.palette)
  PlotFleetFmult(asap,fleet.names,save.plots,od,plotf,liz.palette)
  PlotIndexSelectivities(asap,index.names,save.plots,od,plotf,liz.palette)
  PlotCatchCurvesForCatch(asap,a1,save.plots,od,plotf,first.age)
  PlotCatchCurvesForIndices(asap,a1,save.plots,od,plotf,first.age)
  get_Sinclair_Z(asap,a1,index.names,save.plots,od,plotf)    
  PlotCatchAtAgeConsistency(asap,fleet.names,save.plots,od,plotf)
  PlotIndexAtAgeConsistency(asap,index.names,save.plots,od,plotf)
  PlotCatchability(asap,index.names,a1,save.plots,od,plotf,liz.palette)
  PlotSSBFtrend(asap,save.plots,od,plotf)
  PlotAllBiomassTypes(asap,save.plots,od,plotf)
  PlotSSBatAge(asap,save.plots,od,plotf,liz.palette)
  PlotNAA(asap,save.plots,od,plotf,liz.palette)
  PlotRecruitmentDevs(asap,save.plots,od,plotf)
  PlotRecrSSByr(asap,save.plots,od,plotf) 
  PlotSRpredLine(asap,save.plots,od,plotf)
  PlotSARCrecSSB(asap,save.plots,od,plotf)
  PlotCV(asap,a1,save.plots,od,plotf)
  if (retro.flag == TRUE) PlotRetroWrapper(wd,asap.name,asap,save.plots,od,plotf)
  
  #--- Reference Points
  
  PlotYieldCurves(asap,a1,nyrs.ave,save.plots,od,plotf)
  PlotSPRtable(asap,a1,nyrs.ave,save.plots,od,plotf)
  PlotExpSpawn(asap,a1,nyrs.ave,save.plots,od,plotf)
  annualSPRlist <- PlotAnnualSPRtargets(asap,pspr,save.plots,od,plotf)
  PlotAnnualMSY(asap,a1,save.plots,od,plotf)
  
  #--- MCMC results (assume user only does 1 chain)
  
  if (asap$options$do.mcmc>0) PlotMCMC(wd,asap.name,asap,mcmc.burn,mcmc.thin,save.plots,od,plotf)
  
  #--- Input Data
  PlotCatchByFleet(asap,fleet.names,save.plots,od,plotf,liz.palette)
  PlotCatchAgeCompBubbles(asap,fleet.names,save.plots,od,plotf,scale.catch.bubble.data)
  PlotCatchAgeCompBubbles(asap,fleet.names,save.plots,od,plotf,scale.catch.bubble.data,
                          is.catch.flag=FALSE)  # discards
  PlotIndexInput(asap,save.plots,od,plotf,liz.palette)
  PlotIndexAgeCompBubbles(asap,index.names,save.plots,od,plotf,scale.index.bubble.data)
  PlotWAAmatrices(asap,save.plots,od,plotf,liz.palette)
  PlotM(asap,save.plots,od,plotf)
  PlotMaturity(asap,save.plots,od,plotf)

  
  #------------------------------------
  #------  PDF Files  ---------------

  save.plots=F
  graphics.off()
  
  if (make.one.pdf==T) {
    windows()
    pdf(file=paste0(od,pdf.name,".ALL.PLOTS.pdf"), onefile=T)
    PlotFrontPage(wd,asap.name,asap,a1,save.plots,od,plotf)
    PlotMainLikelihoods(asap.name,asap,a1,save.plots,od,plotf,liz.palette)
    PlotHighCorr(a1,correlation.limit,save.plots,od,plotf)
    PlotHighCVs(a1,save.plots,od,plotf)
    PlotRMSEtable(asap.name,asap,save.plots,od,plotf)
    PlotRMSE95CI(asap,index.names,save.plots,od,plotf,liz.palette)
    PlotCatch4Panel(asap,fleet.names,save.plots,od,plotf,liz.palette)
    PlotDiscard4Panel(asap,fleet.names,save.plots,od,plotf,liz.palette)
    PlotCatchAgeComp(asap,fleet.names,save.plots,od,plotf,liz.palette)  # catch
    PlotCatchAgeCompResids(asap,fleet.names,save.plots,od,plotf,scale.catch.bubble.resid,orig.bubble.colors)  # bubble plots
    PlotCatchAgeComp(asap,fleet.names,save.plots,od,plotf,liz.palette,is.catch.flag=FALSE)  # discards
    PlotCatchAgeCompResids(asap,fleet.names,save.plots,od,plotf,scale.catch.bubble.resid,orig.bubble.colors,is.catch.flag=FALSE)  # discard bubble plots
    PlotFleetNeff(asap,fleet.names,save.plots,od,plotf,liz.palette)
    PlotFrancisFleet(asap,a1,fleet.names,save.plots,od,plotf)
    PlotFleetNeff(asap,fleet.names,save.plots,od,plotf,liz.palette,is.catch.flag=FALSE)  # discards
    PlotFrancisFleet(asap,a1,fleet.names,save.plots,od,plotf,is.catch.flag=FALSE)  # discards
    PlotIndices4Panel(asap,index.names,save.plots,od,plotf,liz.palette)
    PlotIndexAgeCompResids(asap,index.names,save.plots,od,plotf,scale.index.bubble.resid,orig.bubble.colors)
    PlotIndexNeff(asap,index.names,save.plots,od,plotf,liz.palette)
    PlotFrancisIndex(asap,index.names,save.plots,od,plotf)  
    PlotFleetSelBlocks(asap,fleet.names,save.plots,od,plotf,liz.palette)
    PlotFleetFmult(asap,fleet.names,save.plots,od,plotf,liz.palette)
    PlotIndexSelectivities(asap,index.names,save.plots,od,plotf,liz.palette)
    PlotCatchCurvesForCatch(asap,a1,save.plots,od,plotf,first.age)
    PlotCatchCurvesForIndices(asap,a1,save.plots,od,plotf,first.age)
    get_Sinclair_Z(asap,a1,index.names,save.plots,od,plotf)    
    PlotCatchAtAgeConsistency(asap,fleet.names,save.plots,od,plotf)
    PlotIndexAtAgeConsistency(asap,index.names,save.plots,od,plotf)
    PlotCatchability(asap,index.names,a1,save.plots,od,plotf,liz.palette)
    PlotSSBFtrend(asap,save.plots,od,plotf)
    PlotAllBiomassTypes(asap,save.plots,od,plotf)
    PlotSSBatAge(asap,save.plots,od,plotf,liz.palette)
    PlotNAA(asap,save.plots,od,plotf,liz.palette)
    PlotRecruitmentDevs(asap,save.plots,od,plotf)
    PlotRecrSSByr(asap,save.plots,od,plotf) 
    PlotSRpredLine(asap,save.plots,od,plotf)
    PlotSARCrecSSB(asap,save.plots,od,plotf)
    PlotCV(asap,a1,save.plots,od,plotf)
    if (retro.flag == TRUE) PlotRetroWrapper(wd,asap.name,asap,save.plots,od,plotf)
    PlotYieldCurves(asap,a1,nyrs.ave,save.plots,od,plotf)
    PlotSPRtable(asap,a1,nyrs.ave,save.plots,od,plotf)
    PlotExpSpawn(asap,a1,nyrs.ave,save.plots,od,plotf)
    annualSPRlist <- PlotAnnualSPRtargets(asap,pspr,save.plots,od,plotf)
    PlotAnnualMSY(asap,a1,save.plots,od,plotf)
    if (asap$options$do.mcmc>0) PlotMCMC(wd,asap.name,asap,mcmc.burn,mcmc.thin,save.plots,od,plotf)
    PlotCatchByFleet(asap,fleet.names,save.plots,od,plotf,liz.palette)
    PlotCatchAgeCompBubbles(asap,fleet.names,save.plots,od,plotf,scale.catch.bubble.data)
    PlotCatchAgeCompBubbles(asap,fleet.names,save.plots,od,plotf,scale.catch.bubble.data,
                            is.catch.flag=FALSE)  # discards
    PlotIndexInput(asap,save.plots,od,plotf,liz.palette)
    PlotIndexAgeCompBubbles(asap,index.names,save.plots,od,plotf,scale.index.bubble.data)
    PlotWAAmatrices(asap,save.plots,od,plotf,liz.palette)
    PlotM(asap,save.plots,od,plotf)
    PlotMaturity(asap,save.plots,od,plotf)
    dev.off()      
    graphics.off()
  } # end make.one.pdf
  
  #--------------------------------------------------
  #--------Now make individual pdfs------------------
  #_________DIAGNOSTIC PLOTS___________________
  
  windows()
  pdf(file=paste0(od,pdf.name,".DIAGNOSTIC.PLOTS.pdf"), onefile=T)
  PlotFrontPage(wd,asap.name,asap,a1,save.plots,od,plotf)
  PlotMainLikelihoods(asap.name,asap,a1,save.plots,od,plotf,liz.palette)
  PlotHighCorr(a1,correlation.limit,save.plots,od,plotf)
  PlotHighCVs(a1,save.plots,od,plotf)
  PlotRMSEtable(asap.name,asap,save.plots,od,plotf)
  PlotRMSE95CI(asap,index.names,save.plots,od,plotf,liz.palette)
  PlotCatch4Panel(asap,fleet.names,save.plots,od,plotf,liz.palette)
  PlotDiscard4Panel(asap,fleet.names,save.plots,od,plotf,liz.palette)
  PlotCatchAgeComp(asap,fleet.names,save.plots,od,plotf,liz.palette)  # catch
  PlotCatchAgeCompResids(asap,fleet.names,save.plots,od,plotf,scale.catch.bubble.resid,orig.bubble.colors)  # bubble plots
  PlotCatchAgeComp(asap,fleet.names,save.plots,od,plotf,liz.palette,is.catch.flag=FALSE)  # discards
  PlotCatchAgeCompResids(asap,fleet.names,save.plots,od,plotf,scale.catch.bubble.resid,orig.bubble.colors,is.catch.flag=FALSE)  # discard bubble plots
  PlotFleetNeff(asap,fleet.names,save.plots,od,plotf,liz.palette)
  PlotFrancisFleet(asap,a1,fleet.names,save.plots,od,plotf)
  PlotFleetNeff(asap,fleet.names,save.plots,od,plotf,liz.palette,is.catch.flag=FALSE)  # discards
  PlotFrancisFleet(asap,a1,fleet.names,save.plots,od,plotf,is.catch.flag=FALSE)  # discards
  PlotIndices4Panel(asap,index.names,save.plots,od,plotf,liz.palette)
  PlotIndexAgeCompResids(asap,index.names,save.plots,od,plotf,scale.index.bubble.resid,orig.bubble.colors)
  PlotIndexNeff(asap,index.names,save.plots,od,plotf,liz.palette)
  PlotFrancisIndex(asap,index.names,save.plots,od,plotf)  
  dev.off()
  graphics.off()
  
  #_________RESULTS___________________
  
  windows()
  pdf(file=paste0(od,pdf.name,".RESULTS.PLOTS.pdf"), onefile=T)
  PlotFleetSelBlocks(asap,fleet.names,save.plots,od,plotf,liz.palette)
  PlotFleetFmult(asap,fleet.names,save.plots,od,plotf,liz.palette)
  PlotIndexSelectivities(asap,index.names,save.plots,od,plotf,liz.palette)
  PlotCatchCurvesForCatch(asap,a1,save.plots,od,plotf,first.age)
  PlotCatchCurvesForIndices(asap,a1,save.plots,od,plotf,first.age)
  get_Sinclair_Z(asap,a1,index.names,save.plots,od,plotf)    
  PlotCatchAtAgeConsistency(asap,fleet.names,save.plots,od,plotf)
  PlotIndexAtAgeConsistency(asap,index.names,save.plots,od,plotf)
  PlotCatchability(asap,index.names,a1,save.plots,od,plotf,liz.palette)
  PlotSSBFtrend(asap,save.plots,od,plotf)
  PlotAllBiomassTypes(asap,save.plots,od,plotf)
  PlotSSBatAge(asap,save.plots,od,plotf,liz.palette)
  PlotNAA(asap,save.plots,od,plotf,liz.palette)
  PlotRecruitmentDevs(asap,save.plots,od,plotf)
  PlotRecrSSByr(asap,save.plots,od,plotf) 
  PlotSRpredLine(asap,save.plots,od,plotf)
  PlotSARCrecSSB(asap,save.plots,od,plotf)
  PlotCV(asap,a1,save.plots,od,plotf)
  if (retro.flag == TRUE) PlotRetroWrapper(wd,asap.name,asap,save.plots,od,plotf)
  dev.off()
  graphics.off()
  
  #_________RETRO___________________
  
  if (retro.flag == TRUE){
    windows()
    pdf(file=paste0(od,pdf.name,".RETRO.PLOTS.pdf"), onefile=TRUE)
    PlotRetroWrapper(wd,asap.name,asap,save.plots,od,plotf)
    dev.off()
    graphics.off()
  }

  #_________  MCMC   ___________________
  if (asap$options$do.mcmc>0) {
    windows()
    pdf(file=paste0(od,pdf.name,".MCMC.PLOTS.pdf"), onefile=T)
    PlotMCMC(wd,asap.name,asap,mcmc.burn,mcmc.thin,save.plots,od,plotf) 
    dev.off()      
    graphics.off()
  }

  #_________REFERENCE POINTS___________________
  
  windows()
  pdf(file=paste0(od,pdf.name,".REF.POINTS.PLOTS.pdf"), onefile=T )
  PlotYieldCurves(asap,a1,nyrs.ave,save.plots,od,plotf)
  PlotSPRtable(asap,a1,nyrs.ave,save.plots,od,plotf)
  PlotExpSpawn(asap,a1,nyrs.ave,save.plots,od,plotf)
  annualSPRlist <- PlotAnnualSPRtargets(asap,pspr,save.plots,od,plotf)
  PlotAnnualMSY(asap,a1,save.plots,od,plotf)
  dev.off()      
  graphics.off()
  
  #_________INPUTS___________________
  
  windows()
  pdf(file=paste0(od,pdf.name,".DATA.PLOTS.pdf"), onefile=T)
  PlotCatchByFleet(asap,fleet.names,save.plots,od,plotf,liz.palette)
  PlotCatchAgeCompBubbles(asap,fleet.names,save.plots,od,plotf,scale.catch.bubble.data)
  PlotCatchAgeCompBubbles(asap,fleet.names,save.plots,od,plotf,scale.catch.bubble.data,
                          is.catch.flag=FALSE)  # discards
  PlotIndexInput(asap,save.plots,od,plotf,liz.palette)
  PlotIndexAgeCompBubbles(asap,index.names,save.plots,od,plotf,scale.index.bubble.data)
  PlotWAAmatrices(asap,save.plots,od,plotf,liz.palette)
  PlotM(asap,save.plots,od,plotf)
  PlotMaturity(asap,save.plots,od,plotf)
  dev.off()      
  graphics.off()
  
  return()
}
cmlegault/ASAPplots documentation built on March 29, 2021, 8:28 p.m.