UC2 → paper integration proposal (TAL1 differential ChIP, issue #13)
What this is: ideas for integrating the UC2 work into the Galaxy Notebooks paper (vault/papers/galaxy-notebooks/manuscript.md), generated by feeding the UC2 debrief pair (UC2_DEBRIEF.md + UC2_DEBRIEF_2.md) and the paper draft to a review subagent. The paper itself was not modified. Line numbers reference manuscript.md as of 2026-06-14.
Orienting context
The manuscript has no use cases written in yet — they are planned vignettes. The extraction section (~lines 80–90) describes the intended flow and hedges (~line 90) that graph-backed extraction evidence “should be presented as implemented behavior only once the end-to-end vignette has been captured.” UC2 doesn’t strengthen existing UC-prose; it fills the empty vignette slot as the second, contrast vignette: UC1/UC3 is the happy-path showcase; UC2 is the case that bounds and hardens the extraction claim. That division of labor is what earns UC2 a place rather than redundancy.
MUST-INCLUDE
1. Topology-limit + split resolution (Extraction section)
Where: new paragraph after “…not a second workflow editor.” (~line 88), before the implementation-status hedge (~line 90). Answers the reviewer’s “when does this break?” honestly.
Not every documented analysis reduces to a single reusable workflow, and the notebook surface makes the boundary explicit. A differential two-condition analysis — identifying TAL1 binding sites that differ between two blood-cell lineages — contains an irreducible two-way comparison: a step that selects two specific named elements (one per condition) out of a collection and compares them. A collection-element selection feeding a single-dataset tool input has no representation as a workflow edge, so this seam cannot be made sample-agnostic inside one workflow. Galaxy resolves this by extracting two workflows: a map-over peak caller (read collections in, per-condition peak sets out) and a pairwise comparator (any two peak sets in, differential result out). Each is independently reusable; only their composition — which two conditions to contrast — remains analyst-supplied.
Real numbers: single-workflow extract = 34 steps, 0 dangling, 3 outputs, comparison seam condition-pinned (identifier=G1E/mega) but runnable; split = WF1 caller 5 steps (two list:list reads → Bowtie2 ×2 map-over → one mapped MACS2 → condition peaks list) + WF2 comparator 29 steps (4 inputs → 3-way intersect → Group gene lists + datamash figure → 3 outputs), no condition-name pinning.
2. The robustness vignette (Evaluation Plan / dedicated subsection)
Where: expand “the second evidence layer is a worked notebook vignette” (~line 144); pair explicitly with the happy-path vignette.
- Analysis: erythroid (G1E) vs megakaryocyte TAL1 ChIP, mm10, MACS2 → differential binding → promoter overlap + nearest gene → candidate regulated genes.
- Science reproduced exactly from the clean tool-only graph: G1E 261 / mega 150 peaks; common 39 / G1E-only 222 / mega-only 110; promoter-bound differential hits recover the lineage master regulators: Gata1 G1E-only, Fli1 (+Tal1) mega-only, Cbfa2t3 (ETO2) common.
- Structural move: experimental design as a nested
list:list(outer = condition, inner = replicate) → Bowtie2 map-over + a single MACS2 step (map over conditions, reduce/pool replicates); the original “6 uploads + 6 alignments + bash gene-lists + pasted matrix” collapsed to a clean all-tool DAG. - Honesty: G1E is a GATA1-null line → the precise claim is “TAL1 occupies the Gata1 locus only in G1E” (differential binding at the gene), not “GATA1 active in G1E” — a correction the revision system recorded (on-message for the
edit_sourceclaim).
3. The _original_hda correctness fix (Implementation → Test Coverage)
Where: strengthen the Test Coverage subsection (~lines 132–136), which currently only promises regenerated counts. This is the paper’s strongest “robust and improvable” evidence — the only place a real use case demonstrably found, root-caused, and fixed a correctness bug in the extraction machinery.
Exercising extraction against a real differential analysis surfaced and fixed a correctness bug in the backward-closure walk. Collection-operation tools (e.g. Extract Dataset) produce outputs carrying both a
copied_fromlink to their source element and their own creating job._original_hdafollowedcopied_fromunconditionally, normalizing such an output back to its source and dropping the collection-operation step; a workflow extracted through the UI came out with a dangling input-less downstream step. The fix stops walkingcopied_fromwhen a content item has its owncreating_job_associations— passive copies still normalize, while anyDatabaseOperationTooloutput is retained as a genuine step — covered by a unit test and a Selenium end-to-end test.
Cross-ref: this de-risks the ~line 90 hedge — post-fix the UI extract genuinely produces a complete workflow (34 steps, 0 dangling), so the extraction path can move toward “implemented behavior.”
4. Figure — caller + comparator split diagram
Where: extends planned Figure 3, or a new figure. Two boxes: WF1 (list:list reads → map-over Bowtie2 → single mapped MACS2 → per-condition peaks); WF2 (two peak sets → 3-way intersect → promoter/nearest-gene → gene lists + figure); a dashed arrow “analyst picks the two conditions” marks the irreducible seam. Carries idea 1 visually.
NICE-TO-HAVE
- 5. Differential summary table: per class (common/G1E-only/mega-only) peak count (39/222/110) + a representative promoter-bound gene (Cbfa2t3/Gata1/Fli1), reconciling to per-condition totals (note the intersect-count asymmetry: common = 39 G1E-side, 40 mega-side). Doubles as proof the science reproduced through extraction.
- 6. Discussion sentence: UC2 carries experimental design structurally (collection shape) driving map-over+reduce with no metadata-aware tools; parenthetical that sample sheets remain the hand-authored ideal but are not an extraction target, whereas the nested
list:listis. - 7. Related Work touch: half-sentence that recovering structure from a provenance graph is non-trivial — the differential case shows where backward-closure correctness is subtle (collection-op normalization). Low priority (idea 3 already carries this).
Tensions / honesty
- State the 2-way limit plainly, then resolve it (split = positive engineering answer, not a concession).
- Condition-pinning still runs (34 steps, 0 dangling) — say “runnable but condition-pinned,” not “broken”; the split is the route to full reusability.
- The
_original_hdafix belongs in Implementation/Test-Coverage, framed as routine maturation (“a real use case surfaced and fixed a correctness bug”), not alarm. - Avoid over-claiming: the figure tail + (post-fix) alignment map extract cleanly; the single workflow extracts complete-but-condition-pinned; full sample-agnostic reuse needs the split. Match this layered truth (the debrief walked back an earlier “the whole UC2 extracts” overstatement).
- The GATA1-null reframing shows the notebook+revision system catching/recording a real interpretive correction — reinforces a core claim and protects against a domain reviewer.
Where UC2 is best vs UC1/UC3
- UC2 best (only) for: honestly-stated extraction limits (irreducible 2-way comparison); the robustness/improvability claim (drove the
_original_hdafix with tests); the split-into-two-reusable-workflows resolution; structural encoding of design vialist:list. - UC2 is NOT the showcase for “one notebook → one clean reusable workflow” (its best single-notebook outcome is runnable-but-condition-pinned). Lead the extraction section with UC1/UC3 (pristine happy path); bring UC2 as the deliberate stress-test. Don’t let UC2 be the first/only extraction example.
Priority: ideas 1–4 must-include; 5–7 nice-to-have. Keep UC2 positioned as the contrast/robustness vignette paired against a happy-path UC1/UC3.