Repository navigation
Viewer on the template's standard Viewer page - #294
t0mdavid-m wants to merge 38 commits into
Conversation
…ary, template, app Adds a 'Four layers' section to the agent rules in CLAUDE.md (what each layer holds and never holds, a test for each, and the two rules that keep them apart), glossary entries for the visualization library and panel sources, and pointers in the upstream-to-template, build-insight-dashboard and add-visualization skills. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
show_viewer(ViewerSpec) lists the datasets, applies a pending pick, draws the first experiment's selector with its buttons, the view bar of its kind of dataset and every experiment with its own state. Kinds of dataset (a run, a comparison, a file) carry their catalog, presets, renderers and buttons; an experiment made of several runs is shown as Files of or as Single run | Comparison. View MS data uses it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
components, presets and default_layout of a DatasetKind may be functions of the first experiment's context, for kinds whose ready-made views depend on what a dataset holds (a comparison shows the QC of its own kind). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
…emplate into claude/project-thread-f170bl
Later experiments show datasets of the first one's kind, so they get no switch; the locked whole is offered only to an experiment without one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
…emplate into claude/project-thread-f170bl
…ewer page The Viewer page is drawn by the template's show_viewer: runs and comparisons are two kinds of dataset, Single run | Comparison is the member switch, and the buttons, views, missing-analysis dialogs and picks work as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
|
The Linux desktop e2e failure (
The installed app fails as soon as the comparison GO view is drawn, so this check will stay red on develop too until openms-insight releases the Generated by Claude Code |
openms-insight main (0.7.6.dev0, with SeriesPlot bars and the latest Table and sequence view fixes) as a wheel in dev-wheels/, so the desktop installers can be tested. Revert to a PyPI pin before release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
With an openms-insight that can compare proteoforms, the page read the precursor mass of stored masses before any were entered and failed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
…moved The 🎓 button beside the experiment selector shows what each component shows and how to use it, as a tooltip beside its title. The captions under the plots and the GO info box are gone; a picked PrSM whose run is not in the workspace falls back to the first one that is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Built with the OpenMS FDmerge tools of the desktop build. The lysate example's most frequent mass shift is now an acetylation, so its test no longer pins the name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
…ialog member_switch() draws the switch outside the standard Viewer, and whole_kind/shown_whole tell the whole of an experiment from its first run when both have one id (run folders). edit_comparison() is a dialog with one tab per comparison step, Start over and Done. The example Results page offers both for an experiment of several runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
…into claude/project-thread-f170bl # Conflicts: # src/Workflow.py
The conditions, filter, missing values, normalization and test are tabs of the template's Edit comparison dialog (edit_comparison), with Start over and Done, as in OpenDDA. quant_cells.comparison_steps(session) returns the steps, what Done saves and what Start over resets; settings_form stays as a wrapper. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
The comparison's three further runs are kept as examples of their own so the Viewer can show each run of the comparison; the retention-time window is narrowed to 45 s around the proteoforms that differ most, which keeps the example data at about the size it had. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
…picks - Abundance per run draws every proteoform picked in the volcano. - Feature intensity, CV and the other box plots mark the picked point. - The PrSM sequence view says when the picked PrSM has no spectrum in the workspace and which one it shows instead. - openms-insight development build 0.7.6.dev4 (highlighted points, volcano toolbar). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
…ight dev5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
|
The Generated by Claude Code |
- Template Viewer collects Insight reruns into one. - Quantity per run drawn as points, not connected lines. - openms-insight dev build 0.7.6.dev6 (help icon in the toolbar row, wrapped plot titles). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
…red (template) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
The comparison steps (missing values, imputed values, normalization, p-values), the volcano, PCA and clustered heatmap now take their settings from src/viz, the panels the template shares between apps. Groups get the library's colours, the same in every panel and app. The profile and the comparison table stay here: FLASHApp draws them its own way. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN
What it does
The Explore results page no longer wires the experiment selector, view bars and experiments by hand. It describes its data in a
ViewerSpec, and the template'sshow_viewerdraws the page.The spec has two kinds of dataset:
render_grid. Each experiment keeps its own StateManager, so 📌 and ↺ still work.The following works as before:
Single run | Comparison
A comparison is listed once. The Single run | Comparison switch beside the selector shows either the comparison as a whole or one of its runs, picked in a run selector, with the run views (Deconvolution, Native, Lysate). This is the template's switch, so OpenDDA and the template example behave the same.
Edit comparison as a dialog
Edit comparison opens the template's dialog, with one tab per step: Runs and conditions (which runs are compared, their condition and replicate, and the level: features, proteoforms or proteins), Filter, Missing values, Normalize and Test. Start over with the recommended settings resets them; Done computes the comparison again.
Label-free example
The label-free example (spike-in 1x vs 0.1x) now ships all four of its runs, so each one can be opened with Single run. To keep the example data small, every run is cut to the 45 s in which the proteoforms that differ most elute. The four label-free runs take 98 MB, compared with 73 MB for the one run shipped before. The comparison keeps five changed proteoforms, four higher and one lower in spike-in 1x.
The picked proteoform in every plot
Lysate view
The tables of the Lysate view are two to a row and taller, so their columns are readable.
Plots from the template's visualization library
The plots OpenDDA draws the same way now come from the template's
src/viz/, fed from FLASHApp's comparison results and kept in FLASHApp's per-dataset cache:go_panel.py): category selectors, the number of selected proteins on a line of its own with Selection | All proteins, and paginated Insight tables.comparison_steps.py): where values are missing, the values imputation fills in, the boxes per sample before and after normalization, and the p-value histogram.src/render/postprocessing_plots.pyis gone;src/render/series.pyonly adds FLASHApp's cache folder and info texts to the library'sshow_series.volcano_settings,pca_settings/most_variableandclustered_settings.group_colors), so a condition has the same colour in every panel here and in OpenDDA.The abundance profile and the comparison table stay in FLASHApp, which draws them its own way.
Cleaner viewer
src/render/teaching.py. They replace the grey captions under the plots, the default-layout caption, the "Comparing … of …" line and the GO info box.Depends on
SeriesPlotbox and bar modes). This branch uses its development build fromdev-wheels/, which must become a PyPI pin before a release.Screenshots (example workspace)
Screenshots of the library's group colours (PCA, clustered heatmap) are still to come.
Tests
pytest tests/passes: 1479 passed.🤖 Generated with Claude Code
https://claude.ai/code/session_01FkEGen2HSCa8BFE1JW4jxN