gsva-analysis-and-visualization — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited gsva-analysis-and-visualization (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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 works~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.