Sample Group Sankey Plot logo

Sample Group Sankey Plot

OrganizationPopular
aipoch
sample-group-sankey-plot

Use when generating Sankey or alluvial plots from sample annotation tables where rows are samples and selected columns are categorical stages such as risk group, response status, subtype, or cohort labels. NOT for: gene network flow analysis, continuous-value trajectories, or graph-structured pathway visualization.

Overview

Publisheraipoch
Repositorymedical-research-skills
Skill namesample-group-sankey-plot
Stars
1.9K
Forks
175
Bundled files
11
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 11 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by aipoch on GitHub. Read the source before you install it.

Installation

Install the Sample Group Sankey Plot AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.

Use it in TypingMind

Enable Sample Group Sankey Plot in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Sample Group Sankey Plot on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Sample Group Sankey Plot is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Sample Group Sankey Plot

Builds a reproducible Sankey/alluvial visualization from a tabular sample annotation file and exports the selected annotations, lodes-format table, plot PDF, and session metadata.

Input Validation

This skill accepts: a sample annotation table in CSV or TSV format where rows are samples and selected columns are categorical stages (e.g., risk group, response status, subtype, cohort label). At least 2 stage columns are required.

If the user's request does not involve generating a Sankey or alluvial flow diagram from categorical sample annotations — for example, asking to visualize a gene regulatory network, plot continuous-value trajectories, analyze pathway flow, or process non-tabular data — do not proceed with the workflow. Instead respond:

"sample-group-sankey-plot is designed to generate Sankey/alluvial plots from categorical sample annotation tables. Your request appears to be outside this scope. Please provide a sample annotation table with at least 2 categorical stage columns, or use a more appropriate tool for gene network visualization or pathway analysis."

Readability guidance: Sankey plots are recommended for fewer than 8 unique values per stage and fewer than 5 stages total. For larger inputs, filter or aggregate categories before plotting to ensure readable output.

Agent Response Contract

After a successful run, report to the caller:

Sankey plot generated successfully.
Stages plotted : <comma-separated stage column names>
Samples        : <row count>
Output prefix  : <output_prefix>
Outputs:
  table/selected_annotations.csv
  table/sankey_lodes.csv
  plot/<output_prefix>.pdf
  data/session_info.txt
Readability warnings (if any): <advisory messages or "none">

If the script exits with a non-zero status, surface the SKILL_* error code and message verbatim. Do not attempt to continue or retry silently.

When to Read External Files

SituationFile to ReadPurpose
Need to run analysisscripts/main.RExecute: Rscript scripts/main.R --input_file ... --output_dir ...
Need algorithm detailsreferences/algorithm.mdAlluvial transformation logic, assumptions, and plotting choices
Encounter errorsreferences/troubleshooting.mdCommon errors and solutions
Need CLI examplesreferences/cli-guide.mdDetailed CLI examples
Need test datatests/data/Sample annotation tables for smoke tests and regression checks

→ Reference files algorithm.md, troubleshooting.md, and cli-guide.md are in references/. If absent, rely on the Error Handling table below for common issues.


Usage

Environment Setup

Install required R packages before the first run:

bash
Rscript scripts/install_dependencies.R

Note: install_dependencies.R installs from CRAN without version pinning. Tested with ggalluvial >= 0.12.5 and ggplot2 >= 3.4.0. For reproducible CI environments, consider using remotes::install_version().

Basic Command

bash
Rscript scripts/main.R \
  --input_file ./annotations.csv \
  --output_dir ./output \
  --columns risk,Responder \
  --seed 42

Arguments

ShortLongTypeDefaultDescription
-i--input_filecharacterrequiredInput CSV/TSV annotation table
-o--output_dircharacter./output/Output directory
-c--columnscharacterall columnsComma-separated stage columns to include in the plot. When omitted, all columns in the file are used as stages.
-p--output_prefixcharactersankey_plotPrefix for generated output files (alphanumeric, dot, underscore, or hyphen characters only)
--widthnumeric7Plot width in inches
--heightnumeric5Plot height in inches
--alphanumeric0.5Flow transparency between 0 and 1
--label_sizenumeric4.5Stratum label size
--missing_labelcharacterMissingReplacement label for blank or NA strata
--titlecharacteremptyOptional plot title
-s--seedinteger42Random seed recorded for reproducibility
--timeoutinteger3600Maximum allowed elapsed runtime in seconds; use 0 to disable

Input Format

Annotation Table (input_file)

Delimited text file where rows represent samples and each selected column is a categorical stage shown in the Sankey plot.

csv
SampleID,risk,Responder,Subtype
S1,High,Yes,Basal
S2,Low,No,LumA
S3,High,Yes,Basal
S4,Low,No,LumB

Requirements:

  • The file must contain at least 2 columns if --columns is omitted.
  • Each selected column must exist in the file header.
  • Selected columns are interpreted as categorical stages and will be converted to character values.
  • Blank strings and NA values are replaced with --missing_label.
  • CSV and TSV inputs are supported.
  • Recommended: fewer than 8 unique values per stage and fewer than 5 stages total for readable plots.

Output Files

FileDescription
table/selected_annotations.csvFiltered table containing only the plotted stage columns
table/sankey_lodes.csvLong-format lodes table used to build the Sankey plot
plot/{output_prefix}.pdfSankey/alluvial plot as a PDF file; default filename is sankey_plot.pdf
data/session_info.txtR session information and runtime parameters

selected_annotations.csv

ColumnTypeDescription
stage columnscharacterOne column per plotted stage in original order

sankey_lodes.csv

ColumnTypeDescription
sample_idcharacterSynthetic row identifier used as the alluvium key
xcharacterStage name
stratumcharacterCategory label for the stage

Workflow

Step 1: Validate Input

  • Check that the input file exists and is readable.
  • Detect CSV vs TSV input.
  • Validate that at least 2 stage columns are available.
  • Validate that user-specified columns exist.

Step 2: Prepare Sankey Data

  • Subset the selected stage columns.
  • Replace missing or blank labels.
  • Add a row-level sample_id identifier.
  • Convert the table with ggalluvial::to_lodes_form().

Step 2a: Readability Advisories

After column selection, the script emits log_warn advisories when:

  • More than 5 stages are selected: "More than 5 stages selected; plot may be hard to read. Consider filtering."
  • A stage has more than 8 unique values: "Stage <name> has <n> unique values; consider aggregating for readability."

These are advisory only — the script continues and produces the plot.

Step 3: Generate Visualization

  • Build the Sankey/alluvial plot with geom_flow() and geom_stratum().
  • Render stratum labels.
  • Save the plot as PDF.

Step 4: Record Outputs

  • Save the selected annotations and lodes-format table as CSV files.
  • Save sessionInfo() and runtime arguments for reproducibility.

Examples

Reproduce the Original Two-Column Plot

bash
Rscript scripts/main.R \
  -i tests/data/sample_annotations.csv \
  -o tests/output \
  -c risk,Responder

Plot Three Annotation Stages

bash
Rscript scripts/main.R \
  -i tests/data/sample_annotations.csv \
  -o tests/output_three_stage \
  -c risk,Responder,Subtype \
  --title "Risk to response transitions"

Use All Columns Automatically

bash
Rscript scripts/main.R \
  -i tests/data/minimal_annotations.csv \
  -o tests/output_all_columns

Error Handling

Common Errors

ErrorCauseSolution
SKILL_FILE_NOT_FOUNDInput file does not existCheck --input_file
SKILL_EMPTY_DATAThe input file has zero rows or fewer than 2 usable columnsProvide a non-empty table with at least 2 stage columns
SKILL_MISSING_COLUMNSA requested stage column is absentCorrect --columns or fix the input header
SKILL_INVALID_PARAMETERWidth, height, alpha, label size, or output prefix is invalidProvide valid arguments per the Arguments table
SKILL_DEPENDENCY_MISSINGA required R package is unavailableRun Rscript scripts/install_dependencies.R
SKILL_IO_ERROROutput directory cannot be created or writtenCheck permissions on --output_dir

IF error persists, READ: references/troubleshooting.md


Testing

Test with Sample Data

bash
Rscript scripts/install_dependencies.R

Rscript scripts/main.R --help

Rscript scripts/main.R \
  -i tests/data/sample_annotations.csv \
  -o tests/output \
  -c risk,Responder,Subtype

Rscript tests/test_skill.R

Rscript tests/run_smoke_test.R

Validation Commands

bash
ls -la tests/output/table
ls -la tests/output/plot
ls -la tests/output/data

References

  1. Brunson JC (2020) ggalluvial: Layered Grammar for Alluvial Plots. Journal of Open Source Software. doi:10.21105/joss.02017
  2. Wickham H (2016) ggplot2: Elegant Graphics for Data Analysis. Springer. doi:10.1007/978-3-319-24277-4

For detailed algorithm, READ: references/algorithm.md

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Sample Group Sankey Plot AI skill do?

Use when generating Sankey or alluvial plots from sample annotation tables where rows are samples and selected columns are categorical stages such as risk group, response status, subtype, or cohort labels. NOT for: gene network flow analysis, continuous-value trajectories, or graph-structured pathway visualization.

Why use Sample Group Sankey Plot on TypingMind?

Because you install it once and use it with any model. Sample Group Sankey Plot is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Sample Group Sankey Plot in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/aipoch/medical-research-skills/tree/main/awesome-med-research-skills/Data%20Analysis/sample-group-sankey-plot. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Sample Group Sankey Plot?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Sample Group Sankey Plot?

As many as you like. As long as a model supports skills, you can use Sample Group Sankey Plot with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Sample Group Sankey Plot AI skill free?

Yes. It is published on GitHub by aipoch under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇