{
  "_id": "6a1a205a1d7bb097a09cf5df",
  "Package": "couplr",
  "Title": "Optimal Pairing and Matching via Linear Assignment",
  "Version": "1.4.1",
  "Authors@R": "person(\"Gilles\", \"Colling\", email = \"gilles.colling051@gmail.com\",\nrole = c(\"aut\", \"cre\", \"cph\"),\ncomment = c(ORCID = \"0000-0003-3070-6066\"))",
  "Description": "Solves optimal pairing and matching problems using linear\nassignment algorithms. Provides implementations of the\nHungarian method (Kuhn 1955) <doi:10.1002/nav.3800020109>,\nJonker-Volgenant shortest path algorithm (Jonker and Volgenant\n1987) <doi:10.1007/BF02278710>, Auction algorithm (Bertsekas\n1988) <doi:10.1007/BF02186476>, cost-scaling (Goldberg and\nKennedy 1995) <doi:10.1007/BF01585996>, scaling algorithms\n(Gabow and Tarjan 1989) <doi:10.1137/0218069>, push-relabel\n(Goldberg and Tarjan 1988) <doi:10.1145/48014.61051>, and\nSinkhorn entropy-regularized transport (Cuturi 2013)\n<doi:10.48550/arxiv.1306.0895>. Designed for matching plots,\nsites, samples, or any pairwise optimization problem. Supports\nrectangular matrices, forbidden assignments, data frame inputs,\nbatch solving, k-best solutions, and pixel-level image morphing\nfor visualization. Includes automatic preprocessing with\nvariable health checks, multiple scaling methods (standardized,\nrange, robust), greedy matching algorithms, and comprehensive\nbalance diagnostics for assessing match quality using\nstandardized differences and distribution comparisons.",
  "License": "MIT + file LICENSE",
  "Language": "en-US",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "SystemRequirements": "C++17",
  "LazyData": "true",
  "VignetteBuilder": "knitr",
  "URL": "https://gillescolling.com/couplr/,\nhttps://github.com/gcol33/couplr",
  "BugReports": "https://github.com/gcol33/couplr/issues",
  "Config/testthat/edition": "3",
  "Config/pak/sysreqs": "cmake make libuv1-dev",
  "Repository": "https://gcol33.r-universe.dev",
  "Date/Publication": "2026-05-29 11:16:32 UTC",
  "RemoteUrl": "https://github.com/gcol33/couplr",
  "RemoteRef": "HEAD",
  "RemoteSha": "bd4a14367eefdea77b874cc8bb83473191809580",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-05-29 23:14:55 UTC",
    "User": "root"
  },
  "Author": "Gilles Colling [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0003-3070-6066>)",
  "Maintainer": "Gilles Colling <gilles.colling051@gmail.com>",
  "MD5sum": "af6ff601cca95d44b541f388f615a48e",
  "_user": "gcol33",
  "_type": "src",
  "_file": "couplr_1.4.1.tar.gz",
  "_fileid": "a7498a21eab9477058459ac1d74f281de910efb51e46c5769c198b37ccf77642",
  "_filesize": 3462151,
  "_sha256": "a7498a21eab9477058459ac1d74f281de910efb51e46c5769c198b37ccf77642",
  "_created": "2026-05-29T23:14:55.000Z",
  "_published": "2026-05-29T23:25:14.272Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 78602533306,
      "time": 310,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7302989129"
    },
    {
      "job": 78602533302,
      "time": 299,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7302987248"
    },
    {
      "job": 78602533283,
      "time": 314,
      "config": "linux-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7302990016"
    },
    {
      "job": 78602533318,
      "time": 298,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7302986797"
    },
    {
      "job": 78602533315,
      "time": 155,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7302960072"
    },
    {
      "job": 78602533319,
      "time": 503,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7303024640"
    },
    {
      "job": 78602533327,
      "time": 195,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7302967476"
    },
    {
      "job": 78602533316,
      "time": 478,
      "config": "macos-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7303020108"
    },
    {
      "job": 78601892127,
      "time": 402,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7302929844"
    },
    {
      "job": 78602533267,
      "time": 233,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7302974690"
    },
    {
      "job": 78602533282,
      "time": 331,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7302993148"
    },
    {
      "job": 78602533287,
      "time": 274,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7302982680"
    },
    {
      "job": 78602533305,
      "time": 318,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7302990958"
    }
  ],
  "_buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/gcol33/couplr",
  "_commit": {
    "id": "bd4a14367eefdea77b874cc8bb83473191809580",
    "author": "Gilles Colling <gilles.colling051@gmail.com>",
    "committer": "Gilles Colling <gilles.colling051@gmail.com>",
    "message": "docs: rewrite README in readme-aura style with plain break line\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n",
    "time": 1780053392
  },
  "_maintainer": {
    "name": "Gilles Colling",
    "email": "gilles.colling051@gmail.com",
    "login": "gcol33",
    "linkedin": "in/gilles-colling-0b3747306",
    "orcid": "0000-0003-3070-6066",
    "twitter": "@Gilles__Colling",
    "description": "Building tools for ecology in R, C++, and Rust.\nWhy did Microsoft have to buy it. Sadge :(",
    "uuid": 25009600
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "Rcpp",
      "role": "LinkingTo"
    },
    {
      "package": "RcppEigen",
      "role": "LinkingTo"
    },
    {
      "package": "testthat",
      "role": "LinkingTo"
    },
    {
      "package": "Rcpp",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "version": ">= 3.0.0",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "version": ">= 1.0.0",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "version": ">= 0.4.0",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "version": ">= 0.3.0",
      "role": "Imports"
    },
    {
      "package": "methods",
      "role": "Imports"
    },
    {
      "package": "htmlwidgets",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "xml2",
      "role": "Suggests"
    },
    {
      "package": "e1071",
      "role": "Suggests"
    },
    {
      "package": "R.utils",
      "role": "Suggests"
    },
    {
      "package": "microbenchmark",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "bench",
      "role": "Suggests"
    },
    {
      "package": "parallel",
      "role": "Suggests"
    },
    {
      "package": "future",
      "version": ">= 1.20.0",
      "role": "Suggests"
    },
    {
      "package": "future.apply",
      "version": ">= 1.8.0",
      "role": "Suggests"
    },
    {
      "package": "parallelly",
      "version": ">= 1.30.0",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "ggraph",
      "role": "Suggests"
    },
    {
      "package": "tidygraph",
      "role": "Suggests"
    },
    {
      "package": "magick",
      "role": "Suggests"
    },
    {
      "package": "OpenImageR",
      "role": "Suggests"
    },
    {
      "package": "farver",
      "role": "Suggests"
    },
    {
      "package": "av",
      "role": "Suggests"
    },
    {
      "package": "reticulate",
      "role": "Suggests"
    },
    {
      "package": "png",
      "role": "Suggests"
    },
    {
      "package": "combinat",
      "role": "Suggests"
    },
    {
      "package": "cobalt",
      "role": "Suggests"
    },
    {
      "package": "MatchIt",
      "role": "Suggests"
    },
    {
      "package": "marginaleffects",
      "role": "Suggests"
    },
    {
      "package": "optmatch",
      "role": "Suggests"
    }
  ],
  "_owner": "gcol33",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-45",
      "n": 6
    },
    {
      "week": "2025-46",
      "n": 1
    },
    {
      "week": "2025-47",
      "n": 36
    },
    {
      "week": "2025-48",
      "n": 24
    },
    {
      "week": "2025-51",
      "n": 10
    },
    {
      "week": "2026-02",
      "n": 63
    },
    {
      "week": "2026-03",
      "n": 24
    },
    {
      "week": "2026-04",
      "n": 18
    },
    {
      "week": "2026-09",
      "n": 2
    },
    {
      "week": "2026-10",
      "n": 14
    },
    {
      "week": "2026-11",
      "n": 1
    },
    {
      "week": "2026-12",
      "n": 3
    },
    {
      "week": "2026-19",
      "n": 2
    },
    {
      "week": "2026-20",
      "n": 21
    },
    {
      "week": "2026-21",
      "n": 19
    },
    {
      "week": "2026-22",
      "n": 2
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2025-11-07"
    },
    {
      "name": "v0.1.1",
      "date": "2025-11-07"
    },
    {
      "name": "v1.0.0",
      "date": "2025-11-25"
    },
    {
      "name": "v1.0.1",
      "date": "2026-01-08"
    },
    {
      "name": "v1.0.2",
      "date": "2026-01-09"
    },
    {
      "name": "v1.0.3",
      "date": "2026-01-09"
    },
    {
      "name": "v1.0.4",
      "date": "2026-01-13"
    },
    {
      "name": "v1.0.5",
      "date": "2026-01-13"
    },
    {
      "name": "v1.0.7",
      "date": "2026-01-20"
    },
    {
      "name": "v1.0.8",
      "date": "2026-01-20"
    },
    {
      "name": "v1.0.10",
      "date": "2026-01-21"
    },
    {
      "name": "v1.1.0",
      "date": "2026-03-03"
    },
    {
      "name": "v1.2.0",
      "date": "2026-03-03"
    },
    {
      "name": "v1.3.0",
      "date": "2026-03-03"
    },
    {
      "name": "v1.2.2",
      "date": "2026-03-20"
    },
    {
      "name": "v1.3.1",
      "date": "2026-05-15"
    },
    {
      "name": "v1.4.0",
      "date": "2026-05-18"
    },
    {
      "name": "pre-scrub-backup-20260520",
      "date": "2026-05-20"
    },
    {
      "name": "v1.4.1",
      "date": "2026-05-20"
    }
  ],
  "_topics": [
    "bipartite-matching",
    "linear-assignment",
    "optimization",
    "cpp"
  ],
  "_stars": 1,
  "_contributors": [
    {
      "user": "gcol33",
      "count": 234,
      "uuid": 25009600
    },
    {
      "user": "claude",
      "count": 2,
      "uuid": 81847
    }
  ],
  "_userbio": {
    "uuid": 25009600,
    "type": "user",
    "name": "Gilles Colling",
    "description": "Building tools for ecology in R, C++, and Rust.\nWhy did Microsoft have to buy it. Sadge :("
  },
  "_downloads": {
    "count": 596,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/couplr"
  },
  "_devurl": "https://github.com/gcol33/couplr",
  "_pkgdown": "https://gillescolling.com/couplr/",
  "_searchresults": 33,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/couplr.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/gcol33/couplr",
  "_realowner": "gcol33",
  "_cranurl": true,
  "_releases": [
    {
      "version": "1.0.6",
      "date": "2026-01-20"
    },
    {
      "version": "1.0.8",
      "date": "2026-01-21"
    },
    {
      "version": "1.0.10",
      "date": "2026-01-21"
    },
    {
      "version": "1.1.0",
      "date": "2026-03-03"
    },
    {
      "version": "1.2.0",
      "date": "2026-03-20"
    },
    {
      "version": "1.2.1",
      "date": "2026-03-20"
    },
    {
      "version": "1.4.0",
      "date": "2026-05-18"
    },
    {
      "version": "1.4.1",
      "date": "2026-05-23"
    }
  ],
  "_exports": [
    "animated_methods",
    "as_assignment_matrix",
    "as_matchit",
    "assignment",
    "assignment_duals",
    "augment",
    "bal.tab.cem_result",
    "bal.tab.full_matching_result",
    "bal.tab.matching_result",
    "bal.tab.subclass_result",
    "balance_diagnostics",
    "balance_table",
    "bottleneck_assignment",
    "cardinality_match",
    "cem_match",
    "compute_distances",
    "diagnose_distance_matrix",
    "example_costs",
    "example_df",
    "full_match",
    "get_method_used",
    "get_total_cost",
    "greedy_couples",
    "group_by",
    "is_distance_object",
    "is_lap_solve_batch_result",
    "is_lap_solve_kbest_result",
    "is_lap_solve_result",
    "join_matched",
    "lap_animate",
    "lap_solve",
    "lap_solve_batch",
    "lap_solve_kbest",
    "lap_solve_line_metric",
    "match_couples",
    "match_data",
    "matchmaker",
    "pixel_morph",
    "pixel_morph_animate",
    "preprocess_matching_vars",
    "ps_match",
    "sensitivity_analysis",
    "sinkhorn",
    "sinkhorn_to_assignment",
    "subclass_match",
    "update_constraints"
  ],
  "_datasets": [
    {
      "name": "hospital_staff",
      "title": "Hospital staff scheduling example dataset",
      "object": "hospital_staff",
      "class": [
        "list"
      ],
      "fields": [],
      "table": false,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "animated_methods",
      "title": "List methods that currently support animation",
      "topics": [
        "animated_methods"
      ]
    },
    {
      "page": "as_assignment_matrix",
      "title": "Convert assignment result to a binary matrix",
      "topics": [
        "as_assignment_matrix"
      ]
    },
    {
      "page": "as_matchit",
      "title": "Convert couplr Result to matchit Object",
      "topics": [
        "as_matchit"
      ]
    },
    {
      "page": "assignment",
      "title": "Linear assignment solver",
      "topics": [
        "assignment"
      ]
    },
    {
      "page": "assignment_duals",
      "title": "Solve assignment problem and return dual variables",
      "topics": [
        "assignment_duals"
      ]
    },
    {
      "page": "augment",
      "title": "Generic Augment Function",
      "topics": [
        "augment"
      ]
    },
    {
      "page": "augment.matching_result",
      "title": "Augment Matching Results with Original Data (broom-style)",
      "topics": [
        "augment.matching_result"
      ]
    },
    {
      "page": "autoplot.balance_diagnostics",
      "title": "ggplot2 autoplot for balance diagnostics",
      "topics": [
        "autoplot.balance_diagnostics"
      ]
    },
    {
      "page": "autoplot.matching_result",
      "title": "ggplot2 autoplot for matching results",
      "topics": [
        "autoplot.matching_result"
      ]
    },
    {
      "page": "autoplot.sensitivity_analysis",
      "title": "ggplot2 autoplot for sensitivity analysis",
      "topics": [
        "autoplot.sensitivity_analysis"
      ]
    },
    {
      "page": "bal.tab.matching_result",
      "title": "Balance Table for Matching Results (cobalt integration)",
      "topics": [
        "bal.tab.cem_result",
        "bal.tab.full_matching_result",
        "bal.tab.matching_result",
        "bal.tab.subclass_result"
      ]
    },
    {
      "page": "balance_diagnostics",
      "title": "Balance Diagnostics for Matched Pairs",
      "topics": [
        "balance_diagnostics",
        "balance_diagnostics.cem_result",
        "balance_diagnostics.full_matching_result",
        "balance_diagnostics.matching_result",
        "balance_diagnostics.subclass_result"
      ]
    },
    {
      "page": "balance_table",
      "title": "Create Balance Table",
      "topics": [
        "balance_table"
      ]
    },
    {
      "page": "bottleneck_assignment",
      "title": "Solve the Bottleneck Assignment Problem",
      "topics": [
        "bottleneck_assignment"
      ]
    },
    {
      "page": "cardinality_match",
      "title": "Cardinality Matching",
      "topics": [
        "cardinality_match"
      ]
    },
    {
      "page": "cem_match",
      "title": "Coarsened Exact Matching",
      "topics": [
        "cem_match"
      ]
    },
    {
      "page": "compute_distances",
      "title": "Compute and Cache Distance Matrix for Reuse",
      "topics": [
        "compute_distances"
      ]
    },
    {
      "page": "diagnose_distance_matrix",
      "title": "Diagnose distance matrix and suggest fixes",
      "topics": [
        "diagnose_distance_matrix"
      ]
    },
    {
      "page": "example_costs",
      "title": "Example cost matrices for assignment problems",
      "topics": [
        "example_costs"
      ]
    },
    {
      "page": "example_df",
      "title": "Example assignment problem data frame",
      "topics": [
        "example_df"
      ]
    },
    {
      "page": "full_match",
      "title": "Full Matching",
      "topics": [
        "full_match"
      ]
    },
    {
      "page": "get_method_used",
      "title": "Extract method used from assignment result",
      "topics": [
        "get_method_used"
      ]
    },
    {
      "page": "get_total_cost",
      "title": "Extract total cost from assignment result",
      "topics": [
        "get_total_cost"
      ]
    },
    {
      "page": "greedy_couples",
      "title": "Fast approximate matching using greedy algorithm",
      "topics": [
        "greedy_couples"
      ]
    },
    {
      "page": "hospital_staff",
      "title": "Hospital staff scheduling example dataset",
      "topics": [
        "hospital_staff"
      ]
    },
    {
      "page": "is_distance_object",
      "title": "Check if Object is a Distance Object",
      "topics": [
        "is_distance_object"
      ]
    },
    {
      "page": "is_lap_solve_batch_result",
      "title": "Check if object is a batch assignment result",
      "topics": [
        "is_lap_solve_batch_result"
      ]
    },
    {
      "page": "is_lap_solve_kbest_result",
      "title": "Check if object is a k-best assignment result",
      "topics": [
        "is_lap_solve_kbest_result"
      ]
    },
    {
      "page": "is_lap_solve_result",
      "title": "Check if object is an assignment result",
      "topics": [
        "is_lap_solve_result"
      ]
    },
    {
      "page": "join_matched",
      "title": "Join Matched Pairs with Original Data",
      "topics": [
        "join_matched",
        "join_matched.cem_result",
        "join_matched.full_matching_result",
        "join_matched.matching_result",
        "join_matched.subclass_result"
      ]
    },
    {
      "page": "lap_animate",
      "title": "Animate an assignment algorithm step-by-step",
      "topics": [
        "lap_animate"
      ]
    },
    {
      "page": "lap_solve",
      "title": "Solve linear assignment problems",
      "topics": [
        "lap_solve"
      ]
    },
    {
      "page": "lap_solve_batch",
      "title": "Solve multiple assignment problems efficiently",
      "topics": [
        "lap_solve_batch"
      ]
    },
    {
      "page": "lap_solve_kbest",
      "title": "Find k-best optimal assignments",
      "topics": [
        "lap_solve_kbest"
      ]
    },
    {
      "page": "lap_solve_line_metric",
      "title": "Solve 1-D Line Assignment Problem",
      "topics": [
        "lap_solve_line_metric"
      ]
    },
    {
      "page": "match_couples",
      "title": "Optimal matching using linear assignment",
      "topics": [
        "match_couples"
      ]
    },
    {
      "page": "match_data",
      "title": "Extract Analysis-Ready Data from Matching Results",
      "topics": [
        "match_data",
        "match_data.cem_result",
        "match_data.full_matching_result",
        "match_data.matching_result",
        "match_data.subclass_result"
      ]
    },
    {
      "page": "matchmaker",
      "title": "Create blocks for stratified matching",
      "topics": [
        "matchmaker"
      ]
    },
    {
      "page": "pixel_morph",
      "title": "Pixel-level image morphing (final frame only)",
      "topics": [
        "pixel_morph"
      ]
    },
    {
      "page": "pixel_morph_animate",
      "title": "Pixel-level image morphing (animation)",
      "topics": [
        "pixel_morph_animate"
      ]
    },
    {
      "page": "plot.balance_diagnostics",
      "title": "Plot method for balance diagnostics",
      "topics": [
        "plot.balance_diagnostics"
      ]
    },
    {
      "page": "plot.matching_result",
      "title": "Plot method for matching results",
      "topics": [
        "plot.matching_result"
      ]
    },
    {
      "page": "plot.sensitivity_analysis",
      "title": "Plot method for sensitivity analysis (base graphics)",
      "topics": [
        "plot.sensitivity_analysis"
      ]
    },
    {
      "page": "preprocess_matching_vars",
      "title": "Preprocess matching variables with automatic checks and scaling",
      "topics": [
        "preprocess_matching_vars"
      ]
    },
    {
      "page": "print.balance_diagnostics",
      "title": "Print Method for Balance Diagnostics",
      "topics": [
        "print.balance_diagnostics"
      ]
    },
    {
      "page": "print.cem_result",
      "title": "Print Method for CEM Results",
      "topics": [
        "print.cem_result"
      ]
    },
    {
      "page": "print.distance_object",
      "title": "Print Method for Distance Objects",
      "topics": [
        "print.distance_object"
      ]
    },
    {
      "page": "print.full_matching_result",
      "title": "Print Method for Full Matching Results",
      "topics": [
        "print.full_matching_result"
      ]
    },
    {
      "page": "print.lap_solve_batch_result",
      "title": "Print method for batch assignment results",
      "topics": [
        "print.lap_solve_batch_result"
      ]
    },
    {
      "page": "print.lap_solve_kbest_result",
      "title": "Print method for k-best assignment results",
      "topics": [
        "print.lap_solve_kbest_result"
      ]
    },
    {
      "page": "print.lap_solve_result",
      "title": "Print method for assignment results",
      "topics": [
        "print.lap_solve_result"
      ]
    },
    {
      "page": "print.matching_result",
      "title": "Print method for matching results",
      "topics": [
        "print.matching_result"
      ]
    },
    {
      "page": "print.matchmaker_result",
      "title": "Print method for matchmaker results",
      "topics": [
        "print.matchmaker_result"
      ]
    },
    {
      "page": "print.preprocessing_result",
      "title": "Print method for preprocessing result",
      "topics": [
        "print.preprocessing_result"
      ]
    },
    {
      "page": "print.sensitivity_analysis",
      "title": "Print method for sensitivity analysis",
      "topics": [
        "print.sensitivity_analysis"
      ]
    },
    {
      "page": "print.subclass_result",
      "title": "Print Method for Subclassification Results",
      "topics": [
        "print.subclass_result"
      ]
    },
    {
      "page": "print.variable_health",
      "title": "Print method for variable health",
      "topics": [
        "print.variable_health"
      ]
    },
    {
      "page": "ps_match",
      "title": "Propensity Score Matching",
      "topics": [
        "ps_match"
      ]
    },
    {
      "page": "sensitivity_analysis",
      "title": "Rosenbaum Sensitivity Analysis",
      "topics": [
        "sensitivity_analysis"
      ]
    },
    {
      "page": "sinkhorn",
      "title": "'Sinkhorn-Knopp' optimal transport solver",
      "topics": [
        "sinkhorn"
      ]
    },
    {
      "page": "sinkhorn_to_assignment",
      "title": "Round 'Sinkhorn' transport plan to hard assignment",
      "topics": [
        "sinkhorn_to_assignment"
      ]
    },
    {
      "page": "subclass_match",
      "title": "Subclassification on Propensity Score",
      "topics": [
        "subclass_match"
      ]
    },
    {
      "page": "summary.balance_diagnostics",
      "title": "Summary method for balance diagnostics",
      "topics": [
        "summary.balance_diagnostics"
      ]
    },
    {
      "page": "summary.distance_object",
      "title": "Summary Method for Distance Objects",
      "topics": [
        "summary.distance_object"
      ]
    },
    {
      "page": "summary.lap_solve_kbest_result",
      "title": "Get summary of k-best results",
      "topics": [
        "summary.lap_solve_kbest_result"
      ]
    },
    {
      "page": "summary.matching_result",
      "title": "Summary method for matching results",
      "topics": [
        "summary.matching_result"
      ]
    },
    {
      "page": "summary.sensitivity_analysis",
      "title": "Summary method for sensitivity analysis",
      "topics": [
        "summary.sensitivity_analysis"
      ]
    },
    {
      "page": "update_constraints",
      "title": "Update Constraints on Distance Object",
      "topics": [
        "update_constraints"
      ]
    }
  ],
  "_readme": "https://github.com/gcol33/couplr/raw/HEAD/README.md",
  "_rundeps": [
    "base64enc",
    "brio",
    "bslib",
    "cachem",
    "callr",
    "cli",
    "crayon",
    "desc",
    "diffobj",
    "digest",
    "dplyr",
    "evaluate",
    "fastmap",
    "fontawesome",
    "fs",
    "generics",
    "glue",
    "highr",
    "htmltools",
    "htmlwidgets",
    "jquerylib",
    "jsonlite",
    "knitr",
    "lifecycle",
    "magrittr",
    "memoise",
    "mime",
    "pillar",
    "pkgbuild",
    "pkgconfig",
    "pkgload",
    "praise",
    "processx",
    "ps",
    "purrr",
    "R6",
    "rappdirs",
    "Rcpp",
    "RcppEigen",
    "rlang",
    "rmarkdown",
    "rprojroot",
    "sass",
    "testthat",
    "tibble",
    "tidyselect",
    "tinytex",
    "utf8",
    "vctrs",
    "waldo",
    "withr",
    "xfun",
    "yaml"
  ],
  "_sysdeps": [
    {
      "shlib": "libstdc++",
      "package": "libstdc++6",
      "source": "gcc",
      "version": "14.2.0-4ubuntu2~24.04.1",
      "name": "c++",
      "homepage": "http://gcc.gnu.org/",
      "description": "GNU Standard C++ Library v3"
    }
  ],
  "_vignettes": [
    {
      "source": "pixel-morphing.Rmd",
      "filename": "pixel-morphing.html",
      "title": "Advanced Topics",
      "author": "Gilles Colling",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Who This Vignette Is For",
        "Documentation Roadmap",
        "Why Pixels?",
        "Scientific Applications at a Glance",
        "The General Matching Problem",
        "Problem Formulation",
        "Computational Challenge",
        "Visual Illustration: Pixel Morphing",
        "Exact Pixel Matching",
        "Feature Quantization Morph (Strategy 1)",
        "Hierarchical Morph (Strategy 2)",
        "Three Approximation Strategies",
        "Strategy 1: Feature Quantization",
        "Mathematical Formulation",
        "Complexity Reduction",
        "Quality Trade-offs",
        "Strategy 2: Hierarchical Decomposition",
        "Complexity (Sketch)",
        "High-Level Algorithm",
        "Strategy 3: Resolution Reduction",
        "Complexity",
        "Strategy Comparison",
        "Implementation Details of Exact Pixel Matching",
        "Application to Scientific Domains",
        "Ecology: Vegetation Plot Matching",
        "Physics: Particle Tracking",
        "Chemistry: Molecular Conformation Alignment",
        "Implementation Notes",
        "Customizing Morph Duration",
        "Using the Example Code",
        "Regenerating Examples",
        "Mathematical Foundation: Optimal Transport",
        "Monge Problem",
        "Kantorovich Relaxation",
        "Discrete Linear Assignment",
        "Wasserstein Distance",
        "Further Reading",
        "Optimal Transport Theory",
        "Scientific Applications",
        "Assignment Algorithms",
        "Connection to couplr Workflows",
        "When Do These Strategies Apply?",
        "Practical Recommendations",
        "Limitations of Approximation Strategies",
        "Summary",
        "See Also"
      ],
      "created": "2025-11-15 23:00:33",
      "modified": "2026-01-21 07:35:52",
      "commits": 8
    },
    {
      "source": "comparison.Rmd",
      "filename": "comparison.html",
      "title": "Comparison with Alternatives",
      "author": "Gilles Colling",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Evaluation Dataset",
        "Comparison 1: MatchIt",
        "MatchIt Approach",
        "couplr Approach",
        "Balance Comparison",
        "Key Differences",
        "When to Use Each",
        "Comparison 2: optmatch",
        "optmatch Approach",
        "Performance Comparison",
        "Comparison 3: designmatch",
        "designmatch Approach",
        "Comparison 4: Matching Package",
        "Matching Package Approach",
        "Runtime Scaling",
        "Memory Usage",
        "Feature Comparison Summary",
        "Decision Guide",
        "Choose couplr when:",
        "Choose MatchIt when:",
        "Choose optmatch when:",
        "Choose designmatch when:",
        "Workflow Integration",
        "Sequential Pipeline",
        "Complementary Use",
        "Real-World Case Study: Job Training Evaluation",
        "Background",
        "Simulating Lalonde-Style Data",
        "Challenge: Large Control Pool",
        "Balance Assessment",
        "Interpretation",
        "Key Takeaways",
        "References",
        "See Also"
      ],
      "created": "2026-01-07 19:43:31",
      "modified": "2026-03-04 11:55:58",
      "commits": 10
    },
    {
      "source": "matching-workflows.Rmd",
      "filename": "matching-workflows.html",
      "title": "Matching Workflows",
      "author": "Gilles Colling",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Who This Vignette Is For",
        "Documentation Roadmap",
        "The Running Example: Job Training Evaluation",
        "Key Features",
        "Problem Definition",
        "The Matching Problem",
        "Why Matching Matters",
        "Distance Metrics",
        "Basic Usage",
        "Creating a Matched Sample",
        "Understanding the Output",
        "Automatic Preprocessing",
        "Why Preprocessing Matters",
        "Smart Scaling with auto_scale = TRUE",
        "Scaling Methods",
        "Health Checks and Warnings",
        "Optimal vs Greedy Matching",
        "When to Use Each Approach",
        "Greedy Strategies",
        "Caliper Constraints",
        "Why Use Calipers",
        "Choosing Caliper Width",
        "Blocking and Stratification",
        "Why Use Blocking",
        "Exact Blocking with matchmaker()",
        "Cluster-Based Blocking",
        "Balance Diagnostics",
        "Key Balance Metrics",
        "How to Interpret Balance Results",
        "Visualizing Balance",
        "Real-World Example: Treatment Effect Estimation",
        "Scenario",
        "Step 1: Data Preparation",
        "Step 2: Perform Matching",
        "Step 3: Assess Balance",
        "Step 4: Estimate Treatment Effect",
        "Step 5: Publication-Ready Output",
        "Performance Considerations",
        "Scalability",
        "Memory Usage",
        "Optimization Tips",
        "What Can Go Wrong",
        "Problem: Poor Balance Despite Matching",
        "Problem: Very Few Matches",
        "Problem: Matching Takes Too Long",
        "Problem: Memory Error",
        "Summary",
        "Advanced Matching Techniques",
        "Full Matching (Variable-Ratio Groups)",
        "Ratio Matching (k:1)",
        "With-Replacement Matching",
        "Propensity Score Matching",
        "Cardinality Matching",
        "Coarsened Exact Matching (CEM)",
        "Subclassification",
        "Ecosystem Integration",
        "Sensitivity Analysis",
        "Visualizing Results with autoplot",
        "See Also"
      ],
      "created": "2025-11-20 09:30:27",
      "modified": "2026-03-09 18:32:27",
      "commits": 20
    },
    {
      "source": "getting-started.Rmd",
      "filename": "getting-started.html",
      "title": "Quick Start",
      "author": "Gilles Colling",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What couplr Does",
        "Documentation Roadmap",
        "Your First Match",
        "Understanding the Output",
        "Why Scaling Matters",
        "Checking Match Quality",
        "Visualizing Match Quality",
        "Large Datasets: Use Greedy Matching",
        "Setting a Maximum Distance (Caliper)",
        "Matching Within Groups (Blocking)",
        "Full Matching: Keep Every Unit",
        "Other Matching Methods",
        "Complete Example",
        "Next Steps",
        "Additional: Direct Assignment Problem Solving",
        "lap_solve(): Matrix-Based Assignment",
        "Forbidden Assignments",
        "Maximization",
        "Grouped Data",
        "K-Best Solutions",
        "See Also"
      ],
      "created": "2025-11-07 13:31:35",
      "modified": "2026-03-04 11:55:58",
      "commits": 17
    },
    {
      "source": "algorithms.Rmd",
      "filename": "algorithms.html",
      "title": "The Algorithm Collection",
      "author": "Gilles Colling",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Who This Vignette Is For",
        "The Race",
        "Watch It Run",
        "Hungarian on a 30x30",
        "Auction on a 30x30",
        "Gabow-Tarjan bit-scaling on a 30x30",
        "Jonker-Volgenant pre-stages on a 30x30",
        "The Problem",
        "The LP Formulation",
        "Duality: The Key to Efficiency",
        "The Classics",
        "Hungarian Algorithm (1955)",
        "Jonker-Volgenant Algorithm (1987)",
        "The Scaling Revolution",
        "Auction Algorithm (1988)",
        "Cost-Scaling Algorithm / CSA (1995)",
        "Gabow-Tarjan Algorithm (1989)",
        "Orlin-Ahuja Algorithm (1992)",
        "The Network View",
        "Network Simplex",
        "Push-Relabel Algorithm",
        "The Specialists",
        "HK01: Binary Costs",
        "SAP and LAPMOD: Sparse Problems",
        "Ramshaw-Tarjan: Rectangular Problems (2012)",
        "Beyond Standard Assignment",
        "K-Best Solutions (Murty's Algorithm)",
        "Bottleneck Assignment",
        "Sinkhorn: Soft Assignment",
        "Dual Variables",
        "The Benchmark",
        "Quick Reference",
        "References"
      ],
      "created": "2025-11-15 23:00:33",
      "modified": "2026-05-19 00:17:41",
      "commits": 43
    },
    {
      "source": "troubleshooting.Rmd",
      "filename": "troubleshooting.html",
      "title": "Troubleshooting Guide",
      "author": "Gilles Colling",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Overview",
        "Infeasible Problems",
        "Symptom",
        "Cause",
        "Diagnosis",
        "Solutions",
        "Poor Balance Despite Matching",
        "Causes",
        "Performance Issues",
        "Memory Errors",
        "Different Results with Different Methods",
        "Missing Values in Data",
        "Installation Issues",
        "C++ Compilation Errors",
        "Common Error Messages",
        "\"method_used attribute is NULL\"",
        "\"Cost matrix contains non-finite values\"",
        "\"All rows assigned to Inf columns\"",
        "\"subscript out of bounds\"",
        "Getting Help",
        "See Also"
      ],
      "created": "2026-01-07 19:43:31",
      "modified": "2026-03-03 09:44:29",
      "commits": 6
    }
  ],
  "_score": 6.199755177253475,
  "_indexed": true,
  "_nocasepkg": "couplr",
  "_universes": [
    "gcol33"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.4.1",
      "date": "2026-05-29T23:19:16.000Z",
      "distro": "noble",
      "arch": "aarch64",
      "commit": "bd4a14367eefdea77b874cc8bb83473191809580",
      "fileid": "86b2db280fdc71f04a2c3448d57369e614be39ddf7a749bcd90e114a958017eb",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.4.1",
      "date": "2026-05-29T23:18:53.000Z",
      "distro": "noble",
      "arch": "x86_64",
      "commit": "bd4a14367eefdea77b874cc8bb83473191809580",
      "fileid": "0c7867e35eb5694e96235619b9015141c247ad337cc76bb2ad7e27bc54db711a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.4.1",
      "date": "2026-05-29T23:19:21.000Z",
      "distro": "noble",
      "arch": "aarch64",
      "commit": "bd4a14367eefdea77b874cc8bb83473191809580",
      "fileid": "d85ad98fc553dafad26974e5ffc7badc7ca383f7e74eb7e97232d65ae533e680",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.4.1",
      "date": "2026-05-29T23:18:54.000Z",
      "distro": "noble",
      "arch": "x86_64",
      "commit": "bd4a14367eefdea77b874cc8bb83473191809580",
      "fileid": "d5c4d02936e36b955360789c7d5ba8c7ddb2efef83fdb5912b328f0af3e3c596",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.4.1",
      "date": "2026-05-29T23:17:36.000Z",
      "arch": "aarch64",
      "commit": "bd4a14367eefdea77b874cc8bb83473191809580",
      "fileid": "9b11b3dc52227ea9090632f160e3ce459f43cd53de37e5fbf775e0fe7bbbd0b1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.4.1",
      "date": "2026-05-29T23:19:37.000Z",
      "arch": "x86_64",
      "commit": "bd4a14367eefdea77b874cc8bb83473191809580",
      "fileid": "136aeec1204b882ef648724236aace5caf8678e62bffc3c79579b3b9e42cfdab",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "1.4.1",
      "date": "2026-05-29T23:17:58.000Z",
      "arch": "aarch64",
      "commit": "bd4a14367eefdea77b874cc8bb83473191809580",
      "fileid": "9bd21d25b8b1752cf6f070a5b149a5c0d8a4380b4ecc837545af5e7399dabd2d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "1.4.1",
      "date": "2026-05-29T23:19:41.000Z",
      "arch": "x86_64",
      "commit": "bd4a14367eefdea77b874cc8bb83473191809580",
      "fileid": "ee81c715377fecb115719020e9a2f4de3cee3fb720b9b80bf23558d88b5a842d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.4.1",
      "date": "2026-05-29T23:19:00.000Z",
      "arch": "emscripten",
      "commit": "bd4a14367eefdea77b874cc8bb83473191809580",
      "fileid": "c9ecdb33bb434ef31cda8bcffc819c6412dd18467bcb719a1bbb1b6bcc938280",
      "status": "success",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.4.1",
      "date": "2026-05-29T23:17:38.000Z",
      "arch": "x86_64",
      "commit": "bd4a14367eefdea77b874cc8bb83473191809580",
      "fileid": "b6ce4204f5cedfe5dd7f1d848e1a7a8a0784ae8c43df1480cd6de9e94728ac56",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.4.1",
      "date": "2026-05-29T23:17:44.000Z",
      "arch": "x86_64",
      "commit": "bd4a14367eefdea77b874cc8bb83473191809580",
      "fileid": "9b7d09005966d11ea5d94e56a15e0dab601181d77c1eb1fae47e7327a7fa3a85",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "1.4.1",
      "date": "2026-05-29T23:17:40.000Z",
      "arch": "x86_64",
      "commit": "bd4a14367eefdea77b874cc8bb83473191809580",
      "fileid": "a6d8dedaaed04b5d732864e9e0d27c6d590ae806d0ee7eef83af1396f018aa7f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/gcol33/actions/runs/26666817397"
    }
  ]
}