Alphagenome Single Variant Analysis
google-deepmind/science-skills
Analyzes genetic variant effects on gene expression (RNA-seq), chromatin accessibility (DNASE), histone marks (ChIP), and transcription factors using the AlphaGenome API.
GSEA and over-representation analysis (ORA) for RNA-seq and proteomics.
$ npx skills add jaechang-hits/SciAgent-Skills --skill gseapy-gene-enrichment -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jaechang-hits/SciAgent-Skills gseapy-gene-enrichment --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment .claude/skills/gseapy-gene-enrichment && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "gseapy-gene-enrichment" agent skill from https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment into .claude/skills/gseapy-gene-enrichment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gseapy-gene-enrichment", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichmentType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jaechang-hits/SciAgent-Skills --skill gseapy-gene-enrichment -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jaechang-hits/SciAgent-Skills gseapy-gene-enrichment --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment .agents/skills/gseapy-gene-enrichment && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "gseapy-gene-enrichment" agent skill from https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment into .agents/skills/gseapy-gene-enrichment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gseapy-gene-enrichment", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jaechang-hits/SciAgent-Skills --skill gseapy-gene-enrichment -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jaechang-hits/SciAgent-Skills gseapy-gene-enrichment --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment .cursor/skills/gseapy-gene-enrichment && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "gseapy-gene-enrichment" agent skill from https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment into .cursor/skills/gseapy-gene-enrichment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gseapy-gene-enrichment", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jaechang-hits/SciAgent-Skills.git --path skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jaechang-hits/SciAgent-Skills --skill gseapy-gene-enrichment -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jaechang-hits/SciAgent-Skills gseapy-gene-enrichment --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment .gemini/skills/gseapy-gene-enrichment && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "gseapy-gene-enrichment" agent skill from https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment into .gemini/skills/gseapy-gene-enrichment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gseapy-gene-enrichment", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jaechang-hits/SciAgent-Skills gseapy-gene-enrichmentInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jaechang-hits/SciAgent-Skills --skill gseapy-gene-enrichment -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment .github/skills/gseapy-gene-enrichment && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "gseapy-gene-enrichment" agent skill from https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment into .github/skills/gseapy-gene-enrichment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gseapy-gene-enrichment", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jaechang-hits/SciAgent-Skills --skill gseapy-gene-enrichment -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jaechang-hits/SciAgent-Skills gseapy-gene-enrichment --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment .opencode/skills/gseapy-gene-enrichment && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "gseapy-gene-enrichment" agent skill from https://github.com/jaechang-hits/SciAgent-Skills/tree/main/skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment into .opencode/skills/gseapy-gene-enrichment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gseapy-gene-enrichment", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
gseapy-gene-enrichmentGSEA and over-representation analysis (ORA) for RNA-seq and proteomics.
Gseapy Gene Enrichment is an agent skill from jaechang-hits/SciAgent-Skills. GSEA and over-representation analysis (ORA) for RNA-seq and proteomics. Wraps Enrichr for ORA against MSigDB, KEGG, GO, and 200+ databases; runs preranked GSEA on ranked DE gene lists. Outputs enrichment tables and running-score plots. Use after DESeq2 or edgeR for pathway-level interpretation.
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Research & Science, covering Bioinformatics. It works with Python. The repository describes itself as: 197 bioinformatics & life science skills for Claude Code and AI agents — BixBench 92.0% accuracy. RNA-seq, single-cell, drug discovery, proteomics, and more. Powers OmicsHorizon. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 82c862c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pippythonFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
maayanlab.clouddoi.orggseapy.readthedocs.iogithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Gseapy Gene Enrichment loads about 4.1k tokens when it runs. Until then it costs about 80 tokens; SKILL.md has 832 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from jaechang-hits/SciAgent-Skills at commit 82c862c, republished under its MIT licence (© jaechang-hits). 832 words, ~4,077 tokens.
.claude/skills/gseapy-gene-enrichment/SKILL.md (or your agent's skills folder).GSEApy provides Python implementations of GSEA and over-representation analysis (ORA) for interpreting gene expression changes at the pathway level. The enrich module queries the Enrichr API to test a gene list against 200+ databases (GO, KEGG, MSigDB Hallmarks, Reactome, WikiPathways). The prerank and gsea modules run the GSEA algorithm on a pre-ranked gene list or expression matrix — computing normalized enrichment scores (NES) and FDR values for each gene set. GSEApy integrates directly with pandas DataFrames from DESeq2 or scanpy differential expression output, making it the standard Python tool for pathway analysis in RNA-seq workflows.
gseapy, pandas, matplotlibenrich module queries the Enrichr API (requires connection)pip install gseapy
# Verify
python -c "import gseapy; print(gseapy.__version__)"
# 1.1.3Settle these with the user before writing any analysis code.
decisions:
- id: D1
param: analysis_mode
kind: required
source: upstream
ask: "Test only the genes that passed a significance cut (ORA), or the whole ranked list without a cut (GSEA prerank)?"
default: "prerank when the upstream stage yields a full ranking; ORA when it yields a gene list"
- id: D2
param: organism
kind: derived
source: upstream
ask: "Which species are these genes from?"
default: "carried from the upstream dataset"
- id: D3
param: gene_sets
kind: required
source: user
depends_on: [D2]
ask: "Which collections should the genes be tested against - GO terms, pathways, disease or perturbation signatures?"
default: null
- id: D4
param: rnk
kind: optional
source: user
depends_on: [D1]
ask: "What should order the genes - effect size, signed significance, or the test statistic?"
default: "log2FoldChange"
skip_if: "ORA mode - ranking is not used"
- id: D5
param: cutoff
kind: optional
source: user
ask: "How strong must a term's evidence be before it is reported?"
default: 0.05
- id: D6
param: min_size, max_size
kind: optional_conditional
source: user
ask: "Should very small or very broad gene sets be excluded as uninformative?"
default: "15-500 genes"
- id: D7
param: permutation_num
kind: optional_conditional
source: user
ask: "More permutations give finer p-values at proportionally more runtime - is the default enough?"
default: 1000
- id: D8
param: weighted_score_type
kind: optional
source: user
ask: "Should GSEA use the standard weighted enrichment score, or a different weighting for this ranking?"
default: 1
- id: D9
param: seed, threads
kind: never_ask
source: data
reason: "A fixed seed and available CPU cores affect reproducibility and runtime, not the enrichment model."
default: "seed fixed, threads min(4, available_cores)"Two orderings matter here. D3 hangs on D2 because Enrichr's libraries are
species-specific — the catalog itself changes with the organism. D4 hangs on D1
because a ranking metric only exists in prerank mode; under ORA the question has
no answer, which is what skip_if records.
import gseapy as gp
# ORA: test a gene list against GO Biological Process
gene_list = ["TP53", "BRCA1", "CDK2", "CCND1", "MYC", "EGFR", "KRAS", "PTEN"]
enr = gp.enrichr(gene_list=gene_list,
gene_sets=["GO_Biological_Process_2023"],
organism="human",
outdir=None)
print(enr.results.head(5)[["Term", "P-value", "Adjusted P-value", "Genes"]])Test a gene list against pathway databases via the Enrichr API.
import gseapy as gp
import pandas as pd
# Gene list from DESeq2 (significant upregulated genes)
sig_genes = ["TP53", "BRCA1", "CDK2", "CCND1", "MYC", "EGFR",
"KRAS", "PTEN", "RB1", "AKT1", "PIK3CA", "MDM2"]
# Run ORA against multiple databases
enr = gp.enrichr(
gene_list=sig_genes,
gene_sets=[
"GO_Biological_Process_2023",
"KEGG_2021_Human",
"MSigDB_Hallmark_2020",
"Reactome_2022",
],
organism="human",
outdir="enrichr_results/",
cutoff=0.05,
)
# Display top results
results = enr.results
print(f"Enriched terms: {len(results[results['Adjusted P-value'] < 0.05])}")
print(results[results["Adjusted P-value"] < 0.05].sort_values("Adjusted P-value")
.head(10)[["Gene_set", "Term", "Adjusted P-value", "Combined Score"]])Discover the 200+ databases available through Enrichr.
import gseapy as gp
# List all available gene set libraries
libraries = gp.get_library_name(organism="human")
print(f"Available databases: {len(libraries)}")
print("Selected databases:")
for lib in sorted(libraries):
if any(kw in lib for kw in ["GO_Bio", "KEGG", "Hallmark", "Reactome"]):
print(f" {lib}")
# Mouse databases
mouse_libs = gp.get_library_name(organism="mouse")
print(f"\nMouse databases: {len(mouse_libs)}")Run GSEA on a log2 fold-change ranked gene list from differential expression.
import gseapy as gp
import pandas as pd
import numpy as np
# Load DESeq2 results (or create example ranked list)
# deseq_results = pd.read_csv("deseq2_results.tsv", sep="\t", index_col=0)
# ranked = deseq_results["log2FoldChange"].dropna().sort_values(ascending=False)
# Example ranked gene list (gene → log2FC)
np.random.seed(42)
gene_names = [f"GENE_{i}" for i in range(1000)]
log2fc = np.random.normal(0, 2, 1000)
ranked = pd.Series(log2fc, index=gene_names).sort_values(ascending=False)
# Run preranked GSEA against MSigDB Hallmarks
pre_res = gp.prerank(
rnk=ranked,
gene_sets="MSigDB_Hallmark_2020",
threads=4,
min_size=15,
max_size=500,
permutation_num=1000,
outdir="gsea_results/prerank/",
seed=42,
verbose=True,
)
# View results
res_df = pre_res.res2d
sig = res_df[res_df["FDR q-val"] < 0.25]
print(f"Significant gene sets (FDR < 0.25): {len(sig)}")
print(sig.sort_values("NES", ascending=False)[["Term", "NES", "NOM p-val", "FDR q-val"]].head(10))The running enrichment-score curve is GSEApy-specific — draw it with gseaplot. (omics-plotting covers the GSEA bar/dot summary plots instead, see Step 5.)
from gseapy import gseaplot
# pre_res: prerank result from Step 3
top_term = pre_res.res2d.sort_values("NES", ascending=False).index[0]
gseaplot(
rank_metric=pre_res.ranking,
term=top_term,
**pre_res.results[top_term],
ofname="figures/gsea_running_score.png",
)
print(f"Saved figures/gsea_running_score.png ({top_term})")Run ORA, then read skills/data-visualization/omics-plotting/SKILL.md and follow its "GSEA dot plot" recipe on the exported table (→ figures/enrichment_dotplot.png). Map GSEApy's Overlap column to the recipe's GeneRatio.
import gseapy as gp
# enr.results is the enrichment table: Term, Overlap, Adjusted P-value, Genes, ...
enr = gp.enrichr(
gene_list=["TP53", "BRCA1", "CDK2", "CCND1", "MYC", "EGFR",
"KRAS", "PTEN", "RB1", "AKT1", "PIK3CA", "MDM2",
"BCL2", "CDKN1A", "E2F1", "CCNE1"],
gene_sets=["KEGG_2021_Human"],
organism="human",
outdir=None,
cutoff=0.05,
)
enr.results.to_csv("enrichment.csv", index=False)
print(f"ORA terms: {len(enr.results)} -> enrichment.csv")
# Render with the omics-plotting SKILL (`skills/data-visualization/omics-plotting/SKILL.md`) "GSEA dot plot" recipe.Use GSEApy directly on differential expression results.
import gseapy as gp
import pandas as pd
# From DESeq2 output loaded into Python
# deseq_df = pd.read_csv("deseq2_results.tsv", sep="\t", index_col=0)
# deseq_df = deseq_df.dropna(subset=["log2FoldChange", "padj"])
# Simulate DESeq2 output
import numpy as np
np.random.seed(0)
n = 500
deseq_df = pd.DataFrame({
"log2FoldChange": np.random.normal(0, 1.5, n),
"padj": np.random.uniform(0, 1, n),
}, index=[f"GENE{i}" for i in range(n)])
# Significant up/down gene lists for ORA
up_genes = deseq_df[(deseq_df["padj"] < 0.05) & (deseq_df["log2FoldChange"] > 1)].index.tolist()
dn_genes = deseq_df[(deseq_df["padj"] < 0.05) & (deseq_df["log2FoldChange"] < -1)].index.tolist()
print(f"Upregulated: {len(up_genes)}, Downregulated: {len(dn_genes)}")
# ORA on upregulated genes
if up_genes:
enr_up = gp.enrichr(gene_list=up_genes,
gene_sets=["GO_Biological_Process_2023", "KEGG_2021_Human"],
organism="human", outdir=None)
sig_up = enr_up.results[enr_up.results["Adjusted P-value"] < 0.05]
print(f"Enriched terms (upregulated): {len(sig_up)}")
print(sig_up.sort_values("Adjusted P-value").head(5)[["Term", "Adjusted P-value"]])
# Preranked GSEA on full ranked list
ranked = deseq_df["log2FoldChange"].sort_values(ascending=False)
pre = gp.prerank(rnk=ranked, gene_sets="MSigDB_Hallmark_2020",
threads=4, permutation_num=500, outdir="gsea_out/", seed=42)
print(pre.res2d[pre.res2d["FDR q-val"] < 0.25].sort_values("NES", ascending=False)
.head(5)[["Term", "NES", "FDR q-val"]])| Parameter | Default | Range/Options | Effect |
|---|---|---|---|
gene_sets (enrichr) | required | string or list | Database name(s) from Enrichr; use gp.get_library_name() to list |
organism (enrichr) | "human" | "human", "mouse", "fly", "fish", "worm", "yeast" | Species for gene set lookup |
cutoff (enrichr) | 0.05 | 0–1 | Adjusted p-value cutoff for filtering results |
rnk (prerank) | required | pd.Series | Gene → score mapping; sorted descending (log2FC recommended) |
permutation_num (prerank) | 1000 | 100–10000 | Permutations for p-value estimation; 1000 for publication |
min_size (prerank) | 15 | 5–50 | Minimum gene set size; filters small/poorly characterized sets |
max_size (prerank) | 500 | 100–2000 | Maximum gene set size; filters very large generic sets |
threads (prerank) | 4 | 1–64 | CPU threads for permutation |
seed (prerank) | None | integer | Random seed for reproducibility |
weighted_score_type (prerank) | 1 | 0, 1, 1.5 | GSEA weighting; 1 = standard weighted GSEA |
import gseapy as gp
import pandas as pd
conditions = {
"treated_vs_ctrl": ["TP53", "BRCA1", "CDK2", "CCND1", "MYC"],
"treated2_vs_ctrl": ["EGFR", "KRAS", "PTEN", "RB1", "AKT1"],
}
results = {}
for label, genes in conditions.items():
enr = gp.enrichr(gene_list=genes,
gene_sets=["MSigDB_Hallmark_2020"],
organism="human",
outdir=None)
sig = enr.results[enr.results["Adjusted P-value"] < 0.05]
results[label] = set(sig["Term"])
print(f"{label}: {len(sig)} significant Hallmark terms")
# Overlap
shared = results["treated_vs_ctrl"] & results["treated2_vs_ctrl"]
print(f"Shared terms: {shared}")import gseapy as gp
import pandas as pd
from pathlib import Path
# Load multiple DESeq2 result files
comparisons = {
"treat_vs_ctrl": "deseq_treat_vs_ctrl.tsv",
"drug_vs_ctrl": "deseq_drug_vs_ctrl.tsv",
}
for name, file in comparisons.items():
# df = pd.read_csv(file, sep="\t", index_col=0)
# ranked = df["log2FoldChange"].dropna().sort_values(ascending=False)
# Example: generate synthetic ranked list
import numpy as np
ranked = pd.Series(np.random.normal(0, 1, 800),
index=[f"G{i}" for i in range(800)]).sort_values(ascending=False)
pre = gp.prerank(
rnk=ranked,
gene_sets=["MSigDB_Hallmark_2020", "KEGG_2021_Human"],
threads=4,
permutation_num=500,
outdir=f"gsea_results/{name}/",
seed=42,
)
sig = pre.res2d[pre.res2d["FDR q-val"] < 0.25]
print(f"{name}: {len(sig)} significant gene sets")
pre.res2d.to_csv(f"gsea_results/{name}/all_results.tsv", sep="\t")| Output | Format | Description |
|---|---|---|
enr.results | DataFrame | ORA results: Term, P-value, Adjusted P-value, Combined Score, Genes |
pre_res.res2d | DataFrame | Prerank results: Term, ES, NES, NOM p-val, FDR q-val, Gene % |
gsea_results/*.csv | CSV | Saved enrichment tables per database |
gsea_results/*.pdf | GSEA running-score plots (one per gene set) | |
enrichment_dotplot.png | PNG | Dot plot of top enriched terms |
gseaplot output | PNG/PDF | Running enrichment score + ranked list plot |
| Problem | Cause | Solution |
|---|---|---|
ConnectionError in enrichr | No internet or Enrichr API down | Check https://maayanlab.cloud/Enrichr/; use local gene sets with gene_sets="path/to/gmt" |
| No significant terms returned | Gene list too small or wrong gene ID format | Use ≥10 genes; ensure HGNC symbols (not Ensembl IDs); convert with pyensembl |
| Prerank returns all NES ≈ 0 | Ranked list not sorted or too few genes | Verify rnk is sorted descending; check min_size ≤ gene set sizes |
KeyError in gene set | Gene set name misspelled | Use gp.get_library_name() to get exact database names |
| Low NES with FDR > 0.25 | Signal is weak or permutation count too low | Increase permutation_num to 1000; check raw p-values in NOM p-val |
| GSEA plot shows flat line | Gene set has no intersection with ranked list | Check gene naming; confirm gene set species matches data |
| Memory error during prerank | Large expression matrix + high permutations | Reduce permutation_num; use prerank instead of gsea when possible |
| Enrichr results differ from Java GSEA | Different gene set versions | Specify exact database version string from gp.get_library_name() |
© jaechang-hits, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment of jaechang-hits/SciAgent-Skills.
Open the folder on GitHubat commit 82c862c
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in jaechang-hits/SciAgent-Skills, which our catalogue first saw on October 7, 2026.
Gseapy Gene Enrichment next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Gseapy Gene Enrichment this skilljaechang-hits/SciAgent-Skills | 374 | 1 repos | ~4.1k | Automated safety check: Pass | MIT | |
| Alphagenome Single Variant Analysisgoogle-deepmind/science-skills | 3.2k | 2 repos | ~3k | Automated safety check: Notes | Apache-2.0 | |
| 13C Metabolic Flux AnalysisK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Singlecell Qcxuzhougeng/wisp-science | 1k | — | ~1.6k | Automated safety check: Pass | AGPL-3.0 | |
| Trackplotygidtu/trackplot | 109 | — | ~1.9k | Automated safety check: Pass | BSD-3-Clause | |
| UniProt Database Accessdavila7/claude-code-templates | 33k | 14 repos | ~1.7k | Automated safety check: Pass | MIT |
google-deepmind/science-skills
Analyzes genetic variant effects on gene expression (RNA-seq), chromatin accessibility (DNASE), histone marks (ChIP), and transcription factors using the AlphaGenome API.
K-Dense-AI/scientific-agent-skills
Estimates reaction fluxes inside cells from steady-state carbon-13 labeling data with a bundled mfapy-based solver, and reports which fluxes the data pin down.
xuzhougeng/wisp-science
A skill your agent uses when designing, reviewing, or implementing single-cell RNA-seq QC in Python or R with a human-in-the-loop, data-driven approach.
ygidtu/trackplot
Generate sashimi-style genome visualization plots (coverage, line, heatmap, IGV read-by-read, HiC, circRNA, motif) from BAM/bigWig/depth/HiC inputs.
davila7/claude-code-templates
Queries the UniProt REST API directly to search proteins, fetch FASTA sequences, map IDs between databases and read Swiss-Prot and TrEMBL entries.
QING1105/ezST
End-to-end 10x Visium spatial transcriptomics analysis workflow with staged execution and human review gates.
jaechang-hits/SciAgent-Skills
NEB-IRC activation energy pipeline for reaction barriers using GFN2-xTB and pysisyphus.
jaechang-hits/SciAgent-Skills
3Dmol.js WebGL molecular visualization emitted as self-contained HTML.
jaechang-hits/SciAgent-Skills
Constraint-based (COBRA) analysis of genome-scale metabolic models: FBA, FVA, knockouts, flux sampling, production envelopes, gapfilling, media optimization.
jaechang-hits/SciAgent-Skills
Read, write, and edit ChemDraw CDX/CDXML files with RDKit's rdkit.Chem.rdChemDraw plus direct XML editing, always paired with a rendered PNG.
jaechang-hits/SciAgent-Skills
Programmatic PubMed access via NCBI E-utilities REST API. An agent skill from jaechang-hits/SciAgent-Skills.
jaechang-hits/SciAgent-Skills
Scaffold a new SciAgent-Skills entry. An agent skill from jaechang-hits/SciAgent-Skills.
Works with
Categories
GSEA and over-representation analysis (ORA) for RNA-seq and proteomics. Gseapy Gene Enrichment is an agent skill from jaechang-hits/SciAgent-Skills. GSEA and over-representation analysis (ORA) for RNA-seq and proteomics.
Gseapy Gene Enrichment fits situations like: tasks that involve Bioinformatics.
Run `npx skills add jaechang-hits/SciAgent-Skills --skill gseapy-gene-enrichment -a claude-code`. Or copy the skill folder (skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment in jaechang-hits/SciAgent-Skills) into .claude/skills/gseapy-gene-enrichment in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jaechang-hits/SciAgent-Skills --skill gseapy-gene-enrichment -a codex`. Or copy the skill folder (skills/genomics-bioinformatics/rnaseq/gseapy-gene-enrichment in jaechang-hits/SciAgent-Skills) into .agents/skills/gseapy-gene-enrichment in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jaechang-hits/SciAgent-Skills --skill gseapy-gene-enrichment -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gseapy-gene-enrichment, .gemini/skills/gseapy-gene-enrichment, .github/skills/gseapy-gene-enrichment and .opencode/skills/gseapy-gene-enrichment in your project.
Going by SKILL.md and its folder, Gseapy Gene Enrichment needs the command-line tools its instructions call (pip and python). Our summary lists: Python 3.
SKILL.md names 4 domains. As links in the text: maayanlab.cloud, doi.org, gseapy.readthedocs.io and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Gseapy Gene Enrichment is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.1k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Gseapy Gene Enrichment: Alphagenome Single Variant Analysis (google-deepmind/science-skills, 3.2k stars), 13C Metabolic Flux Analysis (K-Dense-AI/scientific-agent-skills, 48k stars), Singlecell Qc (xuzhougeng/wisp-science, 1k stars) and Trackplot (ygidtu/trackplot, 109 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jaechang-hits (a GitHub user) maintains it in jaechang-hits/SciAgent-Skills, which has 374 GitHub stars. The repository holds 169 skills in this directory. The repository was last updated on September 29, 2026.
Source: jaechang-hits/SciAgent-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.