Run GSEA on a ranked gene list and produce the enrichment table, running-score table, and enrichment plots.
BY aipochUPDATED Oct 27, 2026
INTENDED FOR◈OpenClawInstall in a listed agent.
instructions.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`
---
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`
COMPATIBILITY & REFERENCES
Platform guidance
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.
---name: liquid-biopsy-analytics-agent description: AI-powered comprehensive liquid biopsy analysis integrating ctDNA, CTCs, exosomes, and cfRNA for cancer detection, monitoring, and treatment guidance. license: MIT metadata: author: AI Group version: "1.0.0" created: "2026-01-19" compatibility:
Remove batch effects from RNA-seq data using ComBat, ComBat-Seq, limma removeBatchEffect, and SVA for unknown batch variables. Use when correcting batch effects in expression data.
This skill should be used when working with genomic interval data (BED files) for machine learning tasks. Use for training region embeddings (Region2Vec, BEDspace), single-cell ATAC-seq analysis (scEmbed), building consensus peaks (universes), or any ML-based analysis of genomic regions. Applies ...
Generate reproducible bioinformatics/data-science Methods + run documentation from workflow run artifacts (Nextflow/Snakemake/CWL), including a top-of-doc workflow summary, exact executed commands, tool versions, parameters, QC, and outputs.