diff --git a/RegressionTests/Code/gam.R b/RegressionTests/Code/gam.R index edc4a7a4d..9df549755 100644 --- a/RegressionTests/Code/gam.R +++ b/RegressionTests/Code/gam.R @@ -26,6 +26,14 @@ test_class_cv_model <- train(trainX, trainY, metric = "ROC", preProc = c("center", "scale")) +set.seed(849) +test_class_cv_dist <- train(trainX, trainY, + method = "gam", + trControl = cctrl1, + metric = "ROC", + preProc = c("center", "scale"), + family = negbin(theta = 1)) + set.seed(849) test_class_cv_form <- train(Class ~ ., data = training, method = "gam", @@ -94,11 +102,18 @@ test_reg_cv_model <- train(trainX, trainY, preProc = c("center", "scale")) test_reg_pred <- predict(test_reg_cv_model, testX) +set.seed(849) +test_reg_cv_dist <- train(trainX, trainY, + method = "gam", + trControl = rctrl1, + preProc = c("center", "scale"), + family = scat()) + set.seed(849) test_reg_cv_form <- train(y ~ ., data = training, - method = "gam", - trControl = rctrl1, - preProc = c("center", "scale")) + method = "gam", + trControl = rctrl1, + preProc = c("center", "scale")) test_reg_pred_form <- predict(test_reg_cv_form, testX) set.seed(849) diff --git a/RegressionTests/Code/gamSpline.R b/RegressionTests/Code/gamSpline.R index 83269a1bb..610181052 100644 --- a/RegressionTests/Code/gamSpline.R +++ b/RegressionTests/Code/gamSpline.R @@ -26,6 +26,14 @@ test_class_cv_model <- train(trainX, trainY, metric = "ROC", preProc = c("center", "scale")) +set.seed(849) +test_class_cv_dist <- train(trainX, trainY, + method = "gamSpline", + trControl = cctrl1, + metric = "ROC", + preProc = c("center", "scale"), + family = binomial(link = "cloglog")) + set.seed(849) test_class_cv_form <- train(Class ~ ., data = training, method = "gamSpline", @@ -95,6 +103,13 @@ test_reg_cv_model <- train(trainX, trainY, preProc = c("center", "scale")) test_reg_pred <- predict(test_reg_cv_model, testX) +set.seed(849) +test_reg_cv_dist <- train(trainX, abs(trainY), + method = "gamSpline", + trControl = rctrl1, + preProc = c("center", "scale"), + family = Gamma) + set.seed(849) test_reg_cv_form <- train(y ~ ., data = training, method = "gamSpline", diff --git a/RegressionTests/Code/gbm.R b/RegressionTests/Code/gbm.R index a9314d8cb..d75439059 100644 --- a/RegressionTests/Code/gbm.R +++ b/RegressionTests/Code/gbm.R @@ -32,6 +32,17 @@ test_class_cv_model <- train(trainX, trainY, tuneGrid = gbmGrid, verbose = FALSE) +set.seed(849) +test_class_cv_dist <- train(trainX, trainY, + method = "gbm", + trControl = cctrl1, + metric = "ROC", + preProc = c("center", "scale"), + tuneGrid = gbmGrid, + verbose = FALSE + distribution = "adaboost") + + set.seed(849) test_class_cv_form <- train(Class ~ ., data = training, method = "gbm", @@ -108,6 +119,15 @@ test_reg_cv_model <- train(trainX, trainY, verbose = FALSE) test_reg_pred <- predict(test_reg_cv_model, testX) +set.seed(849) +test_reg_cv_dist <- train(trainX, trainY, + method = "gbm", + trControl = rctrl1, + preProc = c("center", "scale"), + tuneGrid = gbmGrid, + verbose = FALSE, + distribution = "laplace") + set.seed(849) test_reg_cv_form <- train(y ~ ., data = training, method = "gbm", diff --git a/models/files/gam.R b/models/files/gam.R index 454cbc605..6c23e42db 100644 --- a/models/files/gam.R +++ b/models/files/gam.R @@ -17,26 +17,22 @@ modelInfo <- list(label = "Generalized Additive Model using Splines", dat$.outcome <- y dist <- gaussian() } - out <- mgcv:::gam(modForm, data = dat, family = dist, + modelArgs <- list(formula = modForm, + data = dat, select = param$select, - method = as.character(param$method), - ...) -# if(is.null(wts)) { -# -# } else { -# out <- mgcv:::gam(modForm, data = dat, family = dist, -# select = param$select, -# method = as.character(param$method), -# weights = wts, -# ...) -# } + method = as.character(param$method)) + ## Intercept family if passed in + theDots <- list(...) + if(!any(names(theDots) == "family")) modelArgs$family <- dist + modelArgs <- c(modelArgs, theDots) + + out <- do.call(getFromNamespace("gam", "mgcv"), modelArgs) out }, predict = function(modelFit, newdata, submodels = NULL) { if(!is.data.frame(newdata)) newdata <- as.data.frame(newdata) - if(modelFit$problemType == "Classification") - { + if(modelFit$problemType == "Classification") { probs <- predict(modelFit, newdata, type = "response") out <- ifelse(probs < .5, modelFit$obsLevel[1], diff --git a/models/files/gamLoess.R b/models/files/gamLoess.R index 5ecc9da5a..08d74e1d4 100644 --- a/models/files/gamLoess.R +++ b/models/files/gamLoess.R @@ -8,16 +8,21 @@ modelInfo <- list(label = "Generalized Additive Model using LOESS", grid = function(x, y, len = NULL) expand.grid(span = .5, degree = 1), fit = function(x, y, wts, param, lev, last, classProbs, ...) { - dat <- if(is.data.frame(x)) x else as.data.frame(x) - dat$.outcome <- y + args <- list(data = if(is.data.frame(x)) x else as.data.frame(x)) + args$data$.outcome <- y + args$formula <- caret:::smootherFormula(x, + smoother = "lo", + span = param$span, + degree = param$degree) + theDots <- list(...) - gam:::gam(caret:::smootherFormula(x, - smoother = "lo", - span = param$span, - degree = param$degree), - data = dat, - family = if(is.factor(y)) binomial() else gaussian(), - ...) + + if(!any(names(theDots) == "family")) + args$family <- if(is.factor(y)) binomial else gaussian + + if(length(theDots) > 0) args <- c(args, theDots) + + do.call(getFromNamespace("gam", "gam"), args) }, predict = function(modelFit, newdata, submodels = NULL) { if(!is.data.frame(newdata)) newdata <- as.data.frame(newdata) diff --git a/models/files/gamSpline.R b/models/files/gamSpline.R index 4356ea134..4845f4c50 100644 --- a/models/files/gamSpline.R +++ b/models/files/gamSpline.R @@ -14,9 +14,12 @@ modelInfo <- list(label = "Generalized Additive Model using Splines", args$formula <- caret:::smootherFormula(x, smoother = "s", df = param$df) - args$family <- if(is.factor(y)) binomial else gaussian - theDots <- list(...) + + + if(!any(names(theDots) == "family")) + args$family <- if(is.factor(y)) binomial else gaussian + if(length(theDots) > 0) args <- c(args, theDots) do.call(getFromNamespace("gam", "gam"), args) diff --git a/models/files/gbm.R b/models/files/gbm.R index 4076aaa49..fe6be26f3 100644 --- a/models/files/gbm.R +++ b/models/files/gbm.R @@ -29,8 +29,7 @@ modelInfo <- list(label = "Stochastic Gradient Boosting", modDist <- theDots$distribution theDots$distribution <- NULL } else { - if(is.numeric(y)) - { + if(is.numeric(y)) { modDist <- "gaussian" } else modDist <- if(length(lev) == 2) "bernoulli" else "multinomial" } @@ -45,6 +44,7 @@ modelInfo <- list(label = "Stochastic Gradient Boosting", n.trees = param$n.trees, shrinkage = param$shrinkage, distribution = modDist) + if(any(names(theDots) == "family")) modArgs$distribution <- NULL if(length(theDots) > 0) modArgs <- c(modArgs, theDots) diff --git a/models/files/rpartCost.R b/models/files/rpartCost.R index 609c7111e..9605b700f 100644 --- a/models/files/rpartCost.R +++ b/models/files/rpartCost.R @@ -87,23 +87,6 @@ modelInfo <- list(label = "Cost-Sensitive CART", } out }, - prob = function(modelFit, newdata, submodels = NULL) { - if(!is.data.frame(newdata)) newdata <- as.data.frame(newdata) - out <- predict(modelFit, newdata, type = "prob") - - if(!is.null(submodels)) - { - tmp <- vector(mode = "list", length = nrow(submodels) + 1) - tmp[[1]] <- out - for(j in seq(along = submodels$cp)) - { - prunedFit <- prune.rpart(modelFit, cp = submodels$cp[j]) - tmpProb <- predict(prunedFit, newdata, type = "prob") - tmp[[j+1]] <- as.data.frame(tmpProb[, modelFit$obsLevels, drop = FALSE]) - } - out <- tmp - } - out - }, + prob = NULL, tags = c("Tree-Based Model", "Implicit Feature Selection", "Cost Sensitive Learning"), sort = function(x) x[order(-x$cp, -x$Cost),]) diff --git a/pkg/caret/DESCRIPTION b/pkg/caret/DESCRIPTION index 40b8f3d6c..6beeb28e4 100644 --- a/pkg/caret/DESCRIPTION +++ b/pkg/caret/DESCRIPTION @@ -1,6 +1,6 @@ Package: caret -Version: 6.0-43 -Date: 2015-01-27 +Version: 6.0-44 +Date: 2015-04-01 Title: Classification and Regression Training Author: Max Kuhn. Contributions from Jed Wing, Steve Weston, Andre Williams, Chris Keefer, Allan Engelhardt, Tony Cooper, Zachary Mayer, diff --git a/pkg/caret/R/aaa.R b/pkg/caret/R/aaa.R index 1891d54ac..24cc807f7 100644 --- a/pkg/caret/R/aaa.R +++ b/pkg/caret/R/aaa.R @@ -220,7 +220,7 @@ twoClassSummary <- function (data, lev = NULL, model = NULL) requireNamespaceQuietStop('pROC') if (!all(levels(data[, "pred"]) == levels(data[, "obs"]))) stop("levels of observed and predicted data do not match") - rocObject <- try(pROC::roc.default(data$obs, data[, lev[1]]), silent = TRUE) + rocObject <- try(pROC::roc(data$obs, data[, lev[1]]), silent = TRUE) rocAUC <- if(class(rocObject)[1] == "try-error") NA else rocObject$auc out <- c(rocAUC, sensitivity(data[, "pred"], data[, "obs"], lev[1]), diff --git a/pkg/caret/R/extractProb.R b/pkg/caret/R/extractProb.R index 5ae1f3649..dffef098f 100644 --- a/pkg/caret/R/extractProb.R +++ b/pkg/caret/R/extractProb.R @@ -1,4 +1,4 @@ - +## TODO use foreach to parallelize extractProb <- function(models, testX = NULL, @@ -39,17 +39,15 @@ extractProb <- function(models, for(i in seq(along = models)) { if(verbose) cat("starting ", models[[i]]$method, "\n"); flush.console() - if(!unkOnly) - { - tempTrainPred <- predictionFunction(models[[i]]$modelInfo, - models[[i]]$finalModel, - trainX, - models[[i]]$preProcess) + if(!unkOnly) { tempTrainProb <- probFunction(models[[i]]$modelInfo, models[[i]]$finalModel, trainX, models[[i]]$preProcess) - + tempTrainPred <- apply(tempTrainProb, 1, which.max) + tempTrainPred <- colnames(tempTrainProb)[tempTrainPred] + tempTrainPred <- factor(tempTrainPred, + levels = models[[i]]$modelInfo$levels(models[[i]]$finalModel)) if(verbose) cat(models[[i]]$method, ":", length(tempTrainPred), "training predictions were added\n"); flush.console() @@ -61,21 +59,20 @@ extractProb <- function(models, dataType <- c(dataType, rep("Training", length(tempTrainPred))) # Test Data - if(!is.null(testX) & !is.null(testY)) - { + if(!is.null(testX) & !is.null(testY)) { if(!is.data.frame(testX)) testX <- as.data.frame(testX) tempX <- testX tempY <- testY - tempX$.outcome <- NULL - tempTestPred <- predictionFunction(models[[i]]$modelInfo, - models[[i]]$finalModel, - tempX, - models[[i]]$preProcess) + tempX$.outcome <- NULL tempTestProb <- probFunction(models[[i]]$modelInfo, models[[i]]$finalModel, tempX, - models[[i]]$preProcess) - + models[[i]]$preProcess) + tempTestPred <- apply(tempTestProb, 1, which.max) + tempTestPred <- colnames(tempTestProb)[tempTestPred] + tempTestPred <- factor(tempTestPred, + levels = models[[i]]$modelInfo$levels(models[[i]]$finalModel)) + if(verbose) cat(models[[i]]$method, ":", length(tempTestPred), "test predictions were added\n") predProb <- if(is.null(predProb)) tempTestProb else rbind(predProb, tempTestProb) @@ -94,16 +91,16 @@ extractProb <- function(models, if(!is.data.frame(unkX)) unkX <- as.data.frame(unkX) tempX <- unkX tempX$.outcome <- NULL - - tempUnkPred <- predictionFunction(models[[i]]$modelInfo, - models[[i]]$finalModel, - tempX, - models[[i]]$preProcess) + tempUnkProb <- probFunction(models[[i]]$modelInfo, models[[i]]$finalModel, tempX, models[[i]]$preProcess) - + tempUnkPred <- apply(tempUnkProb, 1, which.max) + tempUnkPred <- colnames(tempUnkProb)[tempUnkPred] + tempUnkPred <- factor(tempUnkPred, + levels = models[[i]]$modelInfo$levels(models[[i]]$finalModel)) + if(verbose) cat(models[[i]]$method, ":", length(tempUnkPred), "unknown predictions were added\n") predProb <- if(is.null(predProb)) tempUnkProb else rbind(predProb, tempUnkProb) diff --git a/pkg/caret/R/misc.R b/pkg/caret/R/misc.R index 268707bb4..e237d31bd 100644 --- a/pkg/caret/R/misc.R +++ b/pkg/caret/R/misc.R @@ -42,6 +42,7 @@ evalSummaryFunction <- function(y, wts, ctrl, lev, metric, method) { stop("train()'s use of ROC codes requires class probabilities. See the classProbs option of trainControl()") } if(!is.null(wts)) testOutput$weights <- sample(wts, min(10, length(wts))) + testOutput$rowIndex <- sample(seq(along = y), size = nrow(testOutput)) ctrl$summaryFunction(testOutput, lev, method) } diff --git a/pkg/caret/R/print.varImp.train.R b/pkg/caret/R/print.varImp.train.R index 07ecdf0d2..64addec22 100644 --- a/pkg/caret/R/print.varImp.train.R +++ b/pkg/caret/R/print.varImp.train.R @@ -16,7 +16,7 @@ function(x, top = min(20, dim(x$importance)[1]), digits = max(3, getOption("digi printObj <- printObj[,1,drop = FALSE] names(printObj) <- "Importance" } - print.data.frame(printObj, digits = digits, ...) + print(printObj, digits = digits, ...) invisible(x) } diff --git a/pkg/caret/R/rfe.R b/pkg/caret/R/rfe.R index 0d00be79a..1a39831f3 100644 --- a/pkg/caret/R/rfe.R +++ b/pkg/caret/R/rfe.R @@ -535,7 +535,7 @@ gamFuncs <- list(summary = defaultSummary, }, pred = function(object, x) { - #browser() + if(!is.data.frame(x)) x <- as.data.frame(x) loaded <- search() gamLoaded <- any(loaded == "package:gam") if(gamLoaded) detach(package:gam) @@ -625,12 +625,13 @@ rfFuncs <- list(summary = defaultSummary, lmFuncs <- list(summary = defaultSummary, fit = function(x, y, first, last, ...) { - tmp <- as.data.frame(x) + tmp <- if(is.data.frame(x)) x else as.data.frame(x) tmp$y <- y lm(y~., data = tmp) }, pred = function(object, x) { + if(!is.data.frame(x)) x <- as.data.frame(x) predict(object, x) }, rank = function(object, x, y) @@ -688,12 +689,13 @@ nbFuncs <- list(summary = defaultSummary, lrFuncs <- ldaFuncs lrFuncs$fit <- function (x, y, first, last, ...) { - tmp <- x + tmp <- if(is.data.frame(x)) x else as.data.frame(x) tmp$Class <- y glm(Class ~ ., data = tmp, family = "binomial") } lrFuncs$pred <- function (object, x) { + if(!is.data.frame(x)) x <- as.data.frame(x) lvl <- levels(object$data$Class) tmp <- predict(object, x, type = "response") out <- data.frame(1-tmp, tmp) diff --git a/pkg/caret/R/workflows.R b/pkg/caret/R/workflows.R index 2abec4662..ce9b4a6c2 100644 --- a/pkg/caret/R/workflows.R +++ b/pkg/caret/R/workflows.R @@ -234,17 +234,19 @@ nominalTrainWorkflow <- function(x, y, wts, info, method, ppOpts, ctrl, lev, tes ## collate the predicitons across all the sub-models predicted <- lapply(predicted, - function(x, y, wts, lv) { + function(x, y, wts, lv, rows) { if(!is.factor(x) & is.character(x)) x <- factor(as.character(x), levels = lv) out <- data.frame(pred = x, obs = y, stringsAsFactors = FALSE) if(!is.null(wts)) out$weights <- wts + out$rowIndex <- rows out }, y = y[holdoutIndex], wts = wts[holdoutIndex], - lv = lev) + lv = lev, + rows = holdoutIndex) if(testing) print(head(predicted)) - + ## same for the class probabilities if(ctrl$classProbs) { @@ -292,6 +294,7 @@ nominalTrainWorkflow <- function(x, y, wts, info, method, ppOpts, ctrl, lev, tes names(tmp)[1] <- "pred" if(!is.null(wts)) tmp$weights <- wts[holdoutIndex] if(ctrl$classProbs) tmp <- cbind(tmp, probValues) + tmp$rowIndex <- holdoutIndex if(ctrl$savePredictions) { @@ -303,6 +306,7 @@ nominalTrainWorkflow <- function(x, y, wts, info, method, ppOpts, ctrl, lev, tes } else tmpPred <- NULL ################################## + thisResample <- ctrl$summaryFunction(tmp, lev = lev, model = method) @@ -459,15 +463,17 @@ looTrainWorkflow <- function(x, y, wts, info, method, ppOpts, ctrl, lev, testing { ## collate the predictions across all the sub-models predicted <- lapply(predicted, - function(x, y, wts, lv) { + function(x, y, wts, lv, rows) { if(!is.factor(x) & is.character(x)) x <- factor(as.character(x), levels = lv) out <- data.frame(pred = x, obs = y, stringsAsFactors = FALSE) if(!is.null(wts)) out$weights <- wts + out$rowIndex <- rows out }, y = y[holdoutIndex], wts = wts[holdoutIndex], - lv = lev) + lv = lev, + rows = seq(along = y)[holdoutIndex]) if(testing) print(head(predicted)) ## same for the class probabilities @@ -481,7 +487,6 @@ looTrainWorkflow <- function(x, y, wts, info, method, ppOpts, ctrl, lev, testing predicted <- cbind(predicted, allParam) ## if saveDetails then save and export 'predicted' } else { - if(is.factor(y)) predicted <- factor(as.character(predicted), levels = lev) predicted <- data.frame(pred = predicted, @@ -489,6 +494,7 @@ looTrainWorkflow <- function(x, y, wts, info, method, ppOpts, ctrl, lev, testing stringsAsFactors = FALSE) if(!is.null(wts)) predicted$weights <- wts[holdoutIndex] if(ctrl$classProbs) predicted <- cbind(predicted, probValues) + predicted$rowIndex <- seq(along = y)[holdoutIndex] predicted <- cbind(predicted, info$loop[parm,,drop = FALSE]) } diff --git a/pkg/caret/inst/NEWS.Rd b/pkg/caret/inst/NEWS.Rd index 25aae5042..71228d3a5 100644 --- a/pkg/caret/inst/NEWS.Rd +++ b/pkg/caret/inst/NEWS.Rd @@ -10,11 +10,19 @@ \item A new option to \code{trainControl} called \code{trim} was added where, if implemented, will reduce the model's footprint. However, features beyond simple prediction may not work. \item A rarely occurring bug in \code{gbm} model code was fixed (thanks to Wade Cooper) \item \code{splom.resamples} now respects the \code{models} argument - \item A new argument to \code{lift} called \code{cuts} was added to allow more control over what thresholds are used to calculat the curve. + \item A new argument to \code{lift} called \code{cuts} was added to allow more control over what thresholds are used to calculate the curve. \item The \code{cuts} argument of \code{calibration} now accepts a vector of cut points. \item Jason Schadewald noticed and fixed a bug in the man page for \code{dummyVars} - \item Call objects were remoed from the following models: \code{avNNet}, \code{bagFDA}, \code{icr}, \code{knn3}, \code{knnreg}, \code{pcaNNet}, and \code{plsda}. + \item Call objects were removed from the following models: \code{avNNet}, \code{bagFDA}, \code{icr}, \code{knn3}, \code{knnreg}, \code{pcaNNet}, and \code{plsda}. \item An argument was added to \code{createTimeSlices} to thin the number of resamples + \item The RFE-related functions \code{lrFuncs}, \code{lmFuncs}, and \code{gamFuncs} were updated so that \code{rfe} accepts a matrix \code{x} argument. + \item Using the default grid generation with \code{train} and \code{glmnet}, an initial \code{glmnet} fit is created with \code{alpha = 0.50} to define the \code{lambda} values. + \item \code{train} models for \code{"gbm"}, \code{"gam"}, \code{"gamSpline"}, and \code{"gamLoess"} now allow their respective arguments for the outcome probability distribution to be passed to the underlying function. + \item A bug in \code{print.varImp.train} was fixed. + \item \code{train} now returns an additional column called \code{rowIndex} that is exposed when calling the summary function during resampling. + \item The ability to compute class probabilities was removed from the \code{rpartCost} model since they are unlikely to agree with the class predictions. + \item \code{extractProb} no longer redundantly calls \code{extractPrediction} to generate the class predictions. + } } diff --git a/release_process/talk/caret.Rnw b/release_process/talk/caret.Rnw new file mode 100644 index 000000000..a7b864a0c --- /dev/null +++ b/release_process/talk/caret.Rnw @@ -0,0 +1,385 @@ +\documentclass[12 pt]{beamer} + +\usepackage{beamerthemesplit} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\mode { + \usetheme{Boadilla} + \usecolortheme{whale} + \setbeamercovered{transparent} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Custom definitions + +\definecolor{darkgreen}{rgb}{0,0.3,0} +\definecolor{darkred}{rgb}{0.6,0.0,0} + +\newcommand{\mxnum}[1]{\texttt{\hlnum{#1}}}% +\newcommand{\mxkwc}[1]{\texttt{\hlkwc{#1}}}% +\newcommand{\mxkwd}[1]{\texttt{\hlkwd{#1}}}% + +\newcommand{\pkg}[1]{{\fontseries{b}\selectfont #1}} +\renewcommand{\pkg}[1]{{\color{darkgreen}\textsf{#1}}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% + +<>= +library(knitr) +library(caret) + +opts_chunk$set(comment=NA, digits = 3, size = 'scriptsize', + prompt = TRUE, background = 'white', + message=FALSE, warning=FALSE) +hook_inline = knit_hooks$get('inline') +knit_hooks$set(inline = function(x) { + if (is.character(x)) highr::hi_latex(x) else hook_inline(x) +}) + +options(width = 80) + +knit_theme$set("bclear") +theme_set(theme_bw()) +@ + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\title{Nobody Knows What It's Like To Be the Bad Man} +\author{Max Kuhn, Ph.D} +\institute{Pfizer Global R$\&$D \linebreak Groton, CT\linebreak max.kuhn@pfizer.com } +\date{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{document} + +\begin{frame}[plain] + \maketitle +\end{frame} + +\title{caret} +\author{Max Kuhn} +\institute{Pfizer} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + \frametitle{Outline} + +\begin{itemize} +\item What is the \pkg{caret} package? +\item What makes it different +\item Version control +\item The CRAN release process +\item Testing +\item Documentation +\end{itemize} + +\end{frame} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Model Function Consistency} + +Since there are many modeling packages in R written by different people, +there are some inconsistencies in how models are specified and +predictions are created. + +\vspace{.15in} + +For example, many models have only one method of specifying the model +(e.g. formula method only) + + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Generating Class Probabilities Using Different Packages} + +\begin{footnotesize} +\begin{center} +\begin{tabular}{rcl} +{\bf Function} && {\bf {\tt predict} Function Syntax} \\ +\hline + \href{http://cran.r-project.org/web/packages/MASS/index.html}{\pkg{MASS}}\texttt{:::lda} && {\tt \Sexpr{'predict(obj)'}} (no options needed)\\ +\pkg{stats}\texttt{:::glm} && {\tt \Sexpr{'predict(obj, type = "response")'}} \\ +\href{http://cran.r-project.org/web/packages/gbm/index.html}{\pkg{gbm}}\texttt{:::gbm} && {\tt \Sexpr{'predict(obj, type = "response", n.trees)'}} \\ +\href{http://cran.r-project.org/web/packages/mda/index.html}{\pkg{mda}}\texttt{:::mda} && {\tt \Sexpr{'predict(obj, type = "posterior")'}} \\ +\href{http://cran.r-project.org/web/packages/rpart/index.html}{\pkg{rpart}}\texttt{:::rpart} && {\tt \Sexpr{'predict(obj, type = "prob")'}} \\ +\href{http://cran.r-project.org/web/packages/RWeka/index.html}{\pkg{RWeka}}\texttt{:::Weka} && {\tt \Sexpr{'predict(obj, type = "probability")'}} \\ +\href{http://cran.r-project.org/web/packages/caTools/index.html}{\pkg{caTools}}\texttt{:::LogitBoost} && {\tt \Sexpr{'predict(obj, type = "raw", nIter)'}} \\ +\hline \\ +\\ +\end{tabular} +\end{center} +\end{footnotesize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{The \pkg{caret} Package} + +The \href{http://cran.r-project.org/web/packages/caret/index.html}{\pkg{caret}} package was developed to: + \begin{itemize} +\item create a unified interface for modeling and prediction +(interfaces to \Sexpr{length(table(modelLookup()$model))} models) +\item streamline model tuning using resampling +\item provide a variety of ``helper'' functions and classes for day--to--day model building tasks +\item increase computational efficiency using parallel processing +\end{itemize} + +\vspace{.07in} + +First commits within Pfizer: 6/2005, First version on CRAN: 10/2007 + +\vspace{.06in} + +Website: \href{http://topepo.github.io/caret/}{http://topepo.github.io/caret/} + +\vspace{.06in} + +JSS Paper: \href{http://www.jstatsoft.org/v28/i05/paper}{http://www.jstatsoft.org/v28/i05/paper} + +\vspace{.06in} + +Model List: \href{http://topepo.github.io/caret/bytag.html}{http://topepo.github.io/caret/bytag.html} + +\vspace{.06in} + +Many computing sections in APM + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Package Dependencies} + +<>= +mods <- getModelInfo() +mod_pkgs <- unique(unlist(lapply(mods, function(x) x$library))) +mod_pkgs <- mod_pkgs[mod_pkgs != "caret"] +@ + +One thing that makes \pkg{caret} different from most other packages is that is uses code from an abnormally large number (> 80) of other packages. + +\vspace{.15in} + +Briefly, these were in the \texttt{Depends} field of the \textt{DESCRIPTION} file which cause all of them to be loaded with \pkg{caret}. + +\vspace{.15in} + +For many years, they were moved to \texttt{Suggests}, which solved that issue, + + +\vspace{.15in} + +However, their formal dependency in the \textt{DESCRIPTION} file required CRAN to install hundreds of other packages to check \pkg{caret}. They were not pleased. + +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{The Basic Release Process} + +\begin{enumerate} + \item create a few dynamic man pages + \item use {\color{darkred} \texttt{R CMD check --as-cran}} to ensure passing CRAN tests and {\color{darkred} unit tests} + \item update all packages (and R) + \item run {\color{darkred} regression tests} and evaluate results + \item send to CRAN + \item repeat + \item repeat + \item install passed \pkg{caret} version + \item generate {\color{darkred} HTML documentation} and sync github io branch + \item profit! +\end{enumerate} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Required ``Optimizations''} + + +For example, there is one check that produces a large number of false positive warnings. For example: + +<>= +bwplot.diff.resamples <- function (x, data, metric = x$metric, ...) { + ## some code + plotData <- subset(plotData, Metric %in% metric) + ## more code +} +@ + +will trigger a wanring that ``{\tt \small bwplot.diff.resamples: no visible binding for global variable 'Metric'}''. + +\vspace{.15in} + +The ``solution'' is to have a file that is sourced first in the package (e.g. \texttt{aaa.R}) with the line + +<>= +Metric <- NULL +@ + +\end{frame} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[fragile] +\frametitle{Severity of Problems} + +It's hard to tell which warnings should be ignored and which should not. There is also the issue of inconsistencies related to who is ``on duty'' when you submit your package. + +\vspace{.1in} + +For example, I recently updated the \pkg{desirability} package and received this warning: + +\vspace{.1in} + + + +\end{frame} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[fragile] +\frametitle{Package Dependencies} + +This problem was somewhat alleviated at the end of 2013 when {\em custom methods} were introduced into the package. + +\vspace{.15in} + +Although this functionality had already existed in the package for some time, it was refactored to be more user freindly. + +\vspace{.15in} + +In the process, much of the modeling code was moved out of \pkg{caret}'s R files and into R objects, eliminating the formal dependencies. + +\vspace{.15in} + +Right now, the {\em total} number of dependencies is much smaller (2 \texttt{Depends}, 7 \texttt{Imports}, and 25 \texttt{Suggests}). + +\vspace{.15in} + +This still affects testing though (described later) + +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Regression Testing} + +Prior to CRAN release (or whenever required), a comprehensive set of regression tests are conducted. + +\vspace{.1in} + +All modeling packages are updated to their current CRAN versions. + +\vspace{.1in} + +For each model accessed by \mxkwd{train}, \mxkwd{rfe}, and/or \mxkwd{sbf}, a set of test cases are computed with the production version of \pkg{caret} and the devle version. + +\vspace{.1in} + +First, test cases are evaluated to make sure that nothing has been broken by updated versions of the consistuent packages. + +\vspace{.1in} + +Diffs of the model results are computed to assess any differences in \pkg{caret} versions. + +\vspace{.1in} + +This process takes approximately 10hrs to complete using \texttt{make -j 12} on a Mac Pro. + +\end{frame} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Documentation} + +\pkg{caret} originally contained four package vignettes with in--depth descriptions of functionality with examples. + +\vspace{.15in} + +Although this functionality had already existed in the package for some time, it was refactored to be more user freindly. + +\vspace{.15in} + +However, this added time to \texttt{R CMD check} and was a general pain for CRAN. + +\vspace{.15in} + +Efforts to make the vingettes more computationally efficient (e.g. reducing the number of examples, resamples, etc.) diminished the effectiveness of the documentation. + + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Documentation} + +The documentation was moved out of the package and to the github IO page. + +\vspace{.15in} + + +These pages are built using \pkg{knitr} whenever a new version is sent to CRAN. Some advantages are: + +\begin{itemize} +\item longer and more relavant examples are availible +\item update scheduile is under my control +\item dynamic documentation (e.g. D3 network graphs, JS tables) +\item better formatting +\end{itemize} + +\vspace{.1in} + +It currently takes about 4hr to create these (using parallel processing when possible). + +\end{frame} + + + + + + + +\end{document} + + + + + + + + + + + + + diff --git a/release_process/talk/caret.log b/release_process/talk/caret.log new file mode 100644 index 000000000..569a579e5 --- /dev/null +++ b/release_process/talk/caret.log @@ -0,0 +1,1205 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex 2014.5.25) 1 APR 2015 15:07 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**caret.tex +(./caret.tex +LaTeX2e <2014/05/01> +Babel <3.9k> and hyphenation patterns for 78 languages loaded. +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamer.cls +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasercs.sty +Package: beamerbasercs 2013/12/25 (rcs-revision 31cc758a62ae) +) +Document Class: beamer 2013/12/02 3.33 A class for typesetting presentations (r +cs-revision 332bfd3ce558) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasemodes.sty +Package: beamerbasemodes 2013/09/03 (rcs-revision 768f2d98ca64) +\beamer@tempbox=\box26 +\beamer@tempcount=\count79 +\c@beamerpauses=\count80 + +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasedecode.sty +Package: beamerbasedecode 2010/05/01 (rcs-revision efa082c6111d) +\beamer@slideinframe=\count81 +\beamer@minimum=\count82 +) +\beamer@commentbox=\box27 +\beamer@modecount=\count83 +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO) +Package ifpdf Info: pdfTeX in PDF mode is detected. +) +\headheight=\dimen102 +\headdp=\dimen103 +\footheight=\dimen104 +\sidebarheight=\dimen105 +\beamer@tempdim=\dimen106 +\beamer@finalheight=\dimen107 +\beamer@animht=\dimen108 +\beamer@animdp=\dimen109 +\beamer@animwd=\dimen110 +\beamer@leftmargin=\dimen111 +\beamer@rightmargin=\dimen112 +\beamer@leftsidebar=\dimen113 +\beamer@rightsidebar=\dimen114 +\beamer@boxsize=\dimen115 +\beamer@vboxoffset=\dimen116 +\beamer@descdefault=\dimen117 +\beamer@descriptionwidth=\dimen118 +\beamer@lastskip=\skip41 +\beamer@areabox=\box28 +\beamer@animcurrent=\box29 +\beamer@animshowbox=\box30 +\beamer@sectionbox=\box31 +\beamer@logobox=\box32 +\beamer@linebox=\box33 +\beamer@sectioncount=\count84 +\beamer@subsubsectionmax=\count85 +\beamer@subsectionmax=\count86 +\beamer@sectionmax=\count87 +\beamer@totalheads=\count88 +\beamer@headcounter=\count89 +\beamer@partstartpage=\count90 +\beamer@sectionstartpage=\count91 +\beamer@subsectionstartpage=\count92 +\beamer@animationtempa=\count93 +\beamer@animationtempb=\count94 +\beamer@xpos=\count95 +\beamer@ypos=\count96 +\beamer@showpartnumber=\count97 +\beamer@currentsubsection=\count98 +\beamer@coveringdepth=\count99 +\beamer@sectionadjust=\count100 +\beamer@tocsectionnumber=\count101 + +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbaseoptions.sty +Package: beamerbaseoptions 2013/03/10 (rcs-revision 47431932db0d) + +(/usr/local/texlive/2014/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/05/08 v1.15 key=value parser (DPC) +\KV@toks@=\toks14 +)) +\beamer@paperwidth=\skip42 +\beamer@paperheight=\skip43 + +(/usr/local/texlive/2014/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2010/09/12 v5.6 Page Geometry + +(/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ifvtex.sty +Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +\Gm@cnth=\count102 +\Gm@cntv=\count103 +\c@Gm@tempcnt=\count104 +\Gm@bindingoffset=\dimen119 +\Gm@wd@mp=\dimen120 +\Gm@odd@mp=\dimen121 +\Gm@even@mp=\dimen122 +\Gm@layoutwidth=\dimen123 +\Gm@layoutheight=\dimen124 +\Gm@layouthoffset=\dimen125 +\Gm@layoutvoffset=\dimen126 +\Gm@dimlist=\toks15 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/base/size12.clo +File: size12.clo 2007/10/19 v1.4h Standard LaTeX file (size option) +) +(/Users/kuhna03/Library/texmf/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/local/texlive/2014/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2014/04/25 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2014/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2014/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 1999/03/16 v1.09 sin cos tan (DPC) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/graphics.cfg +File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live +) +Package graphics Info: Driver file: pdftex.def on input line 91. + +(/usr/local/texlive/2014/texmf-dist/tex/latex/pdftex-def/pdftex.def +File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX + +(/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO) +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) +) +\Gread@gobject=\count105 +)) +\Gin@req@height=\dimen127 +\Gin@req@width=\dimen128 +) +(/Users/kuhna03/Library/texmf/tex/latex/pgf/systemlayer/pgfsys.sty +(/Users/kuhna03/Library/texmf/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.te +x +\pgfutil@everybye=\toks16 +\pgfutil@tempdima=\dimen129 +\pgfutil@tempdimb=\dimen130 + +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-li +sts.tex)) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box34 +(/usr/local/texlive/2014/texmf-dist/tex/latex/ms/everyshi.sty +Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) +)) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +Package: pgfrcs 2013/12/20 v3.0.0 (rcs-revision 1.28) +)) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2013/11/30 v3.0.0 (rcs-revision 1.47) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks17 +\pgfkeys@temptoks=\toks18 + +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.c +ode.tex +\pgfkeys@tmptoks=\toks19 +)) +\pgf@x=\dimen131 +\pgf@y=\dimen132 +\pgf@xa=\dimen133 +\pgf@ya=\dimen134 +\pgf@xb=\dimen135 +\pgf@yb=\dimen136 +\pgf@xc=\dimen137 +\pgf@yc=\dimen138 +\w@pgf@writea=\write3 +\r@pgf@reada=\read1 +\c@pgf@counta=\count106 +\c@pgf@countb=\count107 +\c@pgf@countc=\count108 +\c@pgf@countd=\count109 +\t@pgf@toka=\toks20 +\t@pgf@tokb=\toks21 +\t@pgf@tokc=\toks22 + +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2008/05/14 (rcs-revision 1.7) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.d +ef +File: pgfsys-pdftex.def 2013/07/18 (rcs-revision 1.33) + +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-p +df.def +File: pgfsys-common-pdf.def 2013/10/10 (rcs-revision 1.13) +))) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath. +code.tex +File: pgfsyssoftpath.code.tex 2013/09/09 (rcs-revision 1.9) +\pgfsyssoftpath@smallbuffer@items=\count110 +\pgfsyssoftpath@bigbuffer@items=\count111 +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol. +code.tex +File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4) +)) (/usr/local/texlive/2014/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK) + +(/usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/color.cfg +File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341. +Package xcolor Info: Model `RGB' extended on input line 1353. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360. +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2010/04/11 v3.0.0 (rcs-revision 1.7) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen139 +\pgfmath@count=\count112 +\pgfmath@box=\box35 +\pgfmath@toks=\toks23 +\pgfmath@stack@operand=\toks24 +\pgfmath@stack@operation=\toks25 +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code. +tex +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic +.code.tex) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigo +nometric.code.tex) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.rando +m.code.tex) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.compa +rison.code.tex) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base. +code.tex) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round +.code.tex) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc. +code.tex) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integ +erarithmetics.code.tex))) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count113 +)) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.co +de.tex +File: pgfcorepoints.code.tex 2013/10/07 (rcs-revision 1.27) +\pgf@picminx=\dimen140 +\pgf@picmaxx=\dimen141 +\pgf@picminy=\dimen142 +\pgf@picmaxy=\dimen143 +\pgf@pathminx=\dimen144 +\pgf@pathmaxx=\dimen145 +\pgf@pathminy=\dimen146 +\pgf@pathmaxy=\dimen147 +\pgf@xx=\dimen148 +\pgf@xy=\dimen149 +\pgf@yx=\dimen150 +\pgf@yy=\dimen151 +\pgf@zx=\dimen152 +\pgf@zy=\dimen153 +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconst +ruct.code.tex +File: pgfcorepathconstruct.code.tex 2013/10/07 (rcs-revision 1.29) +\pgf@path@lastx=\dimen154 +\pgf@path@lasty=\dimen155 +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage +.code.tex +File: pgfcorepathusage.code.tex 2013/12/13 (rcs-revision 1.23) +\pgf@shorten@end@additional=\dimen156 +\pgf@shorten@start@additional=\dimen157 +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.co +de.tex +File: pgfcorescopes.code.tex 2013/10/09 (rcs-revision 1.44) +\pgfpic=\box36 +\pgf@hbox=\box37 +\pgf@layerbox@main=\box38 +\pgf@picture@serial@count=\count114 +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicst +ate.code.tex +File: pgfcoregraphicstate.code.tex 2013/09/19 (rcs-revision 1.11) +\pgflinewidth=\dimen158 +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransform +ations.code.tex +File: pgfcoretransformations.code.tex 2013/10/10 (rcs-revision 1.17) +\pgf@pt@x=\dimen159 +\pgf@pt@y=\dimen160 +\pgf@pt@temp=\dimen161 +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.cod +e.tex +File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3) +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.c +ode.tex +File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2) +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathproce +ssing.code.tex +File: pgfcorepathprocessing.code.tex 2013/09/09 (rcs-revision 1.9) +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.co +de.tex +File: pgfcorearrows.code.tex 2013/11/07 (rcs-revision 1.40) +\pgfarrowsep=\dimen162 +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.cod +e.tex +File: pgfcoreshade.code.tex 2013/07/15 (rcs-revision 1.15) +\pgf@max=\dimen163 +\pgf@sys@shading@range@num=\count115 +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.cod +e.tex +File: pgfcoreimage.code.tex 2013/07/15 (rcs-revision 1.18) + +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal. +code.tex +File: pgfcoreexternal.code.tex 2013/07/15 (rcs-revision 1.20) +\pgfexternal@startupbox=\box39 +)) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.co +de.tex +File: pgfcorelayers.code.tex 2013/07/18 (rcs-revision 1.7) +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretranspare +ncy.code.tex +File: pgfcoretransparency.code.tex 2013/09/30 (rcs-revision 1.5) +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns. +code.tex +File: pgfcorepatterns.code.tex 2013/11/07 (rcs-revision 1.5) +))) (/Users/kuhna03/Library/texmf/tex/latex/pgf/utilities/xxcolor.sty +Package: xxcolor 2003/10/24 ver 0.1 +\XC@nummixins=\count116 +\XC@countmixins=\count117 +) +(/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/atbegshi.sty +Package: atbegshi 2011/10/05 v1.16 At begin shipout hook (HO) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2012/11/06 v6.83m Hypertext links for LaTeX + +(/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +Package: hobsub-hyperref 2012/05/28 v1.13 Bundle oberdiek, subset hyperref (HO) + + +(/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +Package: hobsub-generic 2012/05/28 v1.13 Bundle oberdiek, subset generic (HO) +Package: hobsub 2012/05/28 v1.13 Construct package bundles (HO) +Package hobsub Info: Skipping package `infwarerr' (already loaded). +Package hobsub Info: Skipping package `ltxcmds' (already loaded). +Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +Package hobsub Info: Skipping package `ifvtex' (already loaded). +Package: intcalc 2007/09/27 v1.1 Expandable calculations with integers (HO) +Package hobsub Info: Skipping package `ifpdf' (already loaded). +Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO) +Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO) +Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +Package: pdfescape 2011/11/25 v1.13 Implements pdfTeX's escape features (HO) +Package: bigintcalc 2012/04/08 v1.3 Expandable calculations on big integers (HO +) +Package: bitset 2011/01/30 v1.1 Handle bit-vector datatype (HO) +Package: uniquecounter 2011/01/30 v1.2 Provide unlimited unique counter (HO) +) +Package hobsub Info: Skipping package `hobsub' (already loaded). +Package: letltxmacro 2010/09/02 v1.4 Let assignment for LaTeX macros (HO) +Package: hopatch 2012/05/28 v1.2 Wrapper for package hooks (HO) +Package: xcolor-patch 2011/01/30 xcolor patch +Package: atveryend 2011/06/30 v1.8 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +Package hobsub Info: Skipping package `atbegshi' (already loaded). +Package: refcount 2011/10/16 v3.4 Data extraction from label references (HO) +Package: hycolor 2011/01/30 v1.7 Color options for hyperref/bookmark (HO) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/auxhook.sty +Package: auxhook 2011/03/04 v1.3 Hooks for auxiliary files (HO) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO) +) +\@linkdim=\dimen164 +\Hy@linkcounter=\count118 +\Hy@pagecounter=\count119 + +(/usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2012/11/06 v6.83m Hyperref: PDFDocEncoding definition (HO) +) +\Hy@SavedSpaceFactor=\count120 + +(/usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/hyperref.cfg +File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +) +Package hyperref Info: Option `bookmarks' set `true' on input line 4319. +Package hyperref Info: Option `bookmarksopen' set `true' on input line 4319. +Package hyperref Info: Option `implicit' set `false' on input line 4319. +Package hyperref Info: Hyper figures OFF on input line 4443. +Package hyperref Info: Link nesting OFF on input line 4448. +Package hyperref Info: Hyper index ON on input line 4451. +Package hyperref Info: Plain pages OFF on input line 4458. +Package hyperref Info: Backreferencing OFF on input line 4463. +Package hyperref Info: Implicit mode OFF; no redefinition of LaTeX internals. +Package hyperref Info: Bookmarks ON on input line 4688. +\c@Hy@tempcnt=\count121 + +(/usr/local/texlive/2014/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip10 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 5041. +\XeTeXLinkMargin=\dimen165 +\Fld@menulength=\count122 +\Field@Width=\dimen166 +\Fld@charsize=\dimen167 +Package hyperref Info: Hyper figures OFF on input line 6295. +Package hyperref Info: Link nesting OFF on input line 6300. +Package hyperref Info: Hyper index ON on input line 6303. +Package hyperref Info: backreferencing OFF on input line 6310. +Package hyperref Info: Link coloring OFF on input line 6315. +Package hyperref Info: Link coloring with OCG OFF on input line 6320. +Package hyperref Info: PDF/A mode OFF on input line 6325. +LaTeX Info: Redefining \ref on input line 6365. +LaTeX Info: Redefining \pageref on input line 6369. +\Hy@abspage=\count123 + + +Package hyperref Message: Stopped early. + +) + +Package hyperref Message: Driver (autodetected): hpdftex. + +(/usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2012/11/06 v6.83m Hyperref driver for pdfTeX +\Fld@listcount=\count124 +\c@bookmark@seq@number=\count125 + +(/usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +Package: rerunfilecheck 2011/04/15 v1.7 Rerun checks for auxiliary files (HO) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +82. +)) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbaserequires.sty +Package: beamerbaserequires 2010/05/01 (rcs-revision efa082c6111d) + +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasecompatibility.st +y +Package: beamerbasecompatibility 2012/05/01 (rcs-revision 67c48b3b652d) +) (/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasefont.sty +Package: beamerbasefont 2013/10/18 (rcs-revision 72f39e01808a) + +(/usr/local/texlive/2014/texmf-dist/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2013/01/14 v3.01 AMS font symbols + +(/usr/local/texlive/2014/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\@emptytoks=\toks26 +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +)) +(/usr/local/texlive/2014/texmf-dist/tex/latex/sansmathaccent/sansmathaccent.sty +Package: sansmathaccent 2013/03/28 +(/usr/local/texlive/2014/texmf-dist/tex/latex/filehook/filehook.sty +Package: filehook 2011/10/12 v0.5d Hooks for input files +))) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasetranslator.sty +Package: beamerbasetranslator 2010/06/11 (rcs-revision 85fd1cc7fc42) + +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/translator/translator.sty +Package: translator 2010/06/12 ver 1.10 + +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/translator/translator-lang +uage-mappings.tex))) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasemisc.sty +Package: beamerbasemisc 2013/09/03 (rcs-revision a55719c41d85) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasetwoscreens.sty +Package: beamerbasetwoscreens 2010/05/01 (rcs-revision efa082c6111d) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbaseoverlay.sty +Package: beamerbaseoverlay 2013/12/25 (rcs-revision f6bd5e3805da) +\beamer@argscount=\count126 +\beamer@lastskipcover=\skip44 +\beamer@trivlistdepth=\count127 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasetitle.sty +Package: beamerbasetitle 2010/09/21 (rcs-revision f0446ed0b6ae) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasesection.sty +Package: beamerbasesection 2013/06/07 (rcs-revision 60b9fe0f342f) +\c@lecture=\count128 +\c@part=\count129 +\c@section=\count130 +\c@subsection=\count131 +\c@subsubsection=\count132 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbaseframe.sty +Package: beamerbaseframe 2013/10/02 (rcs-revision cdc8e9a3aaac) +\beamer@framebox=\box40 +\beamer@frametitlebox=\box41 +\beamer@zoombox=\box42 +\beamer@zoomcount=\count133 +\beamer@zoomframecount=\count134 +\beamer@frametextheight=\dimen168 +\c@subsectionslide=\count135 +\beamer@frametopskip=\skip45 +\beamer@framebottomskip=\skip46 +\beamer@frametopskipautobreak=\skip47 +\beamer@framebottomskipautobreak=\skip48 +\beamer@envbody=\toks27 +\framewidth=\dimen169 +\c@framenumber=\count136 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbaseverbatim.sty +Package: beamerbaseverbatim 2012/08/30 (rcs-revision dfdb135076b3) +\beamer@verbatimfileout=\write4 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbaseframesize.sty +Package: beamerbaseframesize 2011/09/12 (rcs-revision 70f9d8411e54) +\beamer@splitbox=\box43 +\beamer@autobreakcount=\count137 +\beamer@autobreaklastheight=\dimen170 +\beamer@frametitletoks=\toks28 +\beamer@framesubtitletoks=\toks29 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbaseframecomponents. +sty +Package: beamerbaseframecomponents 2013/10/18 (rcs-revision 5cf6c5555a45) +\beamer@footins=\box44 +) (/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasecolor.sty +Package: beamerbasecolor 2010/06/06 (rcs-revision d1a9b48be06d) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasenotes.sty +Package: beamerbasenotes 2012/12/19 (rcs-revision 1686da3db3c9) +\beamer@frameboxcopy=\box45 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasetoc.sty +Package: beamerbasetoc 2013/05/23 (rcs-revision 0fdf5bc43be8) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasetemplates.sty +Package: beamerbasetemplates 2010/05/01 (rcs-revision efa082c6111d) +\beamer@sbttoks=\toks30 + +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbaseauxtemplates.sty +Package: beamerbaseauxtemplates 2013/09/04 (rcs-revision 4ac715c499d0) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbaseboxes.sty +Package: beamerbaseboxes 2012/05/13 (rcs-revision 56972908a390) +\bmb@box=\box46 +\bmb@colorbox=\box47 +\bmb@boxshadow=\box48 +\bmb@boxshadowball=\box49 +\bmb@boxshadowballlarge=\box50 +\bmb@temp=\dimen171 +\bmb@dima=\dimen172 +\bmb@dimb=\dimen173 +\bmb@prevheight=\dimen174 +) +\beamer@blockheadheight=\dimen175 +)) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbaselocalstructure.s +ty +Package: beamerbaselocalstructure 2013/09/04 (rcs-revision 4ac715c499d0) + (/usr/local/texlive/2014/texmf-dist/tex/latex/tools/enumerate.sty +Package: enumerate 1999/03/05 v3.00 enumerate extensions (DPC) +\@enLab=\toks31 +) +\c@figure=\count138 +\c@table=\count139 +\abovecaptionskip=\skip49 +\belowcaptionskip=\skip50 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasenavigation.sty +Package: beamerbasenavigation 2013/10/05 (rcs-revision 62be157fe783) +\beamer@section@min@dim=\dimen176 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasetheorems.sty +Package: beamerbasetheorems 2010/06/06 (rcs-revision 7e7cc5e53e9d) + +(/usr/local/texlive/2014/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2013/01/14 v2.14 AMS math features +\@mathmargin=\skip51 + +For additional information on amsmath, use the `?' option. +(/usr/local/texlive/2014/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 + +(/usr/local/texlive/2014/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 +\@emptytoks=\toks32 +\ex@=\dimen177 +)) +(/usr/local/texlive/2014/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d +\pmbraise@=\dimen178 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 1999/12/14 v2.01 operator names +) +\inf@bad=\count140 +LaTeX Info: Redefining \frac on input line 210. +\uproot@=\count141 +\leftroot@=\count142 +LaTeX Info: Redefining \overline on input line 306. +\classnum@=\count143 +\DOTSCASE@=\count144 +LaTeX Info: Redefining \ldots on input line 378. +LaTeX Info: Redefining \dots on input line 381. +LaTeX Info: Redefining \cdots on input line 466. +\Mathstrutbox@=\box51 +\strutbox@=\box52 +\big@size=\dimen179 +LaTeX Font Info: Redeclaring font encoding OML on input line 566. +LaTeX Font Info: Redeclaring font encoding OMS on input line 567. +\macc@depth=\count145 +\c@MaxMatrixCols=\count146 +\dotsspace@=\muskip11 +\c@parentequation=\count147 +\dspbrk@lvl=\count148 +\tag@help=\toks33 +\row@=\count149 +\column@=\count150 +\maxfields@=\count151 +\andhelp@=\toks34 +\eqnshift@=\dimen180 +\alignsep@=\dimen181 +\tagshift@=\dimen182 +\tagwidth@=\dimen183 +\totwidth@=\dimen184 +\lineht@=\dimen185 +\@envbody=\toks35 +\multlinegap=\skip52 +\multlinetaggap=\skip53 +\mathdisplay@stack=\toks36 +LaTeX Info: Redefining \[ on input line 2665. +LaTeX Info: Redefining \] on input line 2666. +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/amscls/amsthm.sty +Package: amsthm 2004/08/06 v2.20 +\thm@style=\toks37 +\thm@bodyfont=\toks38 +\thm@headfont=\toks39 +\thm@notefont=\toks40 +\thm@headpunct=\toks41 +\thm@preskip=\skip54 +\thm@postskip=\skip55 +\thm@headsep=\skip56 +\dth@everypar=\toks42 +) +\c@theorem=\count152 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/beamerbasethemes.sty +Package: beamerbasethemes 2010/05/01 (rcs-revision efa082c6111d) +)) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/theme/beamerthemede +fault.sty +Package: beamerthemedefault 2010/06/17 (rcs-revision d02a7cf4d8ae) + +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/font/beamerfontthem +edefault.sty +Package: beamerfontthemedefault 2012/12/19 (rcs-revision 1686da3db3c9) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/color/beamercolorth +emedefault.sty +Package: beamercolorthemedefault 2012/12/19 (rcs-revision 1686da3db3c9) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/inner/beamerinnerth +emedefault.sty +Package: beamerinnerthemedefault 2013/10/15 (rcs-revision 65cb471f9634) +\beamer@dima=\dimen186 +\beamer@dimb=\dimen187 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/outer/beamerouterth +emedefault.sty +Package: beamerouterthemedefault 2012/12/19 (rcs-revision 1686da3db3c9) +))) +(/usr/local/texlive/2014/texmf-dist/tex/latex/framed/framed.sty +Package: framed 2011/10/22 v 0.96: framed or shaded text with page breaks +\OuterFrameSep=\skip57 +\fb@frw=\dimen188 +\fb@frh=\dimen189 +\FrameRule=\dimen190 +\FrameSep=\dimen191 +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/base/alltt.sty +Package: alltt 1997/06/16 v2.0g defines alltt environment +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/theme/compatibility +/beamerthemesplit.sty +Package: beamerthemesplit 2010/06/17 (rcs-revision d02a7cf4d8ae) + +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/color/beamercolorth +emewhale.sty +Package: beamercolorthemewhale 2010/06/17 (rcs-revision d02a7cf4d8ae) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/outer/beamerouterth +emesplit.sty +Package: beamerouterthemesplit 2012/10/16 (rcs-revision 51a8c72084af) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/font/beamerfontthem +estructurebold.sty +Package: beamerfontthemestructurebold 2010/06/17 (rcs-revision d02a7cf4d8ae) +)) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/theme/beamerthemeBo +adilla.sty +Package: beamerthemeBoadilla 2010/06/17 (rcs-revision d02a7cf4d8ae) + +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/color/beamercolorth +emerose.sty +Package: beamercolorthemerose 2010/06/17 (rcs-revision d02a7cf4d8ae) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/inner/beamerinnerth +emerounded.sty +Package: beamerinnerthemerounded 2010/06/17 (rcs-revision d02a7cf4d8ae) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/color/beamercolorth +emedolphin.sty +Package: beamercolorthemedolphin 2010/06/17 (rcs-revision d02a7cf4d8ae) +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/themes/outer/beamerouterth +emeinfolines.sty +Package: beamerouterthemeinfolines 2012/10/16 (rcs-revision 51a8c72084af) +)) (/Users/kuhna03/Library/texmf/tex/latex/upquote.sty +Package: upquote 2003/08/11 v1.1 Covington's upright-quote modification to verb +atim and verb + +(/usr/local/texlive/2014/texmf-dist/tex/latex/base/textcomp.sty +Package: textcomp 2005/09/27 v1.99g Standard LaTeX package +Package textcomp Info: Sub-encoding information: +(textcomp) 5 = only ISO-Adobe without \textcurrency +(textcomp) 4 = 5 + \texteuro +(textcomp) 3 = 4 + \textohm +(textcomp) 2 = 3 + \textestimated + \textcurrency +(textcomp) 1 = TS1 - \textcircled - \t +(textcomp) 0 = TS1 (full) +(textcomp) Font families with sub-encoding setting implement +(textcomp) only a restricted character set as indicated. +(textcomp) Family '?' is the default used for unknown fonts. +(textcomp) See the documentation for details. +Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 71. + +(/usr/local/texlive/2014/texmf-dist/tex/latex/base/ts1enc.def +File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file +) +LaTeX Info: Redefining \oldstylenums on input line 266. +Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 281. +Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 282. +Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 283. +Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 284. +Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 285. +Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 286. +Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 287. +Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 288. +Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 289. +Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 290. +Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 291. +Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 292. +Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 293. +Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 294. +Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 295. +Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 296. +Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 297. +Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 298. +Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 299. +Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 300. +Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 301. +Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 302. +Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 303. +Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 304. + +Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 305. +Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 306. +Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 307. +Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 308. +Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 309. +Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 310. +Package textcomp Info: Setting lmr sub-encoding to TS1/0 on input line 311. +Package textcomp Info: Setting lmdh sub-encoding to TS1/0 on input line 312. +Package textcomp Info: Setting lmss sub-encoding to TS1/0 on input line 313. +Package textcomp Info: Setting lmssq sub-encoding to TS1/0 on input line 314. +Package textcomp Info: Setting lmvtt sub-encoding to TS1/0 on input line 315. +Package textcomp Info: Setting qhv sub-encoding to TS1/0 on input line 316. +Package textcomp Info: Setting qag sub-encoding to TS1/0 on input line 317. +Package textcomp Info: Setting qbk sub-encoding to TS1/0 on input line 318. +Package textcomp Info: Setting qcr sub-encoding to TS1/0 on input line 319. +Package textcomp Info: Setting qcs sub-encoding to TS1/0 on input line 320. +Package textcomp Info: Setting qpl sub-encoding to TS1/0 on input line 321. +Package textcomp Info: Setting qtm sub-encoding to TS1/0 on input line 322. +Package textcomp Info: Setting qzc sub-encoding to TS1/0 on input line 323. +Package textcomp Info: Setting qhvc sub-encoding to TS1/0 on input line 324. +Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 325. +Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 326. +Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 327. +Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 328. +Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 329. +Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 330. +Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 331. +Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 332. +Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 333. +Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 334. +Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 335. +Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 336. +Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 337. +Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 338. +Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 339. +Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 340. +)) (./caret.aux) +\openout1 = `caret.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 90. +LaTeX Font Info: ... okay on input line 90. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 90. +LaTeX Font Info: ... okay on input line 90. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 90. +LaTeX Font Info: ... okay on input line 90. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 90. +LaTeX Font Info: ... okay on input line 90. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 90. +LaTeX Font Info: ... okay on input line 90. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 90. +LaTeX Font Info: ... okay on input line 90. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 90. +LaTeX Font Info: ... okay on input line 90. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 90. +LaTeX Font Info: Try loading font information for TS1+cmr on input line 90. + +(/usr/local/texlive/2014/texmf-dist/tex/latex/base/ts1cmr.fd +File: ts1cmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: ... okay on input line 90. + +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: custom +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: includehead includefoot +* h-part:(L,W,R)=(11.74988pt, 340.6956pt, 11.74988pt) +* v-part:(T,H,B)=(0.0pt, 273.14662pt, 0.0pt) +* \paperwidth=364.19536pt +* \paperheight=273.14662pt +* \textwidth=340.6956pt +* \textheight=244.6939pt +* \oddsidemargin=-60.52011pt +* \evensidemargin=-60.52011pt +* \topmargin=-72.26999pt +* \headheight=14.22636pt +* \headsep=0.0pt +* \topskip=12.0pt +* \footskip=14.22636pt +* \marginparwidth=4.0pt +* \marginparsep=10.0pt +* \columnsep=10.0pt +* \skip\footins=10.8pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +(/usr/local/texlive/2014/texmf-dist/tex/context/base/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count153 +\scratchdimen=\dimen192 +\scratchbox=\box53 +\nofMPsegments=\count154 +\nofMParguments=\count155 +\everyMPshowfont=\toks43 +\MPscratchCnt=\count156 +\MPscratchDim=\dimen193 +\MPnumerator=\count157 +\makeMPintoPDFobject=\count158 +\everyMPtoPDFconversion=\toks44 +) (/usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf + +(/usr/local/texlive/2014/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO) +) +Package grfext Info: Graphics extension search list: +(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 452. + +(/usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +ABD: EveryShipout initializing macros +\AtBeginShipoutBox=\box54 +Package hyperref Info: Link coloring OFF on input line 90. + +(/usr/local/texlive/2014/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2012/10/27 v2.43 Cross-referencing by name of section + +(/usr/local/texlive/2014/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO) +) +\c@section@level=\count159 +) +LaTeX Info: Redefining \ref on input line 90. +LaTeX Info: Redefining \pageref on input line 90. +LaTeX Info: Redefining \nameref on input line 90. + +(./caret.out) (./caret.out) +\@outlinefile=\write5 +\openout5 = `caret.out'. + +LaTeX Font Info: Overwriting symbol font `operators' in version `normal' +(Font) OT1/cmr/m/n --> OT1/cmss/m/n on input line 90. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/cmss/bx/n on input line 90. +\symnumbers=\mathgroup6 +\sympureletters=\mathgroup7 +LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `normal' +(Font) OT1/cmss/m/n --> OT1/cmr/m/n on input line 90. +LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' +(Font) OT1/cmr/bx/n --> OT1/cmss/bx/n on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/cmss/bx/n on input line 90. +LaTeX Font Info: Redeclaring math alphabet \mathsf on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' +(Font) OT1/cmss/m/n --> OT1/cmss/m/n on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/cmss/bx/n --> OT1/cmss/m/n on input line 90. +LaTeX Font Info: Redeclaring math alphabet \mathit on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' +(Font) OT1/cmr/m/it --> OT1/cmss/m/it on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/cmr/bx/it --> OT1/cmss/m/it on input line 90. +LaTeX Font Info: Redeclaring math alphabet \mathtt on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' +(Font) OT1/cmtt/m/n --> OT1/cmtt/m/n on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) OT1/cmtt/m/n --> OT1/cmtt/m/n on input line 90. +LaTeX Font Info: Overwriting symbol font `numbers' in version `bold' +(Font) OT1/cmss/m/n --> OT1/cmss/bx/n on input line 90. +LaTeX Font Info: Overwriting symbol font `pureletters' in version `bold' +(Font) OT1/cmss/m/it --> OT1/cmss/bx/it on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathrm' in version `bold' +(Font) OT1/cmss/bx/n --> OT1/cmr/bx/n on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' +(Font) OT1/cmss/bx/n --> OT1/cmss/bx/n on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/cmss/m/n --> OT1/cmss/bx/n on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/cmss/m/it --> OT1/cmss/bx/it on input line 90. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) OT1/cmtt/m/n --> OT1/cmtt/bx/n on input line 90. +LaTeX Font Info: Redeclaring symbol font `pureletters' on input line 90. +LaTeX Font Info: Overwriting symbol font `pureletters' in version `normal' +(Font) OT1/cmss/m/it --> OT1/mathkerncmss/m/sl on input line 9 +0. +LaTeX Font Info: Overwriting symbol font `pureletters' in version `bold' +(Font) OT1/cmss/bx/it --> OT1/mathkerncmss/m/sl on input line +90. +LaTeX Font Info: Overwriting symbol font `pureletters' in version `bold' +(Font) OT1/mathkerncmss/m/sl --> OT1/mathkerncmss/bx/sl on inp +ut line 90. + +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/translator/dicts/translato +r-basic-dictionary/translator-basic-dictionary-English.dict +Dictionary: translator-basic-dictionary, Language: English +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/translator/dicts/translato +r-bibliography-dictionary/translator-bibliography-dictionary-English.dict +Dictionary: translator-bibliography-dictionary, Language: English +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/translator/dicts/translato +r-environment-dictionary/translator-environment-dictionary-English.dict +Dictionary: translator-environment-dictionary, Language: English +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/translator/dicts/translato +r-months-dictionary/translator-months-dictionary-English.dict +Dictionary: translator-months-dictionary, Language: English +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/translator/dicts/translato +r-numbers-dictionary/translator-numbers-dictionary-English.dict +Dictionary: translator-numbers-dictionary, Language: English +) +(/usr/local/texlive/2014/texmf-dist/tex/latex/beamer/translator/dicts/translato +r-theorem-dictionary/translator-theorem-dictionary-English.dict +Dictionary: translator-theorem-dictionary, Language: English +) +LaTeX Info: Redefining \includegraphics on input line 90. + (./caret.nav) +LaTeX Font Info: Try loading font information for U+msa on input line 90. + +(/usr/local/texlive/2014/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +LaTeX Font Info: Try loading font information for U+msb on input line 90. + +(/usr/local/texlive/2014/texmf-dist/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2013/01/14 v3.01 AMS symbols B +) +LaTeX Font Info: Try loading font information for OT1+mathkerncmss on input +line 90. + +(/usr/local/texlive/2014/texmf-dist/tex/latex/sansmathaccent/ot1mathkerncmss.fd +File: ot1mathkerncmss.fd 2013/03/27 Fontinst v1.933 font definitions for OT1/ma +thkerncmss. +) +Overfull \hbox (80.42943pt too wide) in paragraph at lines 90--90 + [][] \OT1/cmss/bx/n/6 ([]) + [] + + +Overfull \hbox (19.7391pt too wide) in paragraph at lines 90--90 + [][][][] + [] + +[1 + +{/usr/local/texlive/2014/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] + +Package hyperref Warning: Option `pdfauthor' has already been used, +(hyperref) setting the option has no effect on input line 97. + + +LaTeX Font Warning: Font shape `OT1/cmss/bx/n' in size <4> not available +(Font) size <5> substituted on input line 114. + + +LaTeX Font Warning: Font shape `OT1/cmss/m/n' in size <4> not available +(Font) size <5> substituted on input line 114. + +[2 + +] +\openout4 = `caret.vrb'. + + (./caret.vrb) [3 + +] +\openout4 = `caret.vrb'. + + (./caret.vrb +Overfull \hbox (5.27428pt too wide) in paragraph at lines 5--18 + [] + [] + +) [4 + +] +\openout4 = `caret.vrb'. + + (./caret.vrb) [5 + +] +\openout4 = `caret.vrb'. + + (./caret.vrb +! Undefined control sequence. +l.9 ...in the \texttt{Depends} field of the \textt + {DESCRIPTION} file which c... +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.18 ...ver, their formal dependency in the \textt + {DESCRIPTION} file require... +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +) [6 + +] +\openout4 = `caret.vrb'. + + (./caret.vrb) [7 + +] +\openout4 = `caret.vrb'. + + (./caret.vrb +LaTeX Font Info: Try loading font information for OMS+cmtt on input line 9. + +(/Library/Frameworks/R.framework/Resources/share/texmf/tex/latex/omscmtt.fd +File: omscmtt.fd +) +LaTeX Font Info: Font shape `OMS/cmtt/m/n' in size <8> not available +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 9. +) +[8 + +] +\openout4 = `caret.vrb'. + + (./caret.vrb) [9 + +] +\openout4 = `caret.vrb'. + + (./caret.vrb) [10 + +] +\openout4 = `caret.vrb'. + + (./caret.vrb) [11 + +] +\openout4 = `caret.vrb'. + + (./caret.vrb) +[12 + +] +\openout4 = `caret.vrb'. + + (./caret.vrb) [13 + +] +\tf@nav=\write6 +\openout6 = `caret.nav'. + +\tf@toc=\write7 +\openout7 = `caret.toc'. + +\tf@snm=\write8 +\openout8 = `caret.snm'. + +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 409. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 409. + (./caret.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 409. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 409. +Package rerunfilecheck Info: File `caret.out' has not changed. +(rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0. + + +LaTeX Font Warning: Size substitutions with differences +(Font) up to 1.0pt have occurred. + +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 409. + ) +Here is how much of TeX's memory you used: + 17288 strings out of 493117 + 332473 string characters out of 6135433 + 399193 words of memory out of 5000000 + 20260 multiletter control sequences out of 15000+600000 + 14149 words of font info for 53 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 56i,16n,57p,457b,557s stack positions out of 5000i,500n,10000p,200000b,80000s + +< +/usr/local/texlive/2014/texmf-dist/fonts/type1/public/amsfonts/cm/cmss8.pfb> +Output written on caret.pdf (13 pages, 132070 bytes). +PDF statistics: + 419 PDF objects out of 1000 (max. 8388607) + 382 compressed objects within 4 object streams + 27 named destinations out of 1000 (max. 500000) + 49 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/release_process/talk/caret.nav b/release_process/talk/caret.nav new file mode 100644 index 000000000..1be617d3b --- /dev/null +++ b/release_process/talk/caret.nav @@ -0,0 +1,32 @@ +\beamer@endinputifotherversion {3.33pt} +\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}} +\headcommand {\beamer@framepages {1}{1}} +\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}} +\headcommand {\beamer@framepages {2}{2}} +\headcommand {\slideentry {0}{0}{3}{3/3}{}{0}} +\headcommand {\beamer@framepages {3}{3}} +\headcommand {\slideentry {0}{0}{4}{4/4}{}{0}} +\headcommand {\beamer@framepages {4}{4}} +\headcommand {\slideentry {0}{0}{5}{5/5}{}{0}} +\headcommand {\beamer@framepages {5}{5}} +\headcommand {\slideentry {0}{0}{6}{6/6}{}{0}} +\headcommand {\beamer@framepages {6}{6}} +\headcommand {\slideentry {0}{0}{7}{7/7}{}{0}} +\headcommand {\beamer@framepages {7}{7}} +\headcommand {\slideentry {0}{0}{8}{8/8}{}{0}} +\headcommand {\beamer@framepages {8}{8}} +\headcommand {\slideentry {0}{0}{9}{9/9}{}{0}} +\headcommand {\beamer@framepages {9}{9}} +\headcommand {\slideentry {0}{0}{10}{10/10}{}{0}} +\headcommand {\beamer@framepages {10}{10}} +\headcommand {\slideentry {0}{0}{11}{11/11}{}{0}} +\headcommand {\beamer@framepages {11}{11}} +\headcommand {\slideentry {0}{0}{12}{12/12}{}{0}} +\headcommand {\beamer@framepages {12}{12}} +\headcommand {\slideentry {0}{0}{13}{13/13}{}{0}} +\headcommand {\beamer@framepages {13}{13}} +\headcommand {\beamer@partpages {1}{13}} +\headcommand {\beamer@subsectionpages {1}{13}} +\headcommand {\beamer@sectionpages {1}{13}} +\headcommand {\beamer@documentpages {13}} +\headcommand {\def \inserttotalframenumber {13}} diff --git a/release_process/talk/caret.pdf b/release_process/talk/caret.pdf new file mode 100644 index 000000000..9894cfe6b Binary files /dev/null and b/release_process/talk/caret.pdf differ diff --git a/release_process/talk/caret.snm b/release_process/talk/caret.snm new file mode 100644 index 000000000..e69de29bb diff --git a/release_process/talk/caret.tex b/release_process/talk/caret.tex new file mode 100644 index 000000000..e6c99a490 --- /dev/null +++ b/release_process/talk/caret.tex @@ -0,0 +1,422 @@ +\documentclass[12 pt]{beamer}\usepackage[]{graphicx}\usepackage[]{color} +%% maxwidth is the original width if it is less than linewidth +%% otherwise use linewidth (to make sure the graphics do not exceed the margin) +\makeatletter +\def\maxwidth{ % + \ifdim\Gin@nat@width>\linewidth + \linewidth + \else + \Gin@nat@width + \fi +} +\makeatother + +\definecolor{fgcolor}{rgb}{0.196, 0.196, 0.196} +\newcommand{\hlnum}[1]{\textcolor[rgb]{0.063,0.58,0.627}{#1}}% +\newcommand{\hlstr}[1]{\textcolor[rgb]{0.063,0.58,0.627}{#1}}% +\newcommand{\hlcom}[1]{\textcolor[rgb]{0.588,0.588,0.588}{#1}}% +\newcommand{\hlopt}[1]{\textcolor[rgb]{0.196,0.196,0.196}{#1}}% +\newcommand{\hlstd}[1]{\textcolor[rgb]{0.196,0.196,0.196}{#1}}% +\newcommand{\hlkwa}[1]{\textcolor[rgb]{0.231,0.416,0.784}{#1}}% +\newcommand{\hlkwb}[1]{\textcolor[rgb]{0.627,0,0.314}{#1}}% +\newcommand{\hlkwc}[1]{\textcolor[rgb]{0,0.631,0.314}{#1}}% +\newcommand{\hlkwd}[1]{\textcolor[rgb]{0.78,0.227,0.412}{#1}}% + +\usepackage{framed} +\makeatletter +\newenvironment{kframe}{% + \def\at@end@of@kframe{}% + \ifinner\ifhmode% + \def\at@end@of@kframe{\end{minipage}}% + \begin{minipage}{\columnwidth}% + \fi\fi% + \def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep + \colorbox{shadecolor}{##1}\hskip-\fboxsep + % There is no \\@totalrightmargin, so: + \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}% + \MakeFramed {\advance\hsize-\width + \@totalleftmargin\z@ \linewidth\hsize + \@setminipage}}% + {\par\unskip\endMakeFramed% + \at@end@of@kframe} +\makeatother + +\definecolor{shadecolor}{rgb}{.97, .97, .97} +\definecolor{messagecolor}{rgb}{0, 0, 0} +\definecolor{warningcolor}{rgb}{1, 0, 1} +\definecolor{errorcolor}{rgb}{1, 0, 0} +\newenvironment{knitrout}{}{} % an empty environment to be redefined in TeX + +\usepackage{alltt} + +\usepackage{beamerthemesplit} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\mode { + \usetheme{Boadilla} + \usecolortheme{whale} + \setbeamercovered{transparent} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Custom definitions + +\definecolor{darkgreen}{rgb}{0,0.3,0} +\definecolor{darkred}{rgb}{0.6,0.0,0} + +\newcommand{\mxnum}[1]{\texttt{\hlnum{#1}}}% +\newcommand{\mxkwc}[1]{\texttt{\hlkwc{#1}}}% +\newcommand{\mxkwd}[1]{\texttt{\hlkwd{#1}}}% + +\newcommand{\pkg}[1]{{\fontseries{b}\selectfont #1}} +\renewcommand{\pkg}[1]{{\color{darkgreen}\textsf{#1}}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\title{Nobody Knows What It's Like To Be the Bad Man} +\author{Max Kuhn, Ph.D} +\institute{Pfizer Global R$\&$D \linebreak Groton, CT\linebreak max.kuhn@pfizer.com } +\date{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +\begin{document} + +\begin{frame}[plain] + \maketitle +\end{frame} + +\title{caret} +\author{Max Kuhn} +\institute{Pfizer} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame} + \frametitle{Outline} + +\begin{itemize} +\item What is the \pkg{caret} package? +\item What makes it different +\item Version control +\item The CRAN release process +\item Testing +\item Documentation +\end{itemize} + +\end{frame} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Model Function Consistency} + +Since there are many modeling packages in R written by different people, +there are some inconsistencies in how models are specified and +predictions are created. + +\vspace{.15in} + +For example, many models have only one method of specifying the model +(e.g. formula method only) + + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Generating Class Probabilities Using Different Packages} + +\begin{footnotesize} +\begin{center} +\begin{tabular}{rcl} +{\bf Function} && {\bf {\tt predict} Function Syntax} \\ +\hline + \href{http://cran.r-project.org/web/packages/MASS/index.html}{\pkg{MASS}}\texttt{:::lda} && {\tt \hlkwd{predict}\hlstd{(obj)}} (no options needed)\\ +\pkg{stats}\texttt{:::glm} && {\tt \hlkwd{predict}\hlstd{(obj,} \hlkwc{type} \hlstd{=} \hlstr{"response"}\hlstd{)}} \\ +\href{http://cran.r-project.org/web/packages/gbm/index.html}{\pkg{gbm}}\texttt{:::gbm} && {\tt \hlkwd{predict}\hlstd{(obj,} \hlkwc{type} \hlstd{=} \hlstr{"response"}\hlstd{, n.trees)}} \\ +\href{http://cran.r-project.org/web/packages/mda/index.html}{\pkg{mda}}\texttt{:::mda} && {\tt \hlkwd{predict}\hlstd{(obj,} \hlkwc{type} \hlstd{=} \hlstr{"posterior"}\hlstd{)}} \\ +\href{http://cran.r-project.org/web/packages/rpart/index.html}{\pkg{rpart}}\texttt{:::rpart} && {\tt \hlkwd{predict}\hlstd{(obj,} \hlkwc{type} \hlstd{=} \hlstr{"prob"}\hlstd{)}} \\ +\href{http://cran.r-project.org/web/packages/RWeka/index.html}{\pkg{RWeka}}\texttt{:::Weka} && {\tt \hlkwd{predict}\hlstd{(obj,} \hlkwc{type} \hlstd{=} \hlstr{"probability"}\hlstd{)}} \\ +\href{http://cran.r-project.org/web/packages/caTools/index.html}{\pkg{caTools}}\texttt{:::LogitBoost} && {\tt \hlkwd{predict}\hlstd{(obj,} \hlkwc{type} \hlstd{=} \hlstr{"raw"}\hlstd{, nIter)}} \\ +\hline \\ +\\ +\end{tabular} +\end{center} +\end{footnotesize} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{The \pkg{caret} Package} + +The \href{http://cran.r-project.org/web/packages/caret/index.html}{\pkg{caret}} package was developed to: + \begin{itemize} +\item create a unified interface for modeling and prediction +(interfaces to 180 models) +\item streamline model tuning using resampling +\item provide a variety of ``helper'' functions and classes for day--to--day model building tasks +\item increase computational efficiency using parallel processing +\end{itemize} + +\vspace{.07in} + +First commits within Pfizer: 6/2005, First version on CRAN: 10/2007 + +\vspace{.06in} + +Website: \href{http://topepo.github.io/caret/}{http://topepo.github.io/caret/} + +\vspace{.06in} + +JSS Paper: \href{http://www.jstatsoft.org/v28/i05/paper}{http://www.jstatsoft.org/v28/i05/paper} + +\vspace{.06in} + +Model List: \href{http://topepo.github.io/caret/bytag.html}{http://topepo.github.io/caret/bytag.html} + +\vspace{.06in} + +Many computing sections in APM + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Package Dependencies} + + + +One thing that makes \pkg{caret} different from most other packages is that is uses code from an abnormally large number (> 80) of other packages. + +\vspace{.15in} + +Briefly, these were in the \texttt{Depends} field of the \textt{DESCRIPTION} file which cause all of them to be loaded with \pkg{caret}. + +\vspace{.15in} + +For many years, they were moved to \texttt{Suggests}, which solved that issue, + + +\vspace{.15in} + +However, their formal dependency in the \textt{DESCRIPTION} file required CRAN to install hundreds of other packages to check \pkg{caret}. They were not pleased. + +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{The Basic Release Process} + +\begin{enumerate} +\item create a few dynamic man pages +\item use {\color{darkred} \texttt{R CMD check --as-cran}} to ensure passing CRAN tests and {\color{darkred} unit tests} +\item update all packages (and R) +\item run {\color{darkred} regression tests} and evaluate results +\item send to CRAN +\item repeat +\item repeat +\item install passed \pkg{caret} version +\item generate {\color{darkred} HTML documentation} and sync github io branch +\item profit! +\end{enumerate} + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Required ``Optimizations''} + + +For example, there is one check that produces a large number of false positive warnings. For example: + +\begin{knitrout}\scriptsize +\definecolor{shadecolor}{rgb}{1, 1, 1}\color{fgcolor}\begin{kframe} +\begin{alltt} +\hlstd{> }\hlstd{bwplot.diff.resamples} \hlkwb{<-} \hlkwa{function} \hlstd{(}\hlkwc{x}\hlstd{,} \hlkwc{data}\hlstd{,} \hlkwc{metric} \hlstd{= x}\hlopt{$}\hlstd{metric,} \hlkwc{...}\hlstd{) \{} +\hlstd{+ } \hlcom{## some code} +\hlstd{+ } \hlstd{plotData} \hlkwb{<-} \hlkwd{subset}\hlstd{(plotData, Metric} \hlopt{%in%} \hlstd{metric)} +\hlstd{+ } \hlcom{## more code} +\hlstd{+ }\hlstd{\}} +\end{alltt} +\end{kframe} +\end{knitrout} + +will trigger a wanring that ``{\tt \small bwplot.diff.resamples: no visible binding for global variable 'Metric'}''. + +\vspace{.15in} + +The ``solution'' is to have a file that is sourced first in the package (e.g. \texttt{aaa.R}) with the line + +\begin{knitrout}\scriptsize +\definecolor{shadecolor}{rgb}{1, 1, 1}\color{fgcolor}\begin{kframe} +\begin{alltt} +\hlstd{> }\hlstd{Metric} \hlkwb{<-} \hlkwa{NULL} +\end{alltt} +\end{kframe} +\end{knitrout} + +\end{frame} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[fragile] +\frametitle{Severity of Problems} + +It's hard to tell which warnings should be ignored and which should not. There is also the issue of inconsistencies related to who is ``on duty'' when you submit your package. + +\vspace{.1in} + +For example, I recently updated the \pkg{desirability} package and received this warning: + +\vspace{.1in} + + + +\end{frame} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{frame}[fragile] +\frametitle{Package Dependencies} + +This problem was somewhat alleviated at the end of 2013 when {\em custom methods} were introduced into the package. + +\vspace{.15in} + +Although this functionality had already existed in the package for some time, it was refactored to be more user freindly. + +\vspace{.15in} + +In the process, much of the modeling code was moved out of \pkg{caret}'s R files and into R objects, eliminating the formal dependencies. + +\vspace{.15in} + +Right now, the {\em total} number of dependencies is much smaller (2 \texttt{Depends}, 7 \texttt{Imports}, and 25 \texttt{Suggests}). + +\vspace{.15in} + +This still affects testing though (described later) + +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Regression Testing} + +Prior to CRAN release (or whenever required), a comprehensive set of regression tests are conducted. + +\vspace{.1in} + +All modeling packages are updated to their current CRAN versions. + +\vspace{.1in} + +For each model accessed by \mxkwd{train}, \mxkwd{rfe}, and/or \mxkwd{sbf}, a set of test cases are computed with the production version of \pkg{caret} and the devle version. + +\vspace{.1in} + +First, test cases are evaluated to make sure that nothing has been broken by updated versions of the consistuent packages. + +\vspace{.1in} + +Diffs of the model results are computed to assess any differences in \pkg{caret} versions. + +\vspace{.1in} + +This process takes approximately 10hrs to complete using \texttt{make -j 12} on a Mac Pro. + +\end{frame} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Documentation} + +\pkg{caret} originally contained four package vignettes with in--depth descriptions of functionality with examples. + +\vspace{.15in} + +Although this functionality had already existed in the package for some time, it was refactored to be more user freindly. + +\vspace{.15in} + +However, this added time to \texttt{R CMD check} and was a general pain for CRAN. + +\vspace{.15in} + +Efforts to make the vingettes more computationally efficient (e.g. reducing the number of examples, resamples, etc.) diminished the effectiveness of the documentation. + + +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \begin{frame}[fragile] +\frametitle{Documentation} + +The documentation was moved out of the package and to the github IO page. + +\vspace{.15in} + + +These pages are built using \pkg{knitr} whenever a new version is sent to CRAN. Some advantages are: + +\begin{itemize} +\item longer and more relavant examples are availible +\item update scheduile is under my control +\item dynamic documentation (e.g. D3 network graphs, JS tables) +\item better formatting +\end{itemize} + +\vspace{.1in} + +These currently take about 4hr to create these (using parallel processing when possible). + +\end{frame} + + + + + + + +\end{document} + + + + + + + + + + + + + diff --git a/release_process/talk/caret.toc b/release_process/talk/caret.toc new file mode 100644 index 000000000..28eae724f --- /dev/null +++ b/release_process/talk/caret.toc @@ -0,0 +1 @@ +\beamer@endinputifotherversion {3.33pt} diff --git a/release_process/talk/caret.vrb b/release_process/talk/caret.vrb new file mode 100644 index 000000000..b16ab0cbb --- /dev/null +++ b/release_process/talk/caret.vrb @@ -0,0 +1,20 @@ +\frametitle{Documentation} + +The documentation was moved out of the package and to the github IO page. + +\vspace{.15in} + + +These pages are built using \pkg{knitr} whenever a new version is sent to CRAN. Some advantages are: + +\begin{itemize} +\item longer and more relavant examples are availible +\item update scheduile is under my control +\item dynamic documentation (e.g. D3 network graphs, JS tables) +\item better formatting +\end{itemize} + +\vspace{.1in} + +These currently take about 4hr to create these (using parallel processing when possible). + diff --git a/release_process/update_pkgs.R b/release_process/update_pkgs.R index fc59adea2..0fec056c9 100644 --- a/release_process/update_pkgs.R +++ b/release_process/update_pkgs.R @@ -9,7 +9,21 @@ mods <- getModelInfo() libs <- unlist(lapply(mods, function(x) x$library)) libs <- unique(sort(libs)) libs <- libs[!(libs %in% c("caret", "vbmp", "gpls", "logicFS", "SDDA"))] -libs <- c(libs, "knitr", "Hmisc", "googleVis", "animation", "desirability", "networkD3") +libs <- c(libs, "knitr", "Hmisc", "googleVis", "animation", + "desirability", "networkD3", "arm", "xtable", + "RColorBrewer", "gplots", "iplots", "latticeExtra", + "scatterplot3d", "vcd", "igraph", "corrplot", "ctv", + "Cairo", "shiny", "scales", "tabplot", "tikzDevice", "odfWeave", + "multicore", "doMC", "doMPI", "doSMP", "doBy", + "foreach", "doParallel", "aod", "car", "contrast", "Design", + "faraway", "geepack", "gmodels", "lme4", "tidyr", "devtools", "testthat", + "multcomp", "multtest", "pda", "qvalue", "ChemometricsWithR", "markdown", "rmarkdown", + ## odds and ends + "ape", "gdata", "boot", "bootstrap", "chron", "combinat", "concord", "cluster", + "desirability", "gsubfn", "gtools", "impute", "Matrix", "proxy", "plyr", + "reshape", "rJava", "SparseM", "sqldf", "XML", "lubridate", "dplyr", "GA", + "aroma.affymetrix", "remMap", "cghFLasso", "RCurl", "QSARdata", "reshape2", + "mapproj", "ggmap", "ggvis", "SuperLearner", "subsemble", "caretEnsemble") ###################################################################