Skip to content
Back to skills

Gsea

ASecurity

Run GSEA on a ranked gene list and produce the enrichment table, running-score table, and enrichment plots.

  • 1,793 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 6, 2026
datagoexpresstestinggitbackend

Works with

  • cli

Security analysis

A100/100

Pro scans all 11 files and shows the line behind each finding

Scanned June 6, 2026

npx -y skills add aipoch/medical-research-skills --skill gsea --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gsea?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gsea
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aipoch-gsea/badge)](https://www.skillsdirectory.com/skills/aipoch-gsea)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: gsea
description: Run GSEA on a ranked gene list and produce the enrichment table, running-score table, and enrichment plots.
license: MIT
author: AIPOCH
---
> **Source**: [https://github.com/aipoch/medical-research-skills](https://github.com/aipoch/medical-research-skills)

## When to read external files

| Situation | Read | Purpose |
|---|---|---|
| Need algorithm details | `references/algorithm.md` | Statistical method and formulas |
| Need to run an analysis | `scripts/main.R` | Full command reference |
| Hit an error | `references/troubleshooting.md` | Look up error codes and fixes |
| Need CLI examples | `references/cli-guide.md` | Worked argument examples |

## Scope

Use this skill for:
- Running GSEA on a gene list ranked by a statistic
- Generating enrichment curve plots from existing `enrichGSEA.csv` and `gsea_running_scores.csv`
- Smoke-testing the pipeline with `tests/data/sample_deg_results.csv`

Do not use it for:
- Differential expression on raw expression matrices
- Single-sample ssGSEA
- Network analysis or multi-omics integration

## Usage

Analysis mode:
`Rscript scripts/main.R --input tests/data/sample_deg_results.csv --outdir ./GSEA_analysis --type KEGG --species human --seed 42 --timeout 300`

Plot mode:
`Rscript scripts/main.R --running_file ./GSEA_analysis/Table/gsea_running_scores.csv --enrich_file ./GSEA_analysis/Table/enrichGSEA.csv --plot_output ./GSEA_analysis/plot/gsea_plot.pdf --top_n 5 --plot_format pdf --seed 42 --timeout 300`

See `references/cli-guide.md` for more.

Mode selection:
- Passing only `--input` runs analysis mode
- Passing both `--running_file` and `--enrich_file` runs plot mode
- If both sets of arguments are provided, plot mode takes precedence; analysis mode is skipped and a warning is logged

## Arguments

### Analysis-mode arguments

| Short | Long | Type | Default | Required | Description |
|---|---|---|---|---|---|
| `-i` | `--input` | character | `NULL` | yes | Input CSV file |
| `-o` | `--outdir` | character | `GSEA_analysis` | no | Output directory |
| `-g` | `--gene_col` | character | `name` | no | Gene column name |
| `-f` | `--fc_col` | character | `logFC` | no | Ranking-statistic column name |
| `-t` | `--type` | character | `KEGG` | no | Gene-set type: `KEGG`, `HALLMARKS`, `GO_BP`, `GO_MF`, `GO_CC`. With a preloaded RDS, `HALLMARKS` is automatically mapped to the asset key `Hallmarks` |
| `-s` | `--species` | character | `human` | no | Species: `human`, `mouse`, `rat` |
| `-p` | `--pvalue_cutoff` | numeric | `0.05` | no | Significance threshold |
| `-m` | `--method` | character | `fgsea` | no | GSEA backend: `fgsea` or `DOSE` |
| `-c` | `--chunk_size` | numeric | `1000` | no | Chunk size for large gene-set conversion |
| `-r` | `--rds_path` | character | `NULL` | no | Path to a pre-stored gene-set RDS |
| `-v` | `--verbose` | logical | `FALSE` | no | Verbose logging |
|  | `--seed` | integer | `42` | no | Random seed |
|  | `--timeout` | integer | `300` | no | Timeout in seconds; `<=0` disables it |
| `-h` | `--help` | logical | `FALSE` | no | Show help |

### Plot-mode arguments

| Short | Long | Type | Default | Required | Description |
|---|---|---|---|---|---|
|  | `--running_file` | character | `NULL` | yes | Path to `gsea_running_scores.csv` |
|  | `--enrich_file` | character | `NULL` | yes | Path to `enrichGSEA.csv` |
|  | `--plot_output` | character | `gsea_plot.pdf` | no | Output plot path |
|  | `--plot_width` | numeric | `8` | no | Plot width |
|  | `--plot_height` | numeric | `6` | no | Plot height |
|  | `--plot_format` | character | `pdf` | no | Output format: `pdf` or `png` |
|  | `--top_n` | numeric | `1` | no | Number of top pathways to plot when `geneSetID` is not given |
|  | `--rank_by` | character | `p.adjust` | no | Column used to rank pathways |
|  | `--geneSetID` | character | `""` | no | Comma-separated pathway IDs |
|  | `--plot_title` | character | `""` | no | Plot title |
|  | `--colors` | character | `#4DBBD5,#E64B35,#00A087,#F39B7F,#3C5488,#8491B4` | no | Color list |
|  | `--base_size` | numeric | `11` | no | Base font size |
|  | `--subplots` | character | `1,2,3` | no | Sub-panel indices to display |
|  | `--rel_heights` | character | `1.5,0.8,1` | no | Relative panel heights |
|  | `--NES_table` | logical | `TRUE` | no | Show NES annotation |
|  | `--no_NES_table` | logical | `FALSE` | no | Disable NES annotation |
|  | `--NES_label_size` | numeric | `4` | no | NES label font size |
|  | `--NES_label_x` | numeric | `0.75` | no | NES label x position |
|  | `--NES_label_y` | numeric | `0.75` | no | NES label y position |
|  | `--NES_label_color` | character | `black` | no | NES label color |
|  | `--NES_label_hjust` | numeric | `0` | no | NES label horizontal justification |
|  | `--NES_label_vjust` | numeric | `1` | no | NES label vertical justification |
|  | `--line_width` | numeric | `1` | no | ES line width |
|  | `--dot_size` | numeric | `1.2` | no | ES dot size |
|  | `--legend_position` | character | `auto` | no | Legend position |
|  | `--legend_x` | numeric | `0.02` | no | Inset legend x coordinate |
|  | `--legend_y` | numeric | `0.02` | no | Inset legend y coordinate |
|  | `--legend_just_x` | numeric | `0` | no | Legend horizontal justification |
|  | `--legend_just_y` | numeric | `0` | no | Legend vertical justification |
|  | `--legend_text_size` | numeric | `9` | no | Legend text size |
|  | `--legend_key_size` | numeric | `0.6` | no | Legend key size |
|  | `--legend_bg_alpha` | numeric | `0` | no | Legend background alpha |
|  | `--grid_major_color` | character | `grey92` | no | Major grid color |
|  | `--grid_minor_color` | character | `grey92` | no | Minor grid color |
|  | `--ylab_es` | character | `Enrichment Score` | no | ES panel y-axis title |
|  | `--ylab_rank` | character | `Ranked List Metric` | no | Rank panel y-axis title |
|  | `--xlab_rank` | character | `Rank in Ordered Dataset` | no | Rank panel x-axis title |
|  | `--hit_height` | numeric | `1` | no | Hit-bar height |
|  | `--hit_gap` | numeric | `0` | no | Hit-bar gap |
|  | `--hit_linewidth` | numeric | `0.5` | no | Hit-bar line width |
|  | `--rank_bar_alpha` | numeric | `0.9` | no | Rank-bar alpha |
|  | `--rank_bar_height_ratio` | numeric | `0.3` | no | Rank-bar height ratio |
|  | `--rank_metric_segment_color` | character | `grey` | no | Rank-line color |
|  | `--rank_metric_segment_width` | numeric | `0.3` | no | Rank-line width |
|  | `--rank_metric_segment_alpha` | numeric | `1` | no | Rank-line alpha |
|  | `--pvalue_table` | logical | `FALSE` | no | Show p-value table |
|  | `--ES_geom` | character | `line` | no | ES geometry: `line` or `dot` |
|  | `--verbose` | logical | `FALSE` | no | Verbose logging |
|  | `--seed` | integer | `42` | no | Random seed |
|  | `--timeout` | integer | `300` | no | Timeout in seconds; `<=0` disables it |
| `-h` | `--help` | logical | `FALSE` | no | Show help |

## Input format

Analysis-mode input is a CSV with at least:
- a gene column (default name `name`)
- a ranking-statistic column (default name `logFC`)

Example:
```csv
name,logFC,pvalue,padj
TP53,2.5,0.001,0.01
BRCA1,1.8,0.005,0.02
EGFR,-1.2,0.01,0.05
```

Value constraints:
- `type` accepts `KEGG`, `HALLMARKS`, `GO_BP`, `GO_MF`, `GO_CC`
- When using a preloaded RDS, `HALLMARKS` is automatically matched to the asset key `Hallmarks`
- `species` accepts `human`, `mouse`, `rat`

## Output files

| File | Format | Description |
|---|---|---|
| `data/GSEA_list.rda` | RDA | Full GSEA result object |
| `Table/enrichGSEA.csv` | CSV | Enrichment result table |
| `Table/gsea_running_scores.csv` | CSV | Running-score table; if no enrichment passes, a header-only file is still written |
| `plot/` | directory | Plot output directory |
| `session_info.txt` | TXT | R version and package versions |

`enrichGSEA.csv` mainly contains: `ID`, `Description`, `NES`, `pvalue`, `p.adjust`, `core_enrichment`.

## Error handling

Common error codes:
- `SKILL_FILE_NOT_FOUND`: input file does not exist
- `SKILL_MISSING_COLUMNS`: required columns are missing
- `SKILL_EMPTY_DATA`: input is empty, or empty after filtering
- `SKILL_INVALID_PARAMETER`: an argument has an invalid value
- `SKILL_PACKAGE_NOT_FOUND`: a required package is not installed
- `SKILL_ANALYSIS_FAILED`: GSEA still failed after retries

Triage doc: `references/troubleshooting.md`

Exit codes:
- `0`: success
- `1`: failure

## Testing

Minimal test dataset: `tests/data/sample_deg_results.csv`

Minimal command:
`Rscript scripts/main.R --input tests/data/sample_deg_results.csv --outdir ./test_output --type KEGG --species human --seed 42 --timeout 300 --verbose`

Expected output:
- `./test_output/data/GSEA_list.rda`
- `./test_output/Table/enrichGSEA.csv`
- `./test_output/Table/gsea_running_scores.csv`
- `./test_output/session_info.txt`
- If no significant enrichment is found, `gsea_running_scores.csv` is still written but contains only the header
- Exit code `0`

Files in this skill

  • SKILL.md8.7 KB
  • eval_report_gsea_result.json15 KB
  • references/algorithm.md1.2 KB
  • references/cli-guide.md1.4 KB
  • references/troubleshooting.md1.6 KB
  • scripts/functions.R7.4 KB
  • scripts/main.R12.8 KB
  • scripts/plot_functions.R16.6 KB
  • scripts/run_analysis.R11.7 KB
  • scripts/utils.R6.1 KB
  • tests/data/sample_deg_results.csv1.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.