{
  "_id": "6ad67d3f69e274306bae6d99",
  "Package": "janusplot",
  "Type": "Package",
  "Title": "Asymmetric Smoothed-Association Matrices via GAM Fits",
  "Version": "0.2.0",
  "Authors@R": "c(\nperson(\"Max\", \"Moldovan\", , \"max.moldovan@adelaide.edu.au\",\nrole = c(\"aut\", \"cre\", \"cph\"),\ncomment = c(ORCID = \"0000-0001-9680-8474\"))\n)",
  "Description": "Render a pairwise, asymmetric smoothed-association matrix\nof continuous variables. Each cell shows the fitted spline from\nan 'mgcv' generalised additive model, with the upper triangle\ndisplaying 'gam(x_j ~ s(x_i))' and the lower triangle 'gam(x_i\n~ s(x_j))'. Unlike Pearson's correlation matrix, the\nvisualisation is intentionally asymmetric, revealing\nheteroscedasticity, leverage, and directional non-linearity\nthat a single scalar correlation hides. An asymmetry index and\na 24-category shape taxonomy quantify the directional\ndifference and qualitative form of each fitted smooth.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/max578/janusplot,\nhttps://max578.github.io/janusplot/",
  "BugReports": "https://github.com/max578/janusplot/issues",
  "Encoding": "UTF-8",
  "Language": "en-AU",
  "Remotes": [
    "max578/kernR"
  ],
  "Additional_repositories": "https://max578.r-universe.dev",
  "VignetteBuilder": "knitr",
  "Roxygen": "list(markdown = TRUE, roclets = c(\"rd\", \"namespace\",\n\"collate\"))",
  "Config/testthat/edition": "3",
  "Config/Needs/website": "pkgdown",
  "LazyData": "true",
  "Config/roxygen2/version": "8.1.0",
  "Repository": "https://max578.r-universe.dev",
  "Date/Publication": "2026-10-19 12:44:53 UTC",
  "RemoteUrl": "https://github.com/max578/janusplot",
  "RemoteRef": "main",
  "RemoteSha": "b33d3da1920e3612cd1660f7e67b2fc8f6315230",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-19 20:17:04 UTC",
    "User": "root"
  },
  "Author": "Max Moldovan [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0001-9680-8474>)",
  "Maintainer": "Max Moldovan <max.moldovan@adelaide.edu.au>",
  "_user": "max578",
  "_type": "src",
  "_file": "janusplot_0.2.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/27a9cb89cf85d4b47ffe6b10aefab9b10a968918b8f8e5b0f8ee8a7074092544",
  "_filesize": 5210160,
  "_sha256": "27a9cb89cf85d4b47ffe6b10aefab9b10a968918b8f8e5b0f8ee8a7074092544",
  "_expires": "2027-01-27T20:27:41.000Z",
  "_created": "2026-10-19T20:17:04.000Z",
  "_published": "2026-10-19T20:27:43.424Z",
  "_upstream": "https://github.com/max578/janusplot",
  "_status": "success",
  "_maintainer": {
    "name": "Max Moldovan",
    "email": "max.moldovan@adelaide.edu.au",
    "orcid": "0000-0001-9680-8474"
  },
  "_jobs": [
    {
      "job": 118284613932,
      "time": 164,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12218392595"
    },
    {
      "job": 118284613982,
      "time": 202,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12219446891"
    },
    {
      "job": 118284614038,
      "time": 128,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12219403311"
    },
    {
      "job": 118284614230,
      "time": 136,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12218742737"
    },
    {
      "job": 118280460707,
      "time": 514,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12218073904"
    },
    {
      "job": 118284614059,
      "time": 157,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12219122814"
    },
    {
      "job": 118284614117,
      "time": 126,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12219282290"
    },
    {
      "job": 118284614406,
      "time": 121,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12218788255"
    },
    {
      "job": 118284614108,
      "time": 140,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12218703257"
    }
  ],
  "_buildurl": "https://github.com/r-universe/max578/actions/runs/39316816008",
  "_commit": {
    "id": "b33d3da1920e3612cd1660f7e67b2fc8f6315230",
    "author": "Max Moldovan <max.moldovan@gmail.com>",
    "committer": "Max Moldovan <max.moldovan@gmail.com>",
    "message": "fix(ci): restore Remotes for kernR beside Additional_repositories\n\npak resolves the non-CRAN suggestion through Remotes only; without it every\nworkflow failed at dependency installation.\n",
    "time": 1792413893
  },
  "_distro": "resolute",
  "_host": "GitHub-Actions",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.3.0",
      "role": "Depends"
    },
    {
      "package": "mgcv",
      "version": ">= 1.9.0",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "version": ">= 3.5.0",
      "role": "Imports"
    },
    {
      "package": "patchwork",
      "version": ">= 1.1.0",
      "role": "Imports"
    },
    {
      "package": "grid",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "cli",
      "version": ">= 3.6.0",
      "role": "Imports"
    },
    {
      "package": "lifecycle",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "version": ">= 1.1.0",
      "role": "Imports"
    },
    {
      "package": "agridat",
      "role": "Suggests"
    },
    {
      "package": "future",
      "role": "Suggests"
    },
    {
      "package": "future.apply",
      "role": "Suggests"
    },
    {
      "package": "kernR",
      "version": ">= 0.8.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "MASS",
      "role": "Suggests"
    },
    {
      "package": "palmerpenguins",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "vdiffr",
      "version": ">= 1.0.0",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    }
  ],
  "_owner": "max578",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-17",
      "n": 14
    },
    {
      "week": "2026-21",
      "n": 13
    },
    {
      "week": "2026-26",
      "n": 6
    },
    {
      "week": "2026-27",
      "n": 3
    },
    {
      "week": "2026-35",
      "n": 4
    },
    {
      "week": "2026-36",
      "n": 1
    },
    {
      "week": "2026-37",
      "n": 4
    },
    {
      "week": "2026-38",
      "n": 1
    },
    {
      "week": "2026-39",
      "n": 1
    },
    {
      "week": "2026-42",
      "n": 8
    },
    {
      "week": "2026-43",
      "n": 2
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2026-04-23"
    },
    {
      "name": "v0.1.1",
      "date": "2026-06-26"
    },
    {
      "name": "v0.2.0",
      "date": "2026-10-19"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "max578",
      "count": 59,
      "uuid": 35710829
    }
  ],
  "_userbio": {
    "uuid": 35710829,
    "type": "user",
    "name": "Max Moldovan",
    "followers": 2,
    "description": "Research scientist, R&D translation professional, woking on practical impact applications in agriculture, healthcare/madicine and good-practices-AI education."
  },
  "_downloads": {
    "count": 385,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/janusplot"
  },
  "_devurl": "https://github.com/max578/janusplot",
  "_pkgdown": "https://max578.github.io/janusplot/",
  "_searchresults": 0,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/janusplot.html",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/max578/janusplot",
  "_realowner": "max578",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.0",
      "date": "2026-04-28"
    },
    {
      "version": "0.1.1",
      "date": "2026-07-02"
    }
  ],
  "_exports": [
    "janusplot",
    "janusplot_data",
    "janusplot_direction_test",
    "janusplot_shape_cutoffs",
    "janusplot_shape_hierarchy",
    "janusplot_shape_metrics",
    "janusplot_shape_sensitivity",
    "janusplot_shape_sensitivity_plot",
    "janusplot_shape_sensitivity_shapes",
    "janusplot_shape_sensitivity_summary"
  ],
  "_datasets": [
    {
      "name": "shape_sensitivity_demo",
      "title": "Precomputed shape-recognition sensitivity results (demo)",
      "object": "shape_sensitivity_demo",
      "class": [
        "data.frame"
      ],
      "fields": [
        "truth",
        "n",
        "sigma",
        "seed",
        "predicted",
        "correct",
        "archetype_truth",
        "archetype_pred",
        "archetype_correct",
        "monotonicity_index",
        "convexity_index",
        "n_turn",
        "n_inflect",
        "error"
      ],
      "rows": 2160,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "janusplot",
      "title": "Asymmetric smoothed-association matrix",
      "concept": [
        "smooth-associations"
      ],
      "topics": [
        "janusplot"
      ]
    },
    {
      "page": "janusplot_data",
      "title": "Raw GAM fits and per-cell metrics for a smoothed-association matrix",
      "concept": [
        "smooth-associations"
      ],
      "topics": [
        "janusplot_data"
      ]
    },
    {
      "page": "janusplot_direction_test",
      "title": "Test whether the residual-independence condition licenses a direction",
      "topics": [
        "janusplot_direction_test"
      ]
    },
    {
      "page": "janusplot_shape_cutoffs",
      "title": "Default cutoff thresholds for 'shape_category' classification",
      "concept": [
        "shape-metrics"
      ],
      "topics": [
        "janusplot_shape_cutoffs"
      ]
    },
    {
      "page": "janusplot_shape_hierarchy",
      "title": "Shape-category taxonomy table",
      "concept": [
        "shape-metrics"
      ],
      "topics": [
        "janusplot_shape_hierarchy"
      ]
    },
    {
      "page": "janusplot_shape_metrics",
      "title": "Shape metrics for a fitted univariate smooth",
      "concept": [
        "shape-metrics"
      ],
      "topics": [
        "janusplot_shape_metrics"
      ]
    },
    {
      "page": "janusplot_shape_sensitivity",
      "title": "Shape-recognition sensitivity study",
      "concept": [
        "shape-sensitivity"
      ],
      "topics": [
        "janusplot_shape_sensitivity"
      ]
    },
    {
      "page": "janusplot_shape_sensitivity_plot",
      "title": "Visualise a shape-sensitivity sweep",
      "concept": [
        "shape-sensitivity"
      ],
      "topics": [
        "janusplot_shape_sensitivity_plot"
      ]
    },
    {
      "page": "janusplot_shape_sensitivity_shapes",
      "title": "Canonical ground-truth shapes for the sensitivity study",
      "concept": [
        "shape-sensitivity"
      ],
      "topics": [
        "janusplot_shape_sensitivity_shapes"
      ]
    },
    {
      "page": "janusplot_shape_sensitivity_summary",
      "title": "Summarise a shape-sensitivity sweep",
      "concept": [
        "shape-sensitivity"
      ],
      "topics": [
        "janusplot_shape_sensitivity_summary"
      ]
    },
    {
      "page": "shape_sensitivity_demo",
      "title": "Precomputed shape-recognition sensitivity results (demo)",
      "topics": [
        "shape_sensitivity_demo"
      ]
    }
  ],
  "_pkglogo": "https://github.com/max578/janusplot/raw/main/man/figures/logo.png",
  "_readme": "https://github.com/max578/janusplot/raw/main/README.md",
  "_rundeps": [
    "cli",
    "cpp11",
    "farver",
    "ggplot2",
    "glue",
    "gtable",
    "isoband",
    "labeling",
    "lattice",
    "lifecycle",
    "Matrix",
    "mgcv",
    "nlme",
    "patchwork",
    "R6",
    "RColorBrewer",
    "rlang",
    "S7",
    "scales",
    "vctrs",
    "viridisLite",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "janusplot.Rmd",
      "filename": "janusplot.html",
      "title": "Asymmetric Smoothed-Association Matrices",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Why Pearson is not enough",
        "Quick start",
        "Non-linear detection",
        "Asymmetry -- a heteroscedastic example",
        "Partial smooths (controlling for covariates)",
        "Changing the palette",
        "Handling missing data",
        "Scaling up -- order = \"hclust\"",
        "Programmatic access -- janusplot_data()",
        "Shape metrics explained",
        "Derivative views: theoretical justification and applied use",
        "What derivatives reveal that the fit hides",
        "Estimation -- the LP matrix",
        "Noise amplification and why we cap at $k = 2$",
        "Applied use: gain estimation and dose--response",
        "References cited in this section",
        "Limitations",
        "Citation"
      ],
      "created": "2026-04-21 13:21:13",
      "modified": "2026-08-25 09:10:52",
      "commits": 5
    },
    {
      "source": "shape-recognition-sensitivity.Rmd",
      "filename": "shape-recognition-sensitivity.html",
      "title": "Shape-recognition sensitivity study",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Design",
        "Pre-registered hypotheses",
        "Precomputed demo",
        "Recovery curves (headline figure)",
        "Archetype confusion",
        "Archetype-level accuracy grid",
        "Numerical summary",
        "Running your own sweep",
        "Custom shape subsets + cutoffs",
        "References"
      ],
      "created": "2026-04-21 13:21:13",
      "modified": "2026-08-25 09:10:52",
      "commits": 3
    }
  ],
  "_score": 5.041392685158225,
  "_indexed": true,
  "_nocasepkg": "janusplot",
  "_universes": [
    "max578"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-10-19T20:19:07.000Z",
      "distro": "resolute",
      "commit": "b33d3da1920e3612cd1660f7e67b2fc8f6315230",
      "fileid": "https://r2.ropensci.org/dc0e840b492d44e9c4264f8b8d33e60cda460dc8f9cb3a158d74e2cc0417a056",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/39316816008"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-10-19T20:19:51.000Z",
      "distro": "resolute",
      "commit": "b33d3da1920e3612cd1660f7e67b2fc8f6315230",
      "fileid": "https://r2.ropensci.org/d0d37720b59d0b8f878f0b08a160c9762de39efa98fb6c9cdb246d6e1aa1b704",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/39316816008"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-10-19T20:26:28.000Z",
      "commit": "b33d3da1920e3612cd1660f7e67b2fc8f6315230",
      "fileid": "https://r2.ropensci.org/01ae8e031f571df2bdf552a476af0eeab4f070b72f9e6d40106a562ff3c0b907",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/39316816008"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-10-19T20:25:04.000Z",
      "commit": "b33d3da1920e3612cd1660f7e67b2fc8f6315230",
      "fileid": "https://r2.ropensci.org/ee7e90e7f70000caa66a897431fa305ec3fedeb05790524edd6bad94a698f0a6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/39316816008"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0",
      "date": "2026-10-19T20:20:00.000Z",
      "commit": "b33d3da1920e3612cd1660f7e67b2fc8f6315230",
      "fileid": "https://r2.ropensci.org/2c77eccb90f7e5b69a29595ed48a6a40eb2f86ac562329218dc3b3032f4d8920",
      "status": "success",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/39316816008"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-10-19T20:18:19.000Z",
      "commit": "b33d3da1920e3612cd1660f7e67b2fc8f6315230",
      "fileid": "https://r2.ropensci.org/5b752e44a2d868d8c3b9078f27a5d8a638e3712536e711c1886982e933a63bdf",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/39316816008"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-10-19T20:18:19.000Z",
      "commit": "b33d3da1920e3612cd1660f7e67b2fc8f6315230",
      "fileid": "https://r2.ropensci.org/4e723ac98657e71a54636487f0b7b16cfcfcd7ff6839068f7baca99b5c5a8535",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/39316816008"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-10-19T20:18:33.000Z",
      "commit": "b33d3da1920e3612cd1660f7e67b2fc8f6315230",
      "fileid": "https://r2.ropensci.org/99f922a9c085b5d9dbff5802939233040d5e3174bcc87449a8d9ad674c20bb2c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/max578/actions/runs/39316816008"
    }
  ]
}