Use this skill to run GSVA or ssGSEA pathway-level differential analysis from a bulk expression matrix and a sample group file, then generate a heatmap from the saved GSVA result object. Trigger keywords: GSVA, ssGSEA, pathway enrichment, KEGG pathway analysis, MSigDB. NOT for: gene-level differential expression, single-cell analysis, methylation analysis, clinical diagnosis.
74
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Use this skill when the user wants one of the following:
data/GSVA_list.rda result object.rda object, and a PDF heatmapTypical request patterns:
This is a hybrid skill.
SKILL.md to verify that the request is in scope.scripts/main.R for real execution.--mode analyze to compute pathway scores and differential results.--mode visualize to reuse an existing data/GSVA_list.rda and generate a heatmap. In visualize mode, GSVA_list.rda must exist in output_dir/data/; run analyze or full mode first if it is missing (SKILL_FILE_NOT_FOUND will be raised otherwise).--mode full to run analysis and visualization in one pass.| Situation | File to Read | Purpose |
|---|---|---|
| Need algorithm details | references/algorithm.md | Understand GSVA, limma, and heatmap generation logic |
| Need to run analysis or plotting | scripts/main.R | Execute the CLI entry point |
| Encounter errors | references/troubleshooting.md | Find standard error codes and fixes |
| Need more CLI examples or the baseline execution record | references/cli-guide.md | Copy ready-to-run commands and review the recorded test run |
| Need sample input files | tests/data/ | Use the bundled demo matrix and group file |
differential-expression-analysis insteadsc-clustering or cellchatssgsea-r or ssgsea_immuneIf the request falls outside these boundaries, stop and tell the user that this skill only covers bulk expression pathway-level GSVA/ssGSEA analysis plus downstream heatmap visualization.
Choose --method based on your data characteristics:
gsva: kernel-based enrichment scores suitable for continuous expression data with moderate-to-large sample sizes (≥ 10 samples per group recommended).ssgsea: rank-based enrichment scores; less sensitive to outliers and more suitable for noisy data or smaller sample sizes.For detailed methodological comparison, READ: references/algorithm.md
Rscript scripts/main.R \
--mode full \
--input_file tests/data/expr_matrix.csv \
--group_file tests/data/group.csv \
--case_group Tumor \
--control_group Healthy \
--species "Homo sapiens" \
--category C2 \
--subcategory KEGG \
--output_dir ./output \
--seed 42| Short | Long | Type | Default | Description |
|---|---|---|---|---|
-m | --mode | character | analyze | Run mode: analyze, visualize, or full |
-i | --input_file | character | required for analyze/full | Expression matrix file (CSV or TSV, genes as rows, samples as columns) |
-g | --group_file | character | required for analyze/full | Sample group file (CSV or TSV with sample and group columns) |
-a | --case_group | character | required for analyze/full | Case or treatment group label |
-c | --control_group | character | required for analyze/full | Control group label |
-o | --output_dir | character | ./output/ | Output directory |
-s | --species | character | Homo sapiens | MSigDB species |
-C | --category | character | C2 | MSigDB category |
-S | --subcategory | character | KEGG | MSigDB subcategory |
--method | character | gsva | GSVA method: gsva or ssgsea (see Method Selection Guide above) | |
--kcdf | character | Gaussian | GSVA kernel: Gaussian, Poisson, or none | |
--min_sz | integer | 2 | Minimum gene set size | |
--max_sz | integer | 10000 | Maximum gene set size | |
--parallel_sz | integer | 1 | Parallel worker count passed to GSVA | |
--mx_diff | logical | TRUE | GSVA mx.diff flag | |
--tau | double | 1 | GSVA tau value | |
--fdr_threshold | double | 0.05 | FDR threshold used to select top pathways | |
--top_n | integer | 20 | Number of pathways exported to the top score matrix | |
--seed | integer | 42 | Random seed | |
--timeout_seconds | integer | 0 | Optional timeout in seconds; 0 disables it | |
--plot_file | character | GSVA_heatmap.pdf | Heatmap file name under plot/ (file name only; no path separators) | |
--plot_title | character | GSVA Enrichment Heatmap | Heatmap title | |
--width | double | 14 | Heatmap width in inches | |
--height | double | 8 | Heatmap height in inches | |
--colors | character | #91bfdb,#ffffbf,#fc8d59 | Comma-separated heatmap colors | |
--scale | character | none | Heatmap scale mode: none, row, or column | |
--cluster_rows | logical | TRUE | Cluster heatmap rows | |
--cluster_cols | logical | FALSE | Cluster heatmap columns | |
--show_rownames | logical | TRUE | Show pathway names on the heatmap | |
--show_colnames | logical | FALSE | Show sample names on the heatmap | |
--fontsize | double | 10 | Base heatmap font size | |
--fontsize_row | double | 8 | Row label font size | |
--fontsize_col | double | 9 | Column label font size | |
--legend_cex | double | 1 | Legend text scaling factor | |
--top_up | integer | optional | Number of up-regulated pathways retained for plotting | |
--top_down | integer | optional | Number of down-regulated pathways retained for plotting | |
--top_mode | character | both | Heatmap subset mode: both, up, down, or total | |
--sort_by | character | FDR | Pathway ranking: FDR, absLFC, or LFC | |
--append_stats | logical | FALSE | Append FDR and logFC to heatmap labels | |
--label_max_chars | integer | 80 | Maximum heatmap label length |
Example:
gene,S1,S2,S3,S4
TP53,8.1,7.9,6.5,6.3
EGFR,5.2,5.0,4.2,4.1The bundled tests/data/expr_matrix.csv is derived from the public GEO series GSE44076 after probe-to-gene collapsing and contains the Tumor versus Healthy subset.
sample, sample_name, or sample_idgroup, condition, cluster, or classExample:
sample,group
GSM1077746,Tumor
GSM1077747,Tumor
GSM1077598,Healthy
GSM1077599,Healthy| File | Description |
|---|---|
table/GSVA_diff.csv | limma differential pathway results with logFC, P.Value, and adj.P.Val |
table/GSVA_enrichment_results.csv | Full GSVA score matrix |
table/GSVA_enrichment_results_topN.csv | Top pathway score matrix selected by --top_n and --fdr_threshold |
data/GSVA_list.rda | Saved gsva_result object for downstream visualization |
plot/GSVA_heatmap.pdf | Heatmap PDF generated in visualize or full mode |
session_info.txt | R session and package version information |
output_manifest.txt | Append-only manifest of generated outputs across runs in the same output_dir |
run_record.txt | Append-only run log with parameters, runtime, and output summaries across runs in the same output_dir |
| Column | Type | Description |
|---|---|---|
logFC | numeric | limma-estimated pathway score difference between case and control |
AveExpr | numeric | Average pathway score across all samples |
t | numeric | Moderated t statistic from limma |
P.Value | numeric | Raw p-value from limma |
adj.P.Val | numeric | Benjamini-Hochberg adjusted p-value |
B | numeric | Log-odds that the pathway is differentially enriched |
geneset | character | Pathway identifier used in the GSVA run |
table/gsva_result object to data/GSVA_list.rdaplot/ when running visualize or fulloutput_manifest.txt and run_record.txt for each invocation so earlier provenance is preserved when reusing one output_dirRscript scripts/main.R \
--mode full \
--input_file ./expression_matrix.csv \
--group_file ./group_info.csv \
--case_group treatment \
--control_group control \
--output_dir ./outputRscript scripts/main.R \
--mode analyze \
--input_file ./expression_matrix.csv \
--group_file ./group_info.csv \
--case_group treatment \
--control_group control \
--method ssgsea \
--top_n 30 \
--fdr_threshold 0.1 \
--output_dir ./ssgsea_output \
--seed 123Rscript scripts/main.R \
--mode visualize \
--output_dir ./output \
--plot_file custom_heatmap.pdf \
--top_up 10 \
--top_down 10 \
--top_mode bothFor the bundled real-data baseline record, READ: references/cli-guide.md
| Error Code | Meaning | Solution |
|---|---|---|
SKILL_FILE_NOT_FOUND | Input file or saved result file is missing; in visualize mode, GSVA_list.rda must exist in output_dir/data/ — run analyze or full mode first | Check the path and rerun with the correct file |
SKILL_MISSING_COLUMNS | Group file lacks a valid sample or group column | Rename the columns to a supported name |
SKILL_SAMPLE_MISMATCH | Sample names do not match between files | Align sample names before running the skill |
SKILL_EMPTY_DATA | Input matrix, gene set query, or plotting matrix is empty | Verify the input matrix and MSigDB settings |
SKILL_INVALID_PARAMETER | A CLI argument is missing or out of range | Review the parameter table and rerun |
SKILL_PACKAGE_NOT_FOUND | Required R packages are not installed | Install the missing packages listed in references/cli-guide.md |
If the error persists, READ: references/troubleshooting.md
This skill accepts:
GSVA_list.rdaPrivacy and data-handling note:
output_dirIf the user's request does not involve bulk expression pathway enrichment analysis or GSVA heatmap generation — for example, asking for single-cell analysis, gene-level DE testing, methylation analysis, or clinical diagnosis — do not proceed with this workflow. Instead respond:
"gsva-analysis-and-visualization is designed for bulk expression pathway-level GSVA/ssGSEA analysis and saved-result heatmap visualization. Your request appears to be outside this scope. Please provide a bulk expression matrix plus sample group file for GSVA/ssGSEA analysis, or use a more appropriate skill for your task."
Rscript scripts/main.R --help
Rscript tests/run_tests.R
Rscript scripts/main.R \
--mode full \
--input_file tests/data/expr_matrix.csv \
--group_file tests/data/group.csv \
--case_group Tumor \
--control_group Healthy \
--species "Homo sapiens" \
--category C2 \
--subcategory KEGG \
--output_dir tests/output \
--seed 42Expected outputs:
tests/output/table/GSVA_diff.csvtests/output/table/GSVA_enrichment_results.csvtests/output/table/GSVA_enrichment_results_topN.csvtests/output/data/GSVA_list.rdatests/output/plot/GSVA_heatmap.pdftests/output/session_info.txttests/output/output_manifest.txttests/output/run_record.txtOptional post-check:
Rscript tests/test_skill.R tests/outputtests/run_tests.R executes the full demo workflow, validates the expected output files, then reruns visualize in the same output_dir to confirm that output_manifest.txt and run_record.txt preserve both run sections.
For detailed algorithm notes, READ: references/algorithm.md
optparseset.seed() for reproducibilityget_script_dir() defined before any call to itSKILL.mdtests/data/SKILL_* messagesRscript scripts/main.R --help worksf5ef65b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.