Skip to content

Releases: EBISPOT/GrEBI

Documentation (74aef794aab9b3d0e7a52d01c15c48a86d043e09)

Choose a tag to compare

docs-74aef794aab9b3d0e7a52d01c15c48a86d043e09

docs: the MCP server gets its own page, rendered from the server's ca…

Documentation (1aabf4176689b7314ba2a5b5cd0552191167d029)

Choose a tag to compare

docs-1aabf4176689b7314ba2a5b5cd0552191167d029

api: an OpenAPI description, served and rendered as the docs' API ref…

Documentation (e96f0f0fa6f172625970378471832cf8bffcd626)

Choose a tag to compare

download_local.sh: mount a relocated ./tmp into the orchestrator too

The docs workflow now puts ./tmp on the runner's /mnt partition before the
download runs, and inside the download's orchestrator container that symlink
pointed at nothing: Nextflow's mkdir failed with "cannot create directory
tmp: File exists". Resolve ./tmp and bind-mount its real path, exactly as
dataload_local.sh has done since the relocation was introduced. The two
scripts now also trigger the docs workflow when they change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documentation (d06741bce32ceb46024f3f3db1e126b8813f0ac1)

Choose a tag to compare

grebi_ui: the node page's Links tab is back, without the source id chips

The tab had been commented out, leaving NodeLinks reachable from its tests
only. Its source id chips now duplicate the page header, so they are gone; what
remains is the per-type link tabs (today the chemical interactions of a gene,
with their count). The node page asks getNodeLinksTabs once the node is loaded
and shows the Links tab only when the node has at least one link tab with
something in it, so other nodes see no empty tab. Choosing a link tab now keeps
the page's own parameters (tab, lang) in the URL instead of replacing them.

Closes #65

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documentation (94b7f227b58349008e2c3f099603bc09372e1f02)

Choose a tag to compare

grebi_ui: read a node in any language it has

The node page shows a language picker when the node lists more than one
language in grebi:languages, keeps the choice in the URL's lang parameter
(which the page already sent to the API) and preserves it across tab
changes. The title, description and breadcrumb use the chosen language's
value, falling back to the graph's own language; getName prefers an
untagged value everywhere, so search results and links never show a
translation that happens to come first. Translated values in the property
table carry a chip with their language.

The picker names languages through Intl.DisplayNames instead of mapping
language codes to country flags, so the flag dependency goes.

Closes #61

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documentation (6c943bd4ba8aa6d6ff6ae6008e561ce4b5d14055)

Choose a tag to compare

download_local.sh: mount a relocated ./tmp into the orchestrator too

The docs workflow now puts ./tmp on the runner's /mnt partition before the
download runs, and inside the download's orchestrator container that symlink
pointed at nothing: Nextflow's mkdir failed with "cannot create directory
tmp: File exists". Resolve ./tmp and bind-mount its real path, exactly as
dataload_local.sh has done since the relocation was introduced. The two
scripts now also trigger the docs workflow when they change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documentation (67f42bbf60f973a7da8397c837f6d875d5d818f9)

Choose a tag to compare

grebi_ui: the node page's Links tab is back, without the source id chips

The tab had been commented out, leaving NodeLinks reachable from its tests
only. Its source id chips now duplicate the page header, so they are gone; what
remains is the per-type link tabs (today the chemical interactions of a gene,
with their count). The node page asks getNodeLinksTabs once the node is loaded
and shows the Links tab only when the node has at least one link tab with
something in it, so other nodes see no empty tab. Choosing a link tab now keeps
the page's own parameters (tab, lang) in the URL instead of replacing them.

Closes #65

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documentation (5b8f731f9c6ca1daa7f38453cbe429243edba67e)

Choose a tag to compare

bulk identifier lookup: many identifiers in, the nodes they name out

Resolving a pasted list of identifiers took one /nodes?grebi:sourceIds= request
each, and a CURIE in the wrong prefix case or an IRI found nothing.

POST /api/v1/graphs/{graph}/lookup takes up to 1,000 identifiers (a JSON object
with an ids array, a bare array, or plain text one per line; the cap is
GREBI_MAX_LOOKUP_IDS). Each is matched as given, lower-cased, and as the prefix
service normalises it, against every node's source ids, node id and curie in
one query (array overlap on the GIN index, = ANY on the btrees); matchNames=true
also matches names ignoring case. The answer keeps the order given: results with
the nodes each identifier names, notFound, and truncated when the query hit its
limit of ten nodes per identifier. Whether an identifier matches depends only on
its own forms, never on the others in the request. resolve=true and lang return
the full nodes in a language, as the node endpoint does. The MCP lookup_nodes
tool takes the same options; its ids may be an array or one string of lines.

The UI gets /graphs/:graph/lookup: a textarea (one per line, commas and tabs
also separate), the results table with node links, types and datasources,
unmatched identifiers marked as such, and a CSV download of the answer. The
lookup lives in the URL (?ids=…&matchNames=true) so it can be linked to, and
the search page points at it. The endpoint was exercised end to end against the
test_ubergraph stack, prefix service included.

Closes #77

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documentation (9544b96d6b62154e6fb4c9d251d002c2cd05f2a0)

Choose a tag to compare

tests: add test_primekg E2E subgraph

Seven real kg.csv rows around psoriasis (drug indication and
contraindication, gene association, parent disease) plus one row each
that reaches an HPO, GO and UBERON term, with stand-in ontology terms
carrying the padded ids. The build must give 11 nodes, not 17: each of the
six ontology terms one node carrying both the PrimeKG and OntologyTerms
datasources, with every PrimeKG edge ending on it (#58). Snapshots
generated and then compared clean on a fresh local run.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Documentation (524d71b902c9f5f96f186f89e72531d769f77c0b)

Choose a tag to compare

tests: add test_primekg E2E subgraph

Seven real kg.csv rows around psoriasis (drug indication and
contraindication, gene association, parent disease) plus one row each
that reaches an HPO, GO and UBERON term, with stand-in ontology terms
carrying the padded ids. The build must give 11 nodes, not 17: each of the
six ontology terms one node carrying both the PrimeKG and OntologyTerms
datasources, with every PrimeKG edge ending on it (#58). Snapshots
generated and then compared clean on a fresh local run.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>