You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add comprehensive documentation of openms-insight (t0mdavid-m/openms-insight):
Vue.js-based Streamlit custom components for interactive MS data visualization
with cross-component linked selection, multi-resolution downsampling, server-side
pagination, and automatic disk caching. Includes visualization decision guide
comparing pyopenms-viz vs openms-insight use cases.
https://claude.ai/code/session_011dutf865eEBg2bXnbBa7N9
Copy file name to clipboardExpand all lines: docs/webapp-agent-investigation.md
+86-15Lines changed: 86 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -84,8 +84,54 @@ df.plot(kind="mobilogram") # Ion mobility
84
84
```
85
85
Outputs standard Plotly/Bokeh/matplotlib figures compatible with `st.plotly_chart()`.
86
86
87
-
### openms-insight
88
-
Not found as a public repository or package. May be planned/unreleased or known by a different name. The closest analogues are the existing OpenMS WebApps (TOPPView Lite, StreamSage, UmetaFlow, etc.). **Clarification from the team is needed** on what this refers to.
87
+
### openms-insight (v0.1.13+)
88
+
[GitHub: t0mdavid-m/openms-insight](https://github.com/t0mdavid-m/openms-insight) — A Python library providing **interactive Vue.js-based Streamlit custom components** for mass spectrometry data visualization. Created by Tom David Muller (Kohlbacher Lab, co-lead author of the OpenMS WebApps paper). Installable via `pip install openms-insight`.
89
+
90
+
**Five visualization components:**
91
+
92
+
| Component | Technology | Purpose |
93
+
|-----------|-----------|---------|
94
+
|**Table**| Tabulator.js | Server-side paginated, filterable, sortable tables with CSV export and custom formatters (scientific, signed, badge) |
95
+
|**LinePlot**| Plotly.js | Stick-style mass spectrum visualization with peak highlighting, selection, annotations, and SVG export |
from openms_insight import Table, Heatmap, LinePlot, StateManager
114
+
import polars as pl
115
+
116
+
data = pl.scan_parquet("features.parquet")
117
+
state = StateManager()
118
+
119
+
table = Table(
120
+
cache_id="feature_table", data=data,
121
+
filters={"selected": "feature_id"},
122
+
interactivity={"selected": "feature_id"},
123
+
)
124
+
heatmap = Heatmap(
125
+
cache_id="feature_map", data=data,
126
+
filters={"selected": "feature_id"},
127
+
x_col="RT", y_col="mz", value_col="intensity",
128
+
)
129
+
130
+
table() # Render table
131
+
heatmap() # Render heatmap — linked to table selections
132
+
```
133
+
134
+
**Relationship to pyopenms-viz:** While pyopenms-viz provides single-line DataFrame plotting (matplotlib/Plotly/Bokeh backends), openms-insight provides richer interactive components with cross-component state, server-side pagination, and caching. They are complementary — pyopenms-viz for quick static/simple interactive plots, openms-insight for complex interactive dashboards with large datasets.
89
135
90
136
---
91
137
@@ -190,8 +236,10 @@ async for message in query(
190
236
│ └── SKILL.md # How to create TOPP-based workflows
191
237
├── pyopenms-tools/
192
238
│ └── SKILL.md # How to use pyopenms in Streamlit
193
-
└── visualization/
194
-
└── SKILL.md # How to use pyopenms-viz
239
+
├── visualization/
240
+
│ └── SKILL.md # How to use pyopenms-viz
241
+
└── openms-insight/
242
+
└── SKILL.md # How to use openms-insight interactive components
195
243
```
196
244
197
245
### Approach B: Streamlit Chat Interface with LLM Backend
@@ -315,6 +363,11 @@ Placed in `.claude/skills/` for progressive disclosure:
315
363
316
364
### Visualization with pyopenms-viz
317
365
[Examples using ms_plotly backend with st.plotly_chart()]
366
+
367
+
### Interactive Dashboards with openms-insight
368
+
[Examples using Table, Heatmap, LinePlot, VolcanoPlot, SequenceView]
369
+
[StateManager for cross-component linked selection]
370
+
[When to use openms-insight vs pyopenms-viz]
318
371
```
319
372
320
373
### 5.3 Tool Parameter Database
@@ -426,9 +479,10 @@ pytest tests/
426
479
**Deliverables**:
427
480
1.`.claude/skills/openms-webapp-builder/SKILL.md` — Core patterns and rules
428
481
2.`.claude/skills/topp-tools/SKILL.md` — TOPP tool reference with parameters
6.`tools/workflow_templates/` — Example workflow specifications
432
486
433
487
### Phase 2: Agent Prototype — Single-Agent with Claude Agent SDK
434
488
@@ -484,27 +538,28 @@ Agent: Your app is ready! It includes:
484
538
485
539
### Open Questions
486
540
487
-
1.**What is "openms-insight"?** Not found as a public tool. Needs clarification — is it planned, internal, or known by another name?
488
-
489
-
2.**Target users**: Are the end users bioinformaticians comfortable with CLI, or do they need a fully web-based experience? This determines whether Approach A (SDK) or Approach C (hybrid) is better.
541
+
1.**Target users**: Are the end users bioinformaticians comfortable with CLI, or do they need a fully web-based experience? This determines whether Approach A (SDK) or Approach C (hybrid) is better.
490
542
491
-
3.**Deployment model**: Will generated apps run locally, in Docker, or on a shared server? This affects the preview/testing strategy.
543
+
2.**Deployment model**: Will generated apps run locally, in Docker, or on a shared server? This affects the preview/testing strategy.
492
544
493
-
4.**TOPP tool availability**: The agent needs access to TOPP tool binaries to generate `.ini` files and test workflows. This requires the full Docker image (`Dockerfile`, not `Dockerfile_simple`).
545
+
3.**TOPP tool availability**: The agent needs access to TOPP tool binaries to generate `.ini` files and test workflows. This requires the full Docker image (`Dockerfile`, not `Dockerfile_simple`).
494
546
495
-
5.**Scope of generation**: Should the agent generate:
547
+
4.**Scope of generation**: Should the agent generate:
496
548
- (a) Complete standalone apps from scratch?
497
549
- (b) New workflows/pages within the existing template?
498
550
- (c) Both, depending on complexity?
499
551
500
-
6.**Model selection**: Claude Opus for planning/reviewing, Claude Sonnet for code generation (faster, cheaper), Claude Haiku for simple validation tasks?
552
+
5.**Model selection**: Claude Opus for planning/reviewing, Claude Sonnet for code generation (faster, cheaper), Claude Haiku for simple validation tasks?
553
+
554
+
6.**Visualization library choice**: When should generated apps use pyopenms-viz (simple, single-line plots) vs openms-insight (interactive dashboards with linked components, large dataset support)? The agent needs clear heuristics — e.g., use openms-insight when the app needs cross-component selection, server-side pagination, or million-point heatmaps.
501
555
502
556
### Risks
503
557
504
558
| Risk | Mitigation |
505
559
|------|------------|
506
560
| Generated code has incorrect TOPP tool parameters | Validate against `.ini` files; use `get_topp_params` tool |
507
561
| Hallucinated pyopenms API calls | Skill files with verified examples; reviewer agent checks |
|**State management**| None | StateManager with cross-component sync |
621
+
|**Caching**| None | Automatic disk caching with hash invalidation |
622
+
|**Best for**| Quick exploratory plots, simple apps | Interactive dashboards, production apps, large datasets |
623
+
624
+
**Agent heuristic**: Default to pyopenms-viz for simple visualization pages. Switch to openms-insight when the user needs: (a) linked selection across components, (b) tables with >10K rows, (c) heatmaps with >100K points, (d) peptide sequence/fragment visualization, or (e) differential expression volcano plots.
0 commit comments