{
  "_id": "6abd18aa99f7aa8c6aa4f193",
  "Package": "classbound",
  "Title": "Visualization for Classification Decision Boundaries",
  "Version": "1.0.0",
  "Authors@R": "c(\nperson(given = \"Vaibhav\",\nfamily = \"Manihar\",\nrole = c(\"aut\", \"cre\"),\nemail = \"vaibhav.manihar@gmail.com\"),\nperson(given = \"Natalia\",\nfamily = \"da Silva\",\nrole = \"aut\",\nemail = \"natalia.dasilva@fcea.edu.uy\",\ncomment = c(ORCID = \"https://orcid.org/0000-0002-6031-7451\")),\nperson(given = \"Ignacio\",\nfamily = \"Alvarez-Castro\",\nrole = \"aut\",\nemail = \"ignacio.lavarez@fcea.edu.uy\",\ncomment = c(ORCID = \"https://orcid.org/0000-0003-1633-2432\"))\n)",
  "Description": "Exploring, visualizing, and comparing classification\ndecision boundaries. Provides a unified interface for fitting\nclassifiers and rendering 2D decision boundary plots, with\nsupport for 2D slice visualization (fixing non-plotted\ndimensions at reference values) and projection-based\nvisualization for high-dimensional data (including Principal\nComponent Analysis (PCA) and tour projections from the 'tourr'\npackage). Supports native 'R' classifiers, 'tidymodels'\nworkflows, and custom user-supplied models via a flexible\nadapter system. Includes an interactive 'Shiny' application\n('explorapp') for visual exploration, data simulation, drawing,\nmodel comparison, probability surfaces, and reproducible\nexports.",
  "License": "GPL (>= 2)",
  "URL": "https://github.com/natydasilva/classbound,\nhttps://natydasilva.github.io/classbound/",
  "LazyData": "yes",
  "Encoding": "UTF-8",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "Config/roxygen2/version": "8.1.0",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-09-30 14:07:51 UTC",
    "User": "root"
  },
  "Author": "Vaibhav Manihar [aut, cre], Natalia da Silva [aut] (ORCID:\n<https://orcid.org/0000-0002-6031-7451>), Ignacio\nAlvarez-Castro [aut] (ORCID:\n<https://orcid.org/0000-0003-1633-2432>)",
  "Maintainer": "Vaibhav Manihar <vaibhav.manihar@gmail.com>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-09-30 13:55:15 UTC",
  "RemoteUrl": "https://github.com/cran/classbound",
  "RemoteRef": "HEAD",
  "RemoteSha": "88f02dfd947b2009850276f4b0199cc5deaa3b6c",
  "_user": "cran",
  "_type": "src",
  "_file": "classbound_1.0.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/691de3d9818fe885cefd1f36f3de68d924c08db3d17c62e3233da2761477b5f7",
  "_filesize": 2547437,
  "_sha256": "691de3d9818fe885cefd1f36f3de68d924c08db3d17c62e3233da2761477b5f7",
  "_expires": "2027-01-08T14:11:52.000Z",
  "_created": "2026-09-30T14:07:51.000Z",
  "_published": "2026-09-30T14:11:54.592Z",
  "_jobs": [
    {
      "job": 109923583694,
      "time": 289,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11103076527"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/36726079777",
  "_status": "success",
  "_upstream": "https://github.com/cran/classbound",
  "_commit": {
    "id": "88f02dfd947b2009850276f4b0199cc5deaa3b6c",
    "author": "Vaibhav Manihar <vaibhav.manihar@gmail.com>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 1.0.0\n",
    "time": 1790776515
  },
  "_maintainer": {
    "name": "Vaibhav Manihar",
    "email": "vaibhav.manihar@gmail.com",
    "login": "vai-man",
    "linkedin": "in/VaiMan",
    "twitter": "@OfcVaiMan",
    "description": "I make things work… eventually.",
    "uuid": 145927299
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.3.0",
      "role": "Depends"
    },
    {
      "package": "class",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "ggnewscale",
      "role": "Imports"
    },
    {
      "package": "shiny",
      "role": "Imports"
    },
    {
      "package": "DT",
      "role": "Imports"
    },
    {
      "package": "RColorBrewer",
      "role": "Imports"
    },
    {
      "package": "tidymodels",
      "role": "Suggests"
    },
    {
      "package": "workflowsets",
      "role": "Suggests"
    },
    {
      "package": "workflows",
      "role": "Suggests"
    },
    {
      "package": "parsnip",
      "role": "Suggests"
    },
    {
      "package": "tourr",
      "role": "Suggests"
    },
    {
      "package": "rpart",
      "role": "Suggests"
    },
    {
      "package": "roxygen2",
      "version": ">= 7.3.0",
      "role": "Suggests"
    },
    {
      "package": "PPtreeViz",
      "role": "Suggests"
    },
    {
      "package": "PPtreeExt",
      "role": "Suggests"
    },
    {
      "package": "ppforest2",
      "role": "Suggests"
    },
    {
      "package": "randomForest",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "palmerpenguins",
      "role": "Suggests"
    },
    {
      "package": "e1071",
      "role": "Suggests"
    },
    {
      "package": "MixSim",
      "role": "Suggests"
    },
    {
      "package": "MASS",
      "role": "Suggests"
    },
    {
      "package": "jsonlite",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-40",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "1.0.0",
      "date": "2026-09-30"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "vai-man",
      "count": 1,
      "uuid": 145927299
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "followers": 630,
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/classbound"
  },
  "_devurl": "https://github.com/natydasilva/classbound",
  "_pkgdown": "https://natydasilva.github.io/classbound/",
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/classbound.html",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/readme.html",
    "extra/readme.md"
  ],
  "_cranurl": false,
  "_exports": [
    "as_classbound",
    "boundary_compute",
    "boundary_explore_nd",
    "boundary_workflow_set",
    "classbound",
    "classbound_palette",
    "explorapp",
    "export_data_csv",
    "export_metrics_csv",
    "export_models_rds",
    "export_plots_pdf",
    "export_plots_png",
    "fit_model",
    "plot_boundary",
    "predict_adapter",
    "predict_model",
    "preprocess_data",
    "simu_n",
    "simulate_mixsim"
  ],
  "_datasets": [
    {
      "name": "data69_1",
      "title": "Waveform Dataset (UCI)",
      "object": "data69_1",
      "class": [
        "spec_tbl_df",
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "Y",
        "V1",
        "V2",
        "V3",
        "V4",
        "V5",
        "V6",
        "V7",
        "V8",
        "V9",
        "V10",
        "V11",
        "V12",
        "V13",
        "V14",
        "V15",
        "V16",
        "V17",
        "V18",
        "V19",
        "V20",
        "V21"
      ],
      "rows": 5000,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "as_classbound",
      "title": "Convert a fitted model into a classbound object",
      "topics": [
        "as_classbound"
      ]
    },
    {
      "page": "boundary_compute",
      "title": "Compute the classification decision boundary",
      "topics": [
        "boundary_compute"
      ]
    },
    {
      "page": "boundary_explore_nd",
      "title": "Explore high-dimensional classification boundaries",
      "topics": [
        "boundary_explore_nd"
      ]
    },
    {
      "page": "boundary_workflow_set",
      "title": "Compute classification boundaries for a workflow_set",
      "topics": [
        "boundary_workflow_set"
      ]
    },
    {
      "page": "classbound",
      "title": "Visualize a classification decision boundary",
      "topics": [
        "classbound"
      ]
    },
    {
      "page": "classbound_palette",
      "title": "Generate deterministic colors for classification classes",
      "topics": [
        "classbound_palette"
      ]
    },
    {
      "page": "data69_1",
      "title": "Waveform Dataset (UCI)",
      "topics": [
        "data69_1"
      ]
    },
    {
      "page": "explorapp",
      "title": "Shiny app to visually explore and compare classification boundaries for built-in, custom, and tidymodels algorithms in 2D",
      "topics": [
        "explorapp"
      ]
    },
    {
      "page": "export_data_csv",
      "title": "Export data to CSV",
      "topics": [
        "export_data_csv"
      ]
    },
    {
      "page": "export_metrics_csv",
      "title": "Export comparison metrics to CSV",
      "topics": [
        "export_metrics_csv"
      ]
    },
    {
      "page": "export_models_rds",
      "title": "Export fitted models to RDS",
      "topics": [
        "export_models_rds"
      ]
    },
    {
      "page": "export_plots_pdf",
      "title": "Export ggplot objects to a multi-page PDF",
      "topics": [
        "export_plots_pdf"
      ]
    },
    {
      "page": "export_plots_png",
      "title": "Export ggplot objects to individual PNG files in a directory",
      "topics": [
        "export_plots_png"
      ]
    },
    {
      "page": "fit_model",
      "title": "Fit a machine learning model",
      "topics": [
        "fit_model",
        "fit_model.character",
        "fit_model.default",
        "fit_model.function"
      ]
    },
    {
      "page": "plot_boundary",
      "title": "Visualize the classification decision boundary",
      "topics": [
        "plot_boundary"
      ]
    },
    {
      "page": "plot.classbound",
      "title": "Plot a classbound model boundary",
      "topics": [
        "plot.classbound"
      ]
    },
    {
      "page": "plot.classbound_boundary",
      "title": "Plot a computed boundary",
      "topics": [
        "plot.classbound_boundary"
      ]
    },
    {
      "page": "predict_model",
      "title": "Predict using a fitted classbound model",
      "topics": [
        "predict_model"
      ]
    },
    {
      "page": "predict.classbound",
      "title": "Predict using a classbound model",
      "topics": [
        "predict.classbound",
        "predict.classbound_multi"
      ]
    },
    {
      "page": "preprocess_data",
      "title": "Preprocess data before model fitting",
      "topics": [
        "preprocess_data"
      ]
    },
    {
      "page": "print.classbound",
      "title": "Print a classbound model",
      "topics": [
        "print.classbound",
        "print.classbound_multi"
      ]
    },
    {
      "page": "simu_n",
      "title": "Simulate multivariate normal data for multiple classes",
      "topics": [
        "simu_n"
      ]
    },
    {
      "page": "simulate_mixsim",
      "title": "Simulate data using Gaussian mixture models",
      "topics": [
        "simulate_mixsim"
      ]
    },
    {
      "page": "summary.classbound",
      "title": "Summarize a classbound model",
      "topics": [
        "summary.classbound",
        "summary.classbound_multi"
      ]
    }
  ],
  "_readme": "https://github.com/cran/classbound/raw/HEAD/README.md",
  "_rundeps": [
    "base64enc",
    "bslib",
    "cachem",
    "class",
    "cli",
    "commonmark",
    "cpp11",
    "crosstalk",
    "digest",
    "DT",
    "evaluate",
    "farver",
    "fastmap",
    "fontawesome",
    "fs",
    "ggnewscale",
    "ggplot2",
    "glue",
    "gtable",
    "highr",
    "htmltools",
    "htmlwidgets",
    "httpuv",
    "isoband",
    "jquerylib",
    "jsonlite",
    "knitr",
    "labeling",
    "later",
    "lazyeval",
    "lifecycle",
    "magrittr",
    "memoise",
    "mime",
    "otel",
    "promises",
    "R6",
    "rappdirs",
    "RColorBrewer",
    "Rcpp",
    "rlang",
    "rmarkdown",
    "S7",
    "sass",
    "scales",
    "shiny",
    "sourcetools",
    "tinytex",
    "vctrs",
    "viridisLite",
    "withr",
    "xfun",
    "xtable",
    "yaml"
  ],
  "_vignettes": [
    {
      "source": "tidymodels-workflow.Rmd",
      "filename": "tidymodels-workflow.html",
      "title": "Comparing Classifiers with tidymodels",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Required packages",
        "Step 1: Prepare data",
        "Step 2: Define model specifications",
        "Step 3: Create a workflow set",
        "Step 4: Compute boundaries for all models",
        "Step 5: Plot with facets",
        "Step 6: Disagreement map",
        "Using pre-trained workflows"
      ],
      "created": "2026-09-30 13:55:15",
      "modified": "2026-09-30 13:55:15",
      "commits": 1
    },
    {
      "source": "tourr-workflow.Rmd",
      "filename": "tourr-workflow.html",
      "title": "Comparing Models with tourr",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Workflow overview",
        "Step 1: Prepare data",
        "Step 2: Fit models on the same data",
        "Step 3: Generate one shared projection sequence",
        "Step 4: Visualize at one tour frame",
        "Step 5: Compare models at the same frame",
        "Animating the tour (optional)",
        "Key points"
      ],
      "created": "2026-09-30 13:55:15",
      "modified": "2026-09-30 13:55:15",
      "commits": 1
    },
    {
      "source": "custom_adapters.Rmd",
      "filename": "custom_adapters.html",
      "title": "Custom Predictions and Adapters",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The prediction philosophy",
        "1. Standard classifiers (no extra work needed)",
        "2. Non-standard models (using predfun)",
        "3. Officially supported classifiers (built-in adapters)",
        "The adapter contract",
        "4. Writing a custom S3 adapter"
      ],
      "created": "2026-09-30 13:55:15",
      "modified": "2026-09-30 13:55:15",
      "commits": 1
    },
    {
      "source": "getting-started.Rmd",
      "filename": "getting-started.html",
      "title": "Getting Started with classbound",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What is classbound?",
        "Installation",
        "Quick start: one-step boundary plot",
        "The modular API",
        "Using different classifiers",
        "Probability surface",
        "Interactive exploration",
        "What's next?"
      ],
      "created": "2026-09-30 13:55:15",
      "modified": "2026-09-30 13:55:15",
      "commits": 1
    },
    {
      "source": "high-dimensional.Rmd",
      "filename": "high-dimensional.html",
      "title": "High-Dimensional Classification Boundaries",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The problem with more than two features",
        "Setup",
        "2D Slice",
        "Projection",
        "When to use each strategy",
        "High-dimensional data: data69_1"
      ],
      "created": "2026-09-30 13:55:15",
      "modified": "2026-09-30 13:55:15",
      "commits": 1
    },
    {
      "source": "explorapp-guide.Rmd",
      "filename": "explorapp-guide.html",
      "title": "Interactive Exploration with Explorapp",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Launching Explorapp",
        "Data modes",
        "Import Data",
        "Simulate Data",
        "Draw Data",
        "Model configuration",
        "Visualization modes",
        "Navigate",
        "2D Slice",
        "Projection",
        "Probability surface",
        "Outlier injection",
        "Performance metrics",
        "Export",
        "Import Workspace Models"
      ],
      "created": "2026-09-30 13:55:15",
      "modified": "2026-09-30 13:55:15",
      "commits": 1
    }
  ],
  "_score": 3.4771212547196626,
  "_indexed": true,
  "_nocasepkg": "classbound",
  "_universes": [
    "cran",
    "vai-man",
    "natydasilva"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.0.0",
      "date": "2026-09-30T14:10:52.000Z",
      "distro": "resolute",
      "commit": "88f02dfd947b2009850276f4b0199cc5deaa3b6c",
      "fileid": "https://r2.ropensci.org/bd5ac80283494f4c9aae142d4cfa987851d42c75124e29eaa7b176bab98917e8",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/36726079777"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "1.0.0",
      "date": "2026-09-30T14:10:28.000Z",
      "distro": "resolute",
      "commit": "88f02dfd947b2009850276f4b0199cc5deaa3b6c",
      "fileid": "https://r2.ropensci.org/ec1c3cf51ee605a55213961abeebed21333df91421fddbd0dae9b09162aff086",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/36726079777"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.0.0",
      "date": "2026-09-30T14:11:05.000Z",
      "commit": "88f02dfd947b2009850276f4b0199cc5deaa3b6c",
      "fileid": "https://r2.ropensci.org/1f6b5b550d4f9b9e354e780c0bb700453b0d69630f3f8514da56dcee3609c4fb",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/36726079777"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-09-30T14:09:21.000Z",
      "commit": "88f02dfd947b2009850276f4b0199cc5deaa3b6c",
      "fileid": "https://r2.ropensci.org/ebbd989a7c3196a8284d3c2059681b85d5ba66e9ad53b24c875c287b1068db4d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/36726079777"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-09-30T14:09:19.000Z",
      "commit": "88f02dfd947b2009850276f4b0199cc5deaa3b6c",
      "fileid": "https://r2.ropensci.org/142508f9184a66781793afc029a6a13134b5385df26180afa4a744fdb9015758",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/36726079777"
    }
  ]
}