Skip to content

Releases: aimed-lab/SPINNER

v1.141 — JIT warm-up + map-first full-height view

12 Jun 03:39
d83017a

Choose a tag to compare

Highlights since v1.139

  • Map-first default view (1.141). The explorer boots with the results table collapsed, giving the network the full canvas height. Expand/maximize still available.
  • Canvas fills the viewport (1.141). Fixed a topbarless layout bug that reserved a non-existent 56px topbar, leaving a dead band; the sidebar and canvas now extend to the bottom and the canvas meets the results bar flush.
  • JIT startup warm-up (1.140). The numba WIPER/WINNER kernels are pre-compiled in a background thread at boot, so the first analysis is ~2s instead of ~30s. The server accepts connections immediately while warming.

See CHANGELOG.md for details.

v1.139 — explorer readability + localhost fix

12 Jun 01:20
9885805

Choose a tag to compare

Highlights since v1.135

  • Left size dock (1.138). Node-size and edge-size legends + their controllers now live in a collapsible left panel beside the canvas (out of the gear popover), freeing the network visualization. Collapse handle + a "Side panel" toggle.
  • Node size-ratio slider + zoom-steady sizing (1.136). A 1–100 largest:smallest ratio control; node/edge/label sizes stay visually steady as you zoom.
  • Off-screen culling / Declutter (1.136). When zoomed in, nodes whose center leaves the viewport (and their edges) are hidden.
  • Live view-count badge + legend toggle (1.137). The header N/total counts reflect what's actually drawn and update on pan/zoom.
  • Blank-page fix on http://localhost (1.139). Server binds both IPv4 127.0.0.1 and IPv6 ::1 (loopback-only), so localhost works regardless of how it resolves.

See CHANGELOG.md for details.

v1.135 — Assistant flicker fix + offline fallback

09 Jun 07:11
2592fb4

Choose a tag to compare

Highlights

  • Assistant offline fallback (1.135). When the shared agent service (:8088) is unreachable, free-form network-analysis requests now run SPINNER's own WIPER/WINNER engines instead of erroring — summarizing on-screen results or re-running POST /api/analyze, and returning the top nodes by WINNER leverage + top WIPER2 edges (top N honored). Network-only: no expression data, no API key, no LLM. Drug-target ranking still needs the agent service + GeneTerrain.
  • Assistant flicker fix (1.134). The copilot panel no longer flickers on open or on each reply: a single chat bubble is reused in place (no add/remove churn), and the drawer is promoted to its own compositor layer.

See CHANGELOG.md for details.

v1.133 — collapsed results bar fix

07 Jun 19:00
08c3b4f

Choose a tag to compare

Collapsing the results table now leaves an always-visible, clickable bar pinned to the viewport bottom ('N / N edges · click to expand') so it can always be restored. See CHANGELOG.md.

v1.132 — results table redesign

07 Jun 18:33
b839dfb

Choose a tag to compare

The Edges/Nodes results table now scrolls internally within a fixed-height region (sticky headers, ~7 rows by default) instead of growing the page. New header controls: row-count chip, maximize/restore, and collapse/expand. See CHANGELOG.md.

v1.131 — copilot analyzes the current network

07 Jun 18:16
441da82

Choose a tag to compare

Patch on 1.130: the Assistant copilot now operates on the currently-loaded network (sends the on-screen edge list to the agent service), and analyze/geneterrain requests route to the copilot instead of the local parser. See CHANGELOG.md.

v1.130 — Assistant copilot

07 Jun 18:07
347e753

Choose a tag to compare

The Assistant drawer now drives the full SPINNER → GeneTerrain drug-target workflow via a shared LLM agent service.

  • Free-form requests stream to a shared agent service (Grok-backed) that calls spinner_analyzegeneterrain_fusebuild_geneterrain_link; tool activity and the resulting GeneTerrain link render in-chat.
  • Terse UI commands still run locally and instantly.
  • SPINNER stays network-only — the LLM and API key live only in the shared service (spinner-agent-console).

Full notes: CHANGELOG.md

v1.120 — Open in GeneTerrain handoff

07 Jun 06:21
e2e0557

Choose a tag to compare

SPINNER stays network-only; this release adds a one-click bridge to the standalone GeneTerrain (GTKM) drug-target map.

Open in GeneTerrain

  • Export → "Open in GeneTerrain" serializes the current WINNER node scores (network-leverage / potency layer) as a gene\tscore TSV, base64-encodes it, and opens GeneTerrain's Targets view with the data in the URL fragment: …/?view=targets#net=<base64 TSV> — no hosting needed.
  • GeneTerrain fuses that with a SIGnature gene-importance matrix to rank targets by potency × importance × cross-cell selectivity.
  • The #net=/?net= contract is agent-operable directly from /api/analyze output — one workflow, two front doors (human button / agent URL).
  • No expression/attribution data enters SPINNER's scoring.

Full notes: CHANGELOG.md

v1.110 — Deep-link loader + dense-graph robustness

03 Jun 03:33
b5ba557

Choose a tag to compare

Builds on the 1.100 GUI redesign. The POST /api/analyze contract is unchanged (additive summary fields only).

Deep-link loader

Launch SPINNER with an external dataset at boot:

  • Embedded hash payload#data=<base64 JSON>, #edges=<base64 TSV>, #text=<URI-encoded TSV> (self-contained link, no hosting needed)
  • ?edges=<url> — fetches a tab-separated edge list cross-origin (good for large datasets)
  • postMessage({type:'spinner:load', ...}) from a parent frame, with a spinner:loaded ack
  • Query options across all paths: ?title=, ?iterations=, ?novel=1; failed fetch falls back to the demo network with a chat notice

Dense-graph robustness

  • WIPER1, WIPER2, and WINNER are scored independently and each guarded against (RuntimeError, MemoryError, OverflowError) — raw edges plus whichever engines succeed always return, with summary.warnings and per-engine wiper1Available/wiper2Available/winnerAvailable flags, plus an optional maxPathsPerPair request param
  • Recursion limit + request-thread C-stack raised so deep-but-bounded WIPER path enumeration completes
  • Edges fall back to raw weight for width/filtering/ranking when the selected WIPER metric is unavailable, so a degraded graph still renders its edges

Full changelog: see CHANGELOG.md