Add ReactomeGSA tools: Reactome does do gene set analysis - #34
Merged
Merged
Conversation
Reactome has two analysis services and this server knew about one.
AnalysisService over-representation over a list of identifiers already here
ReactomeGSA gene set analysis over an expression matrix new
PADOG, Camera, ssGSEA, terapadog
Camera is described by the service itself as "a gene set analysis algorithm
similar to the classical GSEA algorithm".
The gap was found the hard way. A Reactome chatbot, asked "I want to run a gsea
with my list of genes", answered that the information was not available in the
Reactome Knowledgebase and offered fgsea, bigomics and a YouTube tutorial.
Reactome can do it, at gsa.reactome.org. Nothing here could reach the service.
Five read-only tools: methods, data types, dataset search, examples, sources.
**The descriptions carry the distinction that caused the confusion**, because a
description is the whole of what a model reads before choosing a tool. Gene set
analysis needs an expression matrix with sample groups; a user holding a list of
gene names wants over-representation, whatever they called it. Both
`reactome_gsa_methods` and `reactome_gsa_data_types` say so and name
`reactome_analyze_identifiers` as the alternative.
**Submitting an analysis is deliberately not here.** POST /analysis takes the
whole expression matrix inline -- not something a chat user can paste, and not
something to push through a tool result against a 40,000 character cap. What is
reachable is covered instead: ReactomeGSA can load from Expression Atlas, Single
Cell Expression Atlas, GREIN and GEO, so `reactome_gsa_search_datasets` lets
someone with no data of their own be pointed at a published dataset. Running it
is the web interface, the Galaxy tool, or the R package, and the tools say so.
One trap worth the comment it carries: GSA's species filter wants the NAME.
`species=9606` returns zero results with no error, while `species=Homo sapiens`
returns 100 -- the exact opposite of the Content Service's eventsHierarchy,
which wants the id and answers HTTP 500 for the name. Both the tool description
and the empty-result message say which.
Parameter prose is summarised to names only: ten parameters with a paragraph
each is most of a context window spent before the question is answered.
53 -> 58 tools, 90 -> 101 tests, sweep covers all 58 with 21 content
expectations and is clean. Coverage thresholds raised to match.
Shapes verified against the live service 2026-09-14; the Galaxy CLI
(reactome/reactome_galaxy) was the pointer to this service existing at all.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reactome has two analysis services. This server knew about one.
AnalysisServicegsa.reactome.org)Camera is described by the service itself as "a gene set analysis algorithm similar to the classical GSEA algorithm".
How the gap was found
A Reactome chatbot, asked "I want to run a gsea with my list of genes", replied that the information was not available in the Reactome Knowledgebase — then offered
fgsea, bigomics.ch and a YouTube tutorial.Reactome can do this. Nothing here could reach the service that does it, so a Reactome user was sent to someone else's tools.
Pointer to its existence: the Galaxy CLI (
reactome/reactome_galaxy), which wraps both services.Five read-only tools
reactome_gsa_methods,reactome_gsa_data_types,reactome_gsa_search_datasets,reactome_gsa_examples,reactome_gsa_sources.The descriptions carry the distinction that caused the confusion, because a description is the whole of what a model reads before choosing. Gene set analysis needs an expression matrix with sample groups; a user holding a list of gene names wants over-representation, whatever they called it. Two of the tools say so explicitly and name
reactome_analyze_identifiersas the alternative.Submitting an analysis is deliberately absent
POST /analysistakes the entire expression matrix inline — not something a chat user can paste, and not something to push through a tool result against a 40,000-character cap.What is reachable is covered instead. ReactomeGSA loads from Expression Atlas, Single Cell Expression Atlas, GREIN and GEO, so
reactome_gsa_search_datasetslets someone with no data of their own be pointed at a published dataset:Actually running one is the web interface, the Galaxy tool, or the R package — and every tool says so.
A trap worth the comment it carries
GSA's species filter wants the name:
The exact opposite of the Content Service's
eventsHierarchy, which wants the id and answers HTTP 500 for the name. Both the tool description and the empty-result message say which, because a filter that silently returns nothing is the failure mode this repo has spent the week removing.Verification
npm run checkgreen🤖 Generated with Claude Code