R/NMrunLog.R

Defines functions NMrunLog

Documented in NMrunLog

##' get an overview of your Nonmem runs
##'
##' @param dir The directory in which to search for runs
##' @param runs Runs to include in case you only want a specific subset.
##' @param runs.omit Runs to omit in case you want all but these.
##' @param debug start by running browser()?
##' @family Nonmem
##' @export

## TODO add ParNearBoundary
## TODO wrap in try.

NMrunLog <- function(dir,runs,runs.omit,debug=F){
    if(debug) browser()
    if(missing(runs)) {
        runs.lst <- sub("\\.lst$","",list.files(dir,"\\.lst$",ignore.case=T))
        runs.mod <- sub("\\.mod$","",list.files(dir,"\\.mod$",ignore.case=T))
        runs <- sort(unique(c(runs.lst,runs.mod)))
    } else {
        runs <- sub("\\.lst$|\\.mod$","",runs)
    }
    
    if(!missing(runs.omit)) {
        runs.omit <- sub("^ | $","",runs.omit)
        runs.omit <- sub("\\.lst$|\\.mod$","",runs.omit)
        runs <- setdiff(runs,runs.omit)
    }

    if(length(runs)<1) stop("No runs matched.")
    if(!missing(dir)) runs <- lapply(runs,function(run) filePathSimple(dir,run))

    runs.list <- lapply(runs,
                        function(run){
                            cat(run,"\n")
                            reslist <- try(NMreadRun(paste0(run,".lst"),debug=F))
                            if("try-error"%in%class(reslist)) {
                                warning("Could not read",run)
                                return(NULL)
                            } else {
## grad.max deleted. Why not available?
                                els.to.get <- c("run","problem","Npars","OFV","run.ref","subroutine","covRun","finalZeroGradient","covSuccessful","conditionNumber","Nsubjs","Nobs","minSuccessful","roundingErrors","min.problem","near.bound","convsum","cov.request","cov.comment","covsum","conv.OK")
                                    ## setdiff(els.to.get,names(reslist))

                                as.data.frame(
                                    reslist[els.to.get]
                                   ,
                                    stringsAsFactors=F
                                )
                            }}
                        )
    
    tab <- do.call(rbind,runs.list)

    

    tab$Model <- 1:nrow(tab)
    tab[,c("Model",setdiff(colnames(tab),"Model"))]
    
}
philipdelff/NMrunlog documentation built on Oct. 30, 2021, 10:26 p.m.