#![allow(dead_code)]
pub fn all_cases() -> Vec<(&'static str, Vec<&'static str>)> {
vec![
("pie", vec!["pie", "examples/data/pie.tsv"]),
(
"bar",
vec![
"bar",
"examples/data/pie.tsv",
"--label-col",
"feature",
"--value-col",
"percentage",
],
),
(
"scatter",
vec![
"scatter",
"examples/data/scatter.tsv",
"--x",
"x",
"--y",
"y",
"--color-by",
"group",
"--legend",
"--trend",
"--equation",
"--correlation",
],
),
(
"box",
vec![
"box",
"examples/data/measurements.tsv",
"--group-col",
"group",
"--value-col",
"value",
],
),
("venn", vec!["venn", "examples/data/venn.tsv"]),
("waffle", vec!["waffle", "examples/data/waffle.tsv"]),
("funnel", vec!["funnel", "examples/data/funnel.tsv"]),
("pyramid", vec!["pyramid", "examples/data/pyramid.tsv"]),
("lollipop", vec!["lollipop", "examples/data/lollipop.tsv"]),
(
"ecdf",
vec!["ecdf", "examples/data/samples.tsv", "--value", "expression"],
),
(
"dot",
vec![
"dot",
"examples/data/dot.tsv",
"--x-col",
"cell_type",
"--y-col",
"pathway",
"--size-col",
"pct_expressed",
"--color-col",
"mean_expr",
],
),
(
"mosaic",
vec![
"mosaic",
"examples/data/mosaic.tsv",
"--col-col",
"region",
"--row-col",
"outcome",
"--value-col",
"count",
],
),
(
"pareto",
vec![
"pareto",
"examples/data/pareto.tsv",
"--label-col",
"category",
"--value-col",
"count",
],
),
(
"qq",
vec!["qq", "examples/data/samples.tsv", "--value", "expression"],
),
(
"line",
vec![
"line",
"examples/data/measurements.tsv",
"--x",
"time",
"--y",
"value",
"--color-by",
"group",
"--legend",
],
),
(
"histogram",
vec![
"histogram",
"examples/data/measurements.tsv",
"--y",
"time,value",
"--legend",
],
),
(
"violin",
vec![
"violin",
"examples/data/samples.tsv",
"--group-col",
"group",
"--value-col",
"expression",
"--overlay-swarm",
"--group-colors",
"steelblue,tomato,seagreen,goldenrod,mediumpurple",
],
),
(
"roc",
vec![
"roc",
"examples/data/roc.tsv",
"--score-col",
"score",
"--label-col",
"label",
"--ci",
"--auc-label",
"--legend",
"Model",
],
),
(
"survival",
vec![
"survival",
"examples/data/survival.tsv",
"--time-col",
"time",
"--event-col",
"event",
"--group-col",
"group",
"--legend",
"Group",
],
),
(
"radar",
vec![
"radar",
"examples/data/radar.tsv",
"--axes",
"Sensitivity",
"Specificity",
"Precision",
"F1",
"AUC",
"--label-col",
"tool",
"--legend",
],
),
(
"waterfall",
vec![
"waterfall",
"examples/data/waterfall.tsv",
"--label-col",
"process",
"--value-col",
"log2fc",
"--connectors",
"--values",
],
),
(
"forest",
vec![
"forest",
"examples/data/forest.tsv",
"--label-col",
"study",
"--estimate-col",
"estimate",
"--ci-lower-col",
"ci_lower",
"--ci-upper-col",
"ci_upper",
"--weight-col",
"weight",
],
),
(
"slope",
vec![
"slope",
"examples/data/slope.tsv",
"--label-col",
"label",
"--before-col",
"before",
"--after-col",
"after",
"--before-label",
"2015",
"--after-label",
"2023",
"--show-values",
],
),
(
"bump",
vec![
"bump",
"examples/data/bump.tsv",
"--series",
"series",
"--time",
"time",
"--rank",
"rank",
"--highlight",
"Alpha",
"--rank-labels",
],
),
(
"bump_raw_value",
vec![
"bump",
"examples/data/bump.tsv",
"--series",
"series",
"--time",
"time",
"--rank",
"rank",
"--raw-value",
"--rank-ascending",
"--tie-break",
"min",
],
),
(
"parallel",
vec![
"parallel",
"examples/data/parallel.tsv",
"--value-cols",
"sepal_length",
"sepal_width",
"petal_length",
"petal_width",
"--group-col",
"species",
"--show-mean",
],
),
(
"ridgeline",
vec![
"ridgeline",
"examples/data/samples.tsv",
"--group-by",
"group",
"--value",
"expression",
],
),
(
"stacked_area",
vec![
"stacked-area",
"examples/data/stacked_area.tsv",
"--x-col",
"week",
"--group-col",
"species",
"--y-col",
"abundance",
"--normalize",
],
),
(
"streamgraph",
vec![
"streamgraph",
"examples/data/streamgraph.tsv",
"--x-col",
"week",
"--group-col",
"species",
"--y-col",
"abundance",
"--baseline",
"symmetric",
"--order",
"by-total",
],
),
(
"raincloud",
vec![
"raincloud",
"examples/data/raincloud.tsv",
"--group-col",
"group",
"--value-col",
"value",
],
),
(
"strip",
vec![
"strip",
"examples/data/samples.tsv",
"--group-col",
"group",
"--value-col",
"expression",
"--legend",
"--swarm",
],
),
(
"polar",
vec![
"polar",
"examples/data/polar.tsv",
"--r",
"r",
"--theta",
"theta",
"--color-by",
"group",
],
),
(
"rose",
vec![
"rose",
"examples/data/rose.tsv",
"--label",
"direction",
"--value",
"low_speed",
"--compass",
],
),
(
"manhattan",
vec![
"manhattan",
"examples/data/gene_stats.tsv",
"--chr-col",
"chr",
"--pvalue-col",
"pvalue",
"--top-n",
"3",
"--legend",
],
),
(
"volcano",
vec![
"volcano",
"examples/data/volcano_genes.tsv",
"--name-col",
"gene",
"--x-col",
"log2fc",
"--y-col",
"pvalue",
"--top-n",
"3",
"--legend",
"--fc-cutoff",
"1.5",
],
),
(
"calendar",
vec![
"calendar",
"examples/data/calendar.tsv",
"--agg",
"sum",
"--year",
"2023",
],
),
(
"ternary",
vec![
"ternary",
"examples/data/ternary.tsv",
"--color-by",
"group",
"--legend",
],
),
(
"hexbin",
vec![
"hexbin",
"examples/data/hexbin.tsv",
"--z",
"z",
"--reduce",
"mean",
],
),
(
"density",
vec![
"density",
"examples/data/samples.tsv",
"--value",
"expression",
"--color-by",
"group",
"--filled",
],
),
(
"upset",
vec![
"upset",
"examples/data/upset.tsv",
"--sort",
"degree",
"--max-visible",
"5",
],
),
(
"pr",
vec![
"pr",
"examples/data/roc.tsv",
"--score-col",
"score",
"--label-col",
"label",
"--auc-label",
],
),
(
"horizon",
vec![
"horizon",
"examples/data/measurements.tsv",
"--x-col",
"time",
"--value-col",
"value",
"--group-col",
"group",
"--legend",
],
),
(
"quiver",
vec![
"quiver",
"examples/data/quiver.tsv",
"--x-col",
"x",
"--y-col",
"y",
"--u-col",
"u",
"--v-col",
"v",
"--colormap",
"viridis",
"--pivot",
"middle",
],
),
(
"heatmap",
vec![
"heatmap",
"examples/data/heatmap.tsv",
"--values",
"--legend",
"Expr",
],
),
(
"treemap",
vec![
"treemap",
"examples/data/treemap.tsv",
"--label",
"label",
"--value",
"value",
"--parent",
"parent",
],
),
(
"sunburst",
vec![
"sunburst",
"examples/data/sunburst.tsv",
"--label",
"label",
"--value",
"value",
"--parent",
"parent",
],
),
(
"phylo",
vec![
"phylo",
"examples/data/phylo.tsv",
"--parent-col",
"parent",
"--child-col",
"child",
"--length-col",
"length",
"--phylogram",
],
),
(
"synteny",
vec![
"synteny",
"examples/data/synteny_seqs.tsv",
"--blocks-file",
"examples/data/synteny_blocks.tsv",
"--legend",
"Blocks",
],
),
(
"candlestick",
vec![
"candlestick",
"examples/data/candlestick.tsv",
"--volume-col",
"volume",
"--volume-panel",
],
),
(
"gantt",
vec![
"gantt",
"examples/data/gantt.tsv",
"--group-col",
"phase",
"--progress-col",
"progress",
"--milestone-col",
"milestone",
"--now",
"6",
],
),
(
"surface3d",
vec![
"surface3d",
"examples/data/surface3d.tsv",
"--x-label",
"X",
"--y-label",
"Y",
"--z-label",
"Z",
],
),
(
"surface3d_resolution",
vec![
"surface3d",
"examples/data/surface3d.tsv",
"--resolution",
"8",
],
),
(
"scatter3d",
vec!["scatter3d", "examples/data/scatter3d.tsv"],
),
(
"scatter3d_color_by",
vec![
"scatter3d",
"examples/data/scatter3d.tsv",
"--color-by",
"group",
],
),
(
"hist2d",
vec![
"hist2d",
"examples/data/hist2d.tsv",
"--x",
"x",
"--y",
"y",
"--bins-x",
"20",
"--bins-y",
"20",
"--correlation",
],
),
(
"contour",
vec![
"contour",
"examples/data/contour.tsv",
"--x",
"x",
"--y",
"y",
"--z",
"density",
"--filled",
"--levels",
"6",
"--legend",
"density",
],
),
(
"chord",
vec![
"chord",
"examples/data/chord.tsv",
"--gap",
"3.0",
"--opacity",
"0.6",
"--legend",
"connectivity",
],
),
(
"sankey",
vec![
"sankey",
"examples/data/sankey.tsv",
"--source-col",
"source",
"--target-col",
"target",
"--value-col",
"value",
"--link-gradient",
"--opacity",
"0.7",
"--legend",
"flows",
"--flow-labels",
],
),
(
"sankey_alluvium",
vec![
"sankey",
"examples/data/sankey_alluvium.tsv",
"--axis-col",
"tissue",
"--axis-col",
"cluster",
"--axis-col",
"sex",
"--value-col",
"count",
"--node-order",
"crossings",
"--coloring",
"left",
],
),
(
"network",
vec![
"network",
"examples/data/network.tsv",
"--source-col",
"source",
"--target-col",
"target",
"--weight-col",
"weight",
"--group-col",
"group",
"--directed",
"--labels",
"--legend",
"groups",
],
),
(
"network_matrix",
vec![
"network",
"examples/data/network_matrix.tsv",
"--matrix",
"--directed",
"--labels",
],
),
]
}
pub fn full_feature_cases() -> Vec<(&'static str, Vec<&'static str>)> {
all_cases()
.into_iter()
.filter(|(name, _)| matches!(*name, "pie" | "surface3d"))
.collect()
}
pub fn wrap_as_program(snippet: &str) -> String {
let mut uses = String::new();
let mut body = String::new();
let mut past_uses = false;
for line in snippet.lines() {
if !past_uses && (line.starts_with("use ") || line.is_empty()) {
uses.push_str(line);
uses.push('\n');
} else {
past_uses = true;
body.push_str(line);
body.push('\n');
}
}
format!("{uses}\nfn main() {{\n{body}}}\n")
}