Skip to content
Back to skills

Gokegg

ASecurity

Use when performing GO and KEGG enrichment on a gene list from bulk RNA-seq or microarray studies, then generating a combined GO/KEGG dot chart. NOT for single-cell RNA-seq, methylation data, or non-expression data.

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

Works with

  • cli

Security analysis

A100/100

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

Scanned June 6, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Gokegg?

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

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

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: gokegg-analysis
description: Use when performing GO and KEGG enrichment on a gene list from bulk RNA-seq or microarray studies, then generating a combined GO/KEGG dot chart. NOT for single-cell RNA-seq, methylation data, or non-expression data.
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 | File To Read | Purpose |
|---|---|---|
| Need algorithm details | `references/algorithm.md` | Statistical methods and formulas |
| Need to run the analysis | `scripts/main.R` | Full execution command |
| Encounter an error | `references/troubleshooting.md` | Troubleshooting guidance |
| Need CLI examples | `references/cli-guide.md` | Parameter usage examples |

## When To Use

Use this skill for:
- GO and KEGG enrichment from a gene list derived from bulk RNA-seq or microarray studies
- Supported gene ID types: `SYMBOL`, `ENSEMBL`, `ENTREZID`
- Supported species databases: `org.Hs.eg.db`, `org.Mm.eg.db`, `org.Rn.eg.db`

Do not use this skill for:
- Single-cell RNA-seq analysis
- Methylation, proteomics, or non-expression omics workflows
- Differential expression testing from raw count matrices

## Usage

Main analysis and plotting:
`Rscript scripts/main.R --feature "TP53,EGFR,BRCA1,MYC" --output_dir ./output --sp org.Hs.eg.db --gene_type SYMBOL --pvalue_cutoff 0.05 --qvalue_cutoff 0.2 --pAdjustMethod BH --seed 66 --go_top_n 3 --kegg_top_n 3 --format pdf`

Notes:
- `scripts/main.R` is the only command-line entry point
- `scripts/dochart.R` currently provides plotting functions and is sourced by `scripts/main.R`
- If `--go_input`, `--kegg_input`, or `--outdir` are omitted, `main.R` uses `output_dir/temp/GO_list.rda`, `output_dir/temp/KEGG_list.rda`, and `output_dir/plot` automatically

## Agent Output

On success, the agent should report:
- Whether GO enrichment completed successfully
- Whether KEGG enrichment completed successfully
- The normalized input gene count after trimming and parsing
- The main output directory
- The generated files, especially `GO_df.csv`, `KEGG_df.csv`, `GO_list.rda`, `KEGG_list.rda`, and the combined dot chart
- The path to `session_info.txt`

Post-run checklist:
- Re-parse the original `--feature` string using the documented separator rules and report the deduplicated gene count after trimming
- Check `temp/GO_df.csv` and `temp/GO_list.rda` before claiming GO success
- Check `temp/KEGG_df.csv` and `temp/KEGG_list.rda` before claiming KEGG success
- Check `plot/gokegg_dot_chart.<format>`, `plot/gokegg_dot_chart_data.csv`, `plot/gokegg_dot_chart_data.rda`, and `session_info.txt` before claiming full success
- Summarize the final result with: parsed gene count, GO status, KEGG status, plot status, output directory, and key output files

On failure, the agent should report:
- The exact `SKILL_*` error code
- The failing step, such as gene parsing, ID conversion, enrichment, or plotting
- The actionable next step, such as fixing input IDs, checking missing packages, or regenerating `.rda` files

## Parameter Reference

### `scripts/main.R`

| Short | Long | Type | Default | Required | Description |
|---|---|---|---|---|---|
| `-f` | `--feature` | character | `""` | Yes | Gene list separated by commas, Chinese commas, semicolons, tabs, or newlines |
| `-o` | `--output_dir` | character | `./output/` | No | Main output directory |
| `-s` | `--sp` | character | `org.Hs.eg.db` | No | Species database |
| `-g` | `--gene_type` | character | `SYMBOL` | No | Input gene ID type |
| `-p` | `--pvalue_cutoff` | numeric | `0.05` | No | Enrichment p-value cutoff |
| `-q` | `--qvalue_cutoff` | numeric | `0.2` | No | Enrichment q-value cutoff |
| `-m` | `--pAdjustMethod` | character | `BH` | No | P-value adjustment method |
|  | `--seed` | integer | `66` | No | Random seed |
|  | `--go_input` | character | `NULL` | No | Optional GO `.rda`; defaults to `output_dir/temp/GO_list.rda` |
|  | `--kegg_input` | character | `NULL` | No | Optional KEGG `.rda`; defaults to `output_dir/temp/KEGG_list.rda` |
|  | `--outdir` | character | `NULL` | No | Plot output directory; defaults to `output_dir/plot` |
|  | `--go_top_n` | numeric | `3` | No | Top GO terms per ontology |
|  | `--kegg_top_n` | numeric | `3` | No | Top KEGG pathways |
| `-w` | `--width` | numeric | `20` | No | Plot width in cm |
|  | `--height` | numeric | `16` | No | Plot height in cm |
|  | `--format` | character | `pdf` | No | Plot format: `pdf`, `png`, `svg` |
|  | `--dpi` | numeric | `300` | No | DPI for raster output |
| `-c` | `--colors` | character | `#E41A1C,#FFFF33,#2E86AB,#4DAF4A` | No | Colors for `GO:BP,GO:CC,GO:MF,KEGG` |
|  | `--title` | character | `GO + KEGG Dot Chart` | No | Plot title |
|  | `--xlab` | character | `NULL` | No | Horizontal axis label override |
|  | `--ylab` | character | `NULL` | No | Vertical axis label override |
|  | `--dot_size` | numeric | `4.5` | No | Dot size |
|  | `--shape` | numeric | `19` | No | Dot shape |
|  | `--rotate` / `--no-rotate` | logical flag | `TRUE` | No | Rotate plot orientation on or off |
|  | `--sorting` | character | `descending` | No | Dot sorting order |
|  | `--label_width` | numeric | `35` | No | Label wrap width |
|  | `--title_size` | numeric | `12` | No | Title font size |
|  | `--axis_title_size` | numeric | `9` | No | Axis title font size |
|  | `--axis_text_size` | numeric | `8` | No | Axis text font size |
|  | `--legend_title_size` | numeric | `8` | No | Legend title font size |
|  | `--legend_text_size` | numeric | `7` | No | Legend text font size |
|  | `--legend_position` | character | `top` | No | Legend position |
|  | `--plot_margin` | character | `10,10,10,10` | No | Plot margins: top,right,bottom,left |
|  | `--axis_line_size` | numeric | `0.5` | No | Axis line width |
|  | `--axis_ticks_size` | numeric | `0.5` | No | Axis tick width |
|  | `--show_grid` | logical | `FALSE` | No | Show grid lines |
| `-v` | `--verbose` | logical | `FALSE` | No | Enable verbose logging |

## Input Format

### Main Analysis Input
- `--feature` should be provided as a gene list
- Preferred separator: comma
- Also accepted: Chinese commas, semicolons, tabs, and newlines
- Leading and trailing spaces around each gene are removed automatically with trimming
- The gene ID type must match `--gene_type`
- `--sp` supports only `org.Hs.eg.db`, `org.Mm.eg.db`, and `org.Rn.eg.db`

Examples:
`TP53,EGFR,BRCA1,MYC`

`TP53, EGFR, BRCA1, MYC`

`TP53;EGFR;BRCA1;MYC`

`TP53\nEGFR\nBRCA1\nMYC`

Example command with minimal input:
`Rscript scripts/main.R --feature "TP53,EGFR,BRCA1,MYC" --output_dir ./example_output --sp org.Hs.eg.db --gene_type SYMBOL`

Example command with custom plotting parameters:
`Rscript scripts/main.R --feature "TP53,EGFR,BRCA1,MYC" --output_dir ./example_plot_output --sp org.Hs.eg.db --gene_type SYMBOL --go_top_n 5 --kegg_top_n 8 --colors "#E41A1C,#FFFF33,#2E86AB,#4DAF4A" --title "Custom GO + KEGG Dot Chart" --xlab="-log10(adjusted p-value)" --ylab="Enriched Terms" --width 24 --height 18 --label_width 40 --format png --dpi 300 --no-rotate --verbose`

Note: values passed to `--xlab` or `--ylab` that start with `-` should use `--option=value` syntax to avoid being parsed as flags.

Note: separator variants are supported only when they are passed inside a single `--feature` argument value.

### Plot Input
- Plotting is triggered by `scripts/main.R`
- `--go_input`: optional `.rda` file containing a `GO_list` object
- `--kegg_input`: optional `.rda` file containing a `KEGG_list` object
- If not provided, `main.R` uses the newly generated files under `output_dir/temp`
- Plotting requires result tables with at least `Description` and `p.adjust`

## Output Files

| File Name | Format | Description |
|---|---|---|
| `temp/GO_df.csv` | CSV | GO enrichment result table |
| `temp/GO_list.rda` | RDA | Full GO enrichment object |
| `temp/KEGG_df.csv` | CSV | KEGG enrichment result table |
| `temp/KEGG_list.rda` | RDA | Full KEGG enrichment object |
| `plot/gokegg_dot_chart.pdf` etc. | PDF/PNG/SVG | Combined GO/KEGG dot chart |
| `plot/gokegg_dot_chart_data.csv` | CSV | Combined plotting table used for the figure |
| `plot/gokegg_dot_chart_data.rda` | RDA | Plot bundle with plotting data and parameters |
| `session_info.txt` | TXT | Runtime session information |

## Error Handling

Common error codes and fixes:
- `SKILL_FILE_NOT_FOUND`: Input file does not exist; check the path and permissions
- `SKILL_FILE_FORMAT_ERROR`: `.rda` cannot be read or is malformed; regenerate upstream results
- `SKILL_MISSING_COLUMNS`: Result table is missing `Description` or `p.adjust`
- `SKILL_EMPTY_DATA`: Input genes are empty after parsing, cannot be converted, or enrichment results are empty
- `SKILL_INVALID_PARAMETER`: Required parameter missing, unsupported species, or insufficient color count
- `SKILL_PACKAGE_NOT_FOUND`: Required package is not installed
- `SKILL_ANALYSIS_FAILED`: Internal GO/KEGG enrichment failure; verify `gene_type`, `sp`, and input genes

For detailed troubleshooting, read `references/troubleshooting.md`.

## Testing

Minimal test dataset: use a small built-in gene list directly, with no extra files required.

Smoke test command:
`Rscript scripts/main.R --feature "TP53,EGFR,BRCA1,MYC" --output_dir ./test_output --sp org.Hs.eg.db --gene_type SYMBOL --pvalue_cutoff 0.05 --qvalue_cutoff 0.2 --pAdjustMethod BH --seed 66 --go_top_n 3 --kegg_top_n 3 --format pdf --verbose`

Expected smoke-test outputs:
- `./test_output/temp/GO_list.rda`
- `./test_output/temp/KEGG_list.rda`
- `./test_output/temp/GO_df.csv`
- `./test_output/temp/KEGG_df.csv`
- `./test_output/plot/gokegg_dot_chart.pdf`
- `./test_output/plot/gokegg_dot_chart_data.csv`
- `./test_output/plot/gokegg_dot_chart_data.rda`
- `./test_output/session_info.txt`
- Exit status code `0`

Automated regression script:
`Rscript test/test_regressions.R`

The regression script covers:
- Separator parsing with comma, Chinese semicolon, newline, tab, and mixed separators
- Empty parsed-gene handling
- Invalid `--plot_margin` validation
- Plot input validation for missing GO/KEGG inputs

Separator examples for manual CLI verification:
`Rscript scripts/main.R --feature "TP53,EGFR,BRCA1,MYC" --output_dir ./test_sep_comma`
`Rscript scripts/main.R --feature "TP53;EGFR;BRCA1;MYC" --output_dir ./test_sep_cn_semicolon`
`Rscript scripts/main.R --feature $'TP53\nEGFR\nBRCA1\nMYC' --output_dir ./test_sep_newline`
`Rscript scripts/main.R --feature $'TP53\tEGFR\tBRCA1\tMYC' --output_dir ./test_sep_tab`
`Rscript scripts/main.R --feature $'TP53; EGFR, BRCA1	MYC' --output_dir ./test_sep_mixed`

Note: all separators must be passed inside a single `--feature` argument value.

Files in this skill

  • SKILL.md10.5 KB
  • assets/KEGG_pathway_name.txt79.8 KB
  • eval_report_gokegg_result.json14.1 KB
  • references/algorithm.md5 KB
  • references/cli-guide.md4.3 KB
  • references/troubleshooting.md5.8 KB
  • scripts/dochart.R4.5 KB
  • scripts/functions.R5.9 KB
  • scripts/main.R7.3 KB
  • scripts/run_analysis.R3.5 KB
  • scripts/utils.R6.7 KB
  • test/data/gene.txt19 B

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.