{
  "_id": "6ad4a8c07774b2311ffead4d",
  "Package": "splitGraph",
  "Title": "Dataset Dependency Graphs for Leakage-Aware Evaluation",
  "Version": "0.4.0",
  "Authors@R": "c(\nperson(\"Selcuk\", \"Korkmaz\", role = c(\"aut\",\"cre\"), email = \"selcukorkmaz@gmail.com\",\ncomment = c(ORCID = \"0000-0003-4632-6850\"))\n)",
  "Description": "Represent biomedical dataset structure as typed dependency\ngraphs so that sample provenance, repeated-measure structure,\nstudy design, batch effects, and temporal relationships are\nexplicit and inspectable. Validates dataset structure, detects\nsample-level overlap, derives deterministic split constraints,\nand produces a tool-agnostic split specification for\nleakage-aware evaluation workflows.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/selcukorkmaz/splitGraph",
  "BugReports": "https://github.com/selcukorkmaz/splitGraph/issues",
  "Encoding": "UTF-8",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Config/Needs/website": "selcukorkmaz/leakdown",
  "NeedsCompilation": "no",
  "RoxygenNote": "7.3.3",
  "Config/pak/sysreqs": "libglpk-dev libxml2-dev",
  "Repository": "https://selcukorkmaz.r-universe.dev",
  "Date/Publication": "2026-09-18 07:23:42 UTC",
  "RemoteUrl": "https://github.com/selcukorkmaz/splitgraph",
  "RemoteRef": "HEAD",
  "RemoteSha": "c12682e3ee9ea3e1c8f070bedcc588286649c530",
  "Packaged": {
    "Date": "2026-10-18 11:04:36 UTC",
    "User": "root"
  },
  "Author": "Selcuk Korkmaz [aut, cre] (ORCID:\n<https://orcid.org/0000-0003-4632-6850>)",
  "Maintainer": "Selcuk Korkmaz <selcukorkmaz@gmail.com>",
  "_user": "selcukorkmaz",
  "_type": "src",
  "_file": "splitGraph_0.4.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/7abb5eb5f596fac5ccf123e6dfff4b99a980c95578afebe725801f480513c588",
  "_filesize": 1127647,
  "_sha256": "7abb5eb5f596fac5ccf123e6dfff4b99a980c95578afebe725801f480513c588",
  "_expires": "2027-01-26T11:08:46.000Z",
  "_created": "2026-10-18T11:04:36.000Z",
  "_published": "2026-10-18T11:08:48.682Z",
  "_buildurl": "https://github.com/r-universe/selcukorkmaz/actions/runs/39121531356",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 117658714944,
      "time": 163,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "12135080607"
    },
    {
      "job": 117658714887,
      "time": 208,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "12134731071"
    },
    {
      "job": 117658714826,
      "time": 139,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "12134781713"
    },
    {
      "job": 117658714763,
      "time": 119,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "12134189566"
    },
    {
      "job": 117657993798,
      "time": 217,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12134720740"
    },
    {
      "job": 117658714781,
      "time": 107,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12134866306"
    },
    {
      "job": 117658714864,
      "time": 113,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "12134641844"
    },
    {
      "job": 117658714754,
      "time": 112,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "12134916090"
    },
    {
      "job": 117658714794,
      "time": 114,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "ERROR",
      "artifact": "12134088031"
    }
  ],
  "_upstream": "https://github.com/selcukorkmaz/splitgraph",
  "_commit": {
    "id": "c12682e3ee9ea3e1c8f070bedcc588286649c530",
    "author": "Selcuk Korkmaz <selcukorkmaz@hotmail.com>",
    "committer": "GitHub <noreply@github.com>",
    "message": "Merge pull request #2 from selcukorkmaz/release/0.4.0\n\nRelease/0.4.0",
    "time": 1789716222
  },
  "_maintainer": {
    "name": "Selcuk Korkmaz",
    "email": "selcukorkmaz@gmail.com",
    "login": "selcukorkmaz",
    "twitter": "@selcukorkmaz",
    "description": "I am an associate professor in the Department of Biostatistics. ",
    "uuid": 6230704,
    "orcid": "0000-0003-4632-6850"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "graphics",
      "role": "Imports"
    },
    {
      "package": "igraph",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "bioLeak",
      "role": "Suggests"
    },
    {
      "package": "jsonlite",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "pkgload",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "rsample",
      "role": "Suggests"
    },
    {
      "package": "SummarizedExperiment",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "selcukorkmaz",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-12",
      "n": 2
    },
    {
      "week": "2026-16",
      "n": 1
    },
    {
      "week": "2026-18",
      "n": 3
    },
    {
      "week": "2026-24",
      "n": 1
    },
    {
      "week": "2026-27",
      "n": 6
    },
    {
      "week": "2026-28",
      "n": 3
    },
    {
      "week": "2026-38",
      "n": 1
    }
  ],
  "_tags": [],
  "_stars": 1,
  "_contributors": [
    {
      "user": "selcukorkmaz",
      "count": 39,
      "uuid": 6230704
    }
  ],
  "_userbio": {
    "uuid": 6230704,
    "type": "user",
    "name": "Selçuk Korkmaz",
    "followers": 59,
    "description": "I am an associate professor in the Department of Biostatistics. "
  },
  "_downloads": {
    "count": 541,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/splitGraph"
  },
  "_devurl": "https://github.com/selcukorkmaz/splitgraph",
  "_searchresults": 13,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/splitGraph.html",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/selcukorkmaz/splitgraph",
  "_realowner": "selcukorkmaz",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.0",
      "date": "2026-04-21"
    },
    {
      "version": "0.2.0",
      "date": "2026-04-29"
    },
    {
      "version": "0.3.0",
      "date": "2026-07-03"
    },
    {
      "version": "0.4.0",
      "date": "2026-09-17"
    }
  ],
  "_exports": [
    "add_edges",
    "as_igraph",
    "as_split_spec",
    "build_dependency_graph",
    "combine_graphs",
    "create_edges",
    "create_nodes",
    "dependency_graph",
    "depgraph_validation_report",
    "derive_split_constraints",
    "detect_dependency_components",
    "detect_shared_dependencies",
    "export_graph",
    "graph_edge_set",
    "graph_from_metadata",
    "graph_node_set",
    "graph_query_result",
    "grouping_vector",
    "ingest_metadata",
    "leakage_risk_summary",
    "migrate_dependency_graph_json",
    "migrate_split_spec_json",
    "query_edge_type",
    "query_neighbors",
    "query_node_type",
    "query_paths",
    "query_shortest_paths",
    "read_dependency_graph",
    "read_split_spec",
    "relatedness_edges_from_kinship",
    "spatial_edges_from_coords",
    "split_constraint",
    "split_spec",
    "split_spec_validation",
    "subset_graph",
    "summarize_leakage_risks",
    "validate_graph",
    "validate_graph_json",
    "validate_split_spec",
    "validate_split_spec_json",
    "write_dependency_graph",
    "write_split_spec"
  ],
  "_help": [
    {
      "page": "as_split_spec",
      "title": "Translate splitGraph Constraints into Stable Split Specifications",
      "topics": [
        "as_split_spec",
        "summarize_leakage_risks",
        "validate_split_spec"
      ]
    },
    {
      "page": "build_dependency_graph",
      "title": "Assemble and Validate Dependency Graphs",
      "topics": [
        "as_igraph",
        "build_dependency_graph",
        "validate_graph"
      ]
    },
    {
      "page": "create_nodes",
      "title": "Create Canonical Node and Edge Tables",
      "topics": [
        "create_edges",
        "create_nodes"
      ]
    },
    {
      "page": "depgraph_validation_report",
      "title": "Validation Report Object for splitGraph Graphs",
      "topics": [
        "depgraph_validation_report",
        "leakage_risk_summary",
        "split_spec",
        "split_spec_validation"
      ]
    },
    {
      "page": "derive_split_constraints",
      "title": "Derive Split Constraints from Dependency Graphs",
      "topics": [
        "derive_split_constraints",
        "grouping_vector"
      ]
    },
    {
      "page": "export_graph",
      "title": "Export a Dependency Graph for Other Tools",
      "topics": [
        "export_graph"
      ]
    },
    {
      "page": "graph_edit",
      "title": "Edit Dependency Graphs",
      "topics": [
        "add_edges",
        "combine_graphs",
        "graph_edit",
        "subset_graph"
      ]
    },
    {
      "page": "graph_from_metadata",
      "title": "Build a Dependency Graph Directly from a Metadata Table",
      "topics": [
        "graph_from_metadata",
        "graph_from_metadata.data.frame",
        "graph_from_metadata.default",
        "graph_from_metadata.SummarizedExperiment"
      ]
    },
    {
      "page": "graph_node_set",
      "title": "Construct Core splitGraph S3 Objects",
      "topics": [
        "dependency_graph",
        "graph_edge_set",
        "graph_node_set",
        "graph_query_result",
        "split_constraint"
      ]
    },
    {
      "page": "ingest_metadata",
      "title": "Standardize Sample Metadata",
      "topics": [
        "ingest_metadata"
      ]
    },
    {
      "page": "migrate_json",
      "title": "Upgrade Serialized splitGraph JSON to the Current Schema Version",
      "topics": [
        "migrate_dependency_graph_json",
        "migrate_json",
        "migrate_split_spec_json"
      ]
    },
    {
      "page": "pairwise_edges",
      "title": "Build Pairwise Leakage Edges from Continuous Similarity",
      "topics": [
        "pairwise_edges",
        "relatedness_edges_from_kinship",
        "spatial_edges_from_coords"
      ]
    },
    {
      "page": "plot.dependency_graph",
      "title": "Plot a Dependency Graph",
      "topics": [
        "plot.dependency_graph"
      ]
    },
    {
      "page": "query_node_type",
      "title": "Query Dependency Graph Structure",
      "topics": [
        "detect_dependency_components",
        "detect_shared_dependencies",
        "query_edge_type",
        "query_neighbors",
        "query_node_type",
        "query_paths",
        "query_shortest_paths"
      ]
    },
    {
      "page": "splitgraph_conditions",
      "title": "Classed Conditions Signalled by splitGraph",
      "topics": [
        "splitgraph_conditions"
      ]
    },
    {
      "page": "validate_json",
      "title": "Validate Serialized splitGraph JSON Against the Shipped Schema",
      "topics": [
        "validate_graph_json",
        "validate_json",
        "validate_split_spec_json"
      ]
    },
    {
      "page": "write_dependency_graph",
      "title": "Serialize a Dependency Graph to JSON",
      "topics": [
        "read_dependency_graph",
        "write_dependency_graph"
      ]
    },
    {
      "page": "write_split_spec",
      "title": "Serialize a Split Specification to JSON",
      "topics": [
        "read_split_spec",
        "write_split_spec"
      ]
    }
  ],
  "_readme": "https://github.com/selcukorkmaz/splitgraph/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "cpp11",
    "glue",
    "igraph",
    "lattice",
    "lifecycle",
    "magrittr",
    "Matrix",
    "pkgconfig",
    "rlang",
    "vctrs"
  ],
  "_vignettes": [
    {
      "source": "adapter-cookbook.Rmd",
      "filename": "adapter-cookbook.html",
      "title": "Adapter cookbook: from split_spec to native resamples",
      "author": "Selçuk Korkmaz",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What this vignette is for",
        "Build a split_spec to work with",
        "Adapter 1 — base R: leave-one-group-out folds",
        "Honoring block variables",
        "Honoring the stratum annotation",
        "Adapter 2 — rsample::group_vfold_cv()",
        "Adapter 3 — rsample::rolling_origin()",
        "Two things to check before trusting an ordered adapter",
        "Going across language boundaries via JSON",
        "Letting the spec pick the adapter",
        "When you need a custom adapter"
      ],
      "created": "2026-04-29 12:58:47",
      "modified": "2026-09-18 07:23:42",
      "commits": 3
    },
    {
      "source": "case-study-gse60424.Rmd",
      "filename": "case-study-gse60424.html",
      "title": "Case study: a real multi-donor, multi-cell-type cohort (GEO GSE60424)",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The data",
        "Build the graph",
        "What validation says",
        "How much would a naive split leak?",
        "Derive constraints",
        "Composite grouping and over-merging",
        "The split_spec",
        "Working with a subset",
        "Handing off"
      ],
      "created": "2026-09-18 07:23:42",
      "modified": "2026-09-18 07:23:42",
      "commits": 1
    },
    {
      "source": "cross-language-handoff.Rmd",
      "filename": "cross-language-handoff.html",
      "title": "Cross-language handoff: R to JSON to Python to scikit-learn",
      "author": "Selçuk Korkmaz",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Derive and serialize in R",
        "What is actually on disk",
        "Read in Python",
        "Versions are part of the contract",
        "Verify the round-trip",
        "Drive scikit-learn",
        "Why this matters"
      ],
      "created": "2026-07-02 19:03:02",
      "modified": "2026-09-18 07:23:42",
      "commits": 3
    },
    {
      "source": "faq-design-notes.Rmd",
      "filename": "faq-design-notes.html",
      "title": "FAQ and design notes",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Why not just call make_split_plan(group = , batch = ) directly?",
        "When does composite-strict over-merge?",
        "How do thresholds interact with transitive closure?",
        "What does the stratum column mean, and does splitGraph stratify?",
        "Schema versioning policy, in one place",
        "Can I build a graph straight from a SummarizedExperiment?",
        "Which errors can I catch programmatically?",
        "How large a cohort can splitGraph handle?"
      ],
      "created": "2026-09-18 07:23:42",
      "modified": "2026-09-18 07:23:42",
      "commits": 1
    },
    {
      "source": "modeling-structure.Rmd",
      "filename": "modeling-structure.html",
      "title": "Modeling site, platform, relatedness, and spatial structure",
      "author": "Selçuk Korkmaz",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Cluster-style relations: site, region, platform, assay",
        "Watch for a composite that collapses",
        "Pairwise relation: genetic relatedness",
        "Pairwise relation: spatial proximity",
        "Deriving on a subset is leakage-safe",
        "Combining a pairwise relation with a direct one",
        "Thresholds are inputs, not modeling"
      ],
      "created": "2026-07-02 19:35:11",
      "modified": "2026-09-18 07:23:42",
      "commits": 3
    },
    {
      "source": "quick-start.Rmd",
      "filename": "quick-start.html",
      "title": "Quick start: from a metadata table to a split_spec in ten minutes",
      "engine": "knitr::rmarkdown",
      "headings": [
        "1. A metadata table",
        "2. Build and validate",
        "3. Choose a constraint mode",
        "4. Emit the split_spec",
        "5. See which leakage paths the choice closes",
        "6. Hand off",
        "Where to go next"
      ],
      "created": "2026-09-18 07:23:42",
      "modified": "2026-09-18 07:23:42",
      "commits": 1
    },
    {
      "source": "leakage-aware-workflow.Rmd",
      "filename": "leakage-aware-workflow.html",
      "title": "splitGraph: From Metadata to Leakage-Aware Split Design",
      "author": "Selçuk Korkmaz",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Why splitGraph exists",
        "A realistic toy dataset",
        "Fast path: graph_from_metadata()",
        "Ingest metadata and build typed nodes and edges",
        "Assemble the dependency graph",
        "Visualize the typed structure",
        "Reshaping a graph you already have",
        "Exporting for other tools",
        "Validate before you split",
        "When you really do need to relax a check",
        "Query the graph to inspect hidden structure",
        "Derive split constraints from the graph",
        "Batch constraints",
        "Time constraints",
        "Composite constraints",
        "Cluster-style relations: site, region, platform, assay",
        "Site",
        "Region",
        "Platform and assay",
        "Pairwise relations: relatedness and spatial proximity",
        "Time ordering can come from precedence edges alone",
        "Translate the constraint into a split specification",
        "Summarize the leakage picture in one object",
        "Downstream handoff",
        "Persisting the handoff",
        "Case studies",
        "Case study 1: repeated subjects in a longitudinal cohort",
        "Case study 2: a subject reused across studies",
        "Case study 3: partially observed technical metadata",
        "Case study 4: choosing a defensible split strategy",
        "When splitGraph is useful",
        "What splitGraph is not for",
        "Takeaway"
      ],
      "created": "2026-03-16 22:13:20",
      "modified": "2026-09-18 07:23:42",
      "commits": 7
    }
  ],
  "_score": 5.5031094366713695,
  "_indexed": true,
  "_nocasepkg": "splitgraph",
  "_universes": [
    "selcukorkmaz"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.4.0",
      "date": "2026-10-18T11:06:54.000Z",
      "distro": "resolute",
      "commit": "c12682e3ee9ea3e1c8f070bedcc588286649c530",
      "fileid": "https://r2.ropensci.org/045d27a813dab92eef96501d3572c3bb2b6501ce0c4741741c3d3e5372ed1479",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/selcukorkmaz/actions/runs/39121531356"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.4.0",
      "date": "2026-10-18T11:07:32.000Z",
      "distro": "resolute",
      "commit": "c12682e3ee9ea3e1c8f070bedcc588286649c530",
      "fileid": "https://r2.ropensci.org/6d4687b8a3768e17e6475a85a79b11f171035b25d3b00c3cf460d6fa8d0dc934",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/selcukorkmaz/actions/runs/39121531356"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.4.0",
      "date": "2026-10-18T11:06:37.000Z",
      "commit": "c12682e3ee9ea3e1c8f070bedcc588286649c530",
      "fileid": "https://r2.ropensci.org/e3021a4b9db1e3b14b106c1fcb674d5427efa868e196821ff56a036c4e290485",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/selcukorkmaz/actions/runs/39121531356"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.4.0",
      "date": "2026-10-18T11:06:24.000Z",
      "commit": "c12682e3ee9ea3e1c8f070bedcc588286649c530",
      "fileid": "https://r2.ropensci.org/7598c56630c0de8fd8476324596b8ad3362ffac84d50e1185585ef3744f00f2c",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/selcukorkmaz/actions/runs/39121531356"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.4.0",
      "date": "2026-10-18T11:06:40.000Z",
      "commit": "c12682e3ee9ea3e1c8f070bedcc588286649c530",
      "fileid": "https://r2.ropensci.org/b8ec94489a1e7c5519e2e9f5d40a508fecbcb6896379174352e80f5db719ef2d",
      "status": "success",
      "buildurl": "https://github.com/r-universe/selcukorkmaz/actions/runs/39121531356"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.4.0",
      "date": "2026-10-18T11:05:47.000Z",
      "commit": "c12682e3ee9ea3e1c8f070bedcc588286649c530",
      "fileid": "https://r2.ropensci.org/757ae99c4dd92cd653270641197c99beca5627dfe2a729c5741d9d17f7bd450a",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/selcukorkmaz/actions/runs/39121531356"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.4.0",
      "date": "2026-10-18T11:06:03.000Z",
      "commit": "c12682e3ee9ea3e1c8f070bedcc588286649c530",
      "fileid": "https://r2.ropensci.org/4d858aad672f04cfb15235e014267561d9ffb1574f7a8ec7ce347edbffaa2e2c",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/selcukorkmaz/actions/runs/39121531356"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.4.0",
      "date": "2026-10-18T11:05:58.000Z",
      "commit": "c12682e3ee9ea3e1c8f070bedcc588286649c530",
      "fileid": "https://r2.ropensci.org/9781ca028e57494d05c275433c32b7e27d8c9525138c6e6ccbaa1222a17ff941",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/selcukorkmaz/actions/runs/39121531356"
    }
  ]
}