docs(tutorial): restore the napari screenshot cells and result images - #53

Closed
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization
Closed

docs(tutorial): restore the napari screenshot cells and result images#53
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization

Conversation

@xuefei-wang

Copy link
Copy Markdown
Collaborator

Problem

A user reports that the tutorial "stripped out the important steps to run/visualize the results," comparing against 616d4b5.

They're right. The v0.1.0 monorepo merge (4a2d7ba) replaced both napari screenshot cells and both embedded result images with prose:

The image and segmentation layers appear directly in the interactive Napari viewer. Static documentation builds do not execute or embed GUI screenshots.

So the tutorial's two visual payoffs — the multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type label layers — disappeared from the rendered page. Both "Visualizing results" sections now end with no output at all.

Why the premise was wrong

napari does render headlessly (Xvfb + llvmpipe), and that is how the currently-deployed site was built. https://vanvalenlab.github.io/deepcell-types/site/tutorial.html still serves both images today:

  • _static/_generated/napari_img_and_segmentation.png
  • _static/_generated/napari_celltype_layers.png

The repo source and the published build had silently diverged. This restores the source to match the build that actually works.

Change

Restores the two hide-cellnim.screenshot(...) cells and the two <img> embeds. Docs-only; no code touched.

Verification

  • jupytext parses the tutorial: 45 cells / 24 code cells, 2 screenshot cells, 2 image embeds
  • pytest: 470 passed, 1 skipped
  • Resulting docs/site/tutorial.md is byte-identical to the version that produced the live site, apart from one unrelated abstention-wording sentence left untouched

Not addressed here

The same report also says the model won't run. Everything testable offline is healthy — pip install git+...@master resolves (incl. deepcell_auth from git), the deepcell-auth manifest maps 2026-06-15 to models/deepcell-types_2026-06-15_resmlp.pt / b819a7e0…, and predict() runs fine against that checkpoint on this branch. The one link that can't be checked without a token is whether the bucket actually serves an asset with that hash. Tracking separately.

Separately: gh-pages was last built 2026-07-12, which predates the deepcell-auth migration (#47, 2026-07-30) — the published site should be rebuilt from master once this lands.

The v0.1.0 monorepo merge replaced both napari screenshot cells and the two
embedded result images with the prose "Static documentation builds do not
execute or embed GUI screenshots." The tutorial's two visual payoffs -- the
multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type
label layers -- therefore vanished from the rendered page, leaving the
"Visualizing results" sections with no output at all.
The premise was wrong: napari renders headlessly under Xvfb + llvmpipe, which
is how the currently-deployed site was built -- it still serves both
_static/_generated/*.png. Restore the two `hide-cell` screenshot cells and the
<img> embeds so the repo source matches the build that actually works.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qvo32Wvq8EHyA9jmFCXuXi
@xuefei-wang

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #55 — closing as redundant.

#55 contains this PR's changes verbatim: the same two hide-cellnim.screenshot(...) cells and the same two <img> embeds for napari_img_and_segmentation.png and napari_celltype_layers.png. Verified by diffing this branch against #55's head — the only differences are #55's additional empty-mask guard; nothing from this PR appears as a removal.

Both changes were validated together on an integration branch merging the two (clean auto-merge, and a content no-op for docs/site/tutorial.md since #55 is a superset). A full docs build was run with the whole pipeline executing for real — remote zarr read, cellSAM segmentation, predict, and both napari screenshots — build succeeded with no cell errors and both images rendering with real content.

That build also confirmed this PR's central premise: napari does render headlessly, so the screenshot cells belong in the source. It needs Xvfb plus a real GLX context (Qt's offscreen platform provides none) and Mesa llvmpipe.

One follow-up on the rebuild note at the end of this PR's description: the from-scratch run surfaced a bug in #55's new guard cell, fixed in 47160acint(mask.max()) reported the largest label ID (4644) rather than the cell count (1743), because cellSAM's labels are not contiguous. It only reproduces on a real cellSAM run; the archive's precomputed mask has contiguous labels, so the two numbers agree there.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@xuefei-wang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

docs(tutorial): restore the napari screenshot cells and result images - #53

Closed
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization
Closed

docs(tutorial): restore the napari screenshot cells and result images#53
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization

Conversation

@xuefei-wang

Copy link
Copy Markdown
Collaborator

Problem

A user reports that the tutorial "stripped out the important steps to run/visualize the results," comparing against 616d4b5.

They're right. The v0.1.0 monorepo merge (4a2d7ba) replaced both napari screenshot cells and both embedded result images with prose:

The image and segmentation layers appear directly in the interactive Napari viewer. Static documentation builds do not execute or embed GUI screenshots.

So the tutorial's two visual payoffs — the multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type label layers — disappeared from the rendered page. Both "Visualizing results" sections now end with no output at all.

Why the premise was wrong

napari does render headlessly (Xvfb + llvmpipe), and that is how the currently-deployed site was built. https://vanvalenlab.github.io/deepcell-types/site/tutorial.html still serves both images today:

  • _static/_generated/napari_img_and_segmentation.png
  • _static/_generated/napari_celltype_layers.png

The repo source and the published build had silently diverged. This restores the source to match the build that actually works.

Change

Restores the two hide-cellnim.screenshot(...) cells and the two <img> embeds. Docs-only; no code touched.

Verification

  • jupytext parses the tutorial: 45 cells / 24 code cells, 2 screenshot cells, 2 image embeds
  • pytest: 470 passed, 1 skipped
  • Resulting docs/site/tutorial.md is byte-identical to the version that produced the live site, apart from one unrelated abstention-wording sentence left untouched

Not addressed here

The same report also says the model won't run. Everything testable offline is healthy — pip install git+...@master resolves (incl. deepcell_auth from git), the deepcell-auth manifest maps 2026-06-15 to models/deepcell-types_2026-06-15_resmlp.pt / b819a7e0…, and predict() runs fine against that checkpoint on this branch. The one link that can't be checked without a token is whether the bucket actually serves an asset with that hash. Tracking separately.

Separately: gh-pages was last built 2026-07-12, which predates the deepcell-auth migration (#47, 2026-07-30) — the published site should be rebuilt from master once this lands.

The v0.1.0 monorepo merge replaced both napari screenshot cells and the two
embedded result images with the prose "Static documentation builds do not
execute or embed GUI screenshots." The tutorial's two visual payoffs -- the
multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type
label layers -- therefore vanished from the rendered page, leaving the
"Visualizing results" sections with no output at all.
The premise was wrong: napari renders headlessly under Xvfb + llvmpipe, which
is how the currently-deployed site was built -- it still serves both
_static/_generated/*.png. Restore the two `hide-cell` screenshot cells and the
<img> embeds so the repo source matches the build that actually works.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qvo32Wvq8EHyA9jmFCXuXi
@xuefei-wang

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #55 — closing as redundant.

#55 contains this PR's changes verbatim: the same two hide-cellnim.screenshot(...) cells and the same two <img> embeds for napari_img_and_segmentation.png and napari_celltype_layers.png. Verified by diffing this branch against #55's head — the only differences are #55's additional empty-mask guard; nothing from this PR appears as a removal.

Both changes were validated together on an integration branch merging the two (clean auto-merge, and a content no-op for docs/site/tutorial.md since #55 is a superset). A full docs build was run with the whole pipeline executing for real — remote zarr read, cellSAM segmentation, predict, and both napari screenshots — build succeeded with no cell errors and both images rendering with real content.

That build also confirmed this PR's central premise: napari does render headlessly, so the screenshot cells belong in the source. It needs Xvfb plus a real GLX context (Qt's offscreen platform provides none) and Mesa llvmpipe.

One follow-up on the rebuild note at the end of this PR's description: the from-scratch run surfaced a bug in #55's new guard cell, fixed in 47160acint(mask.max()) reported the largest label ID (4644) rather than the cell count (1743), because cellSAM's labels are not contiguous. It only reproduces on a real cellSAM run; the archive's precomputed mask has contiguous labels, so the two numbers agree there.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@xuefei-wang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs(tutorial): restore the napari screenshot cells and result images - #53

Closed
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization
Closed

docs(tutorial): restore the napari screenshot cells and result images#53
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization

Conversation

@xuefei-wang

Copy link
Copy Markdown
Collaborator

Problem

A user reports that the tutorial "stripped out the important steps to run/visualize the results," comparing against 616d4b5.

They're right. The v0.1.0 monorepo merge (4a2d7ba) replaced both napari screenshot cells and both embedded result images with prose:

The image and segmentation layers appear directly in the interactive Napari viewer. Static documentation builds do not execute or embed GUI screenshots.

So the tutorial's two visual payoffs — the multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type label layers — disappeared from the rendered page. Both "Visualizing results" sections now end with no output at all.

Why the premise was wrong

napari does render headlessly (Xvfb + llvmpipe), and that is how the currently-deployed site was built. https://vanvalenlab.github.io/deepcell-types/site/tutorial.html still serves both images today:

  • _static/_generated/napari_img_and_segmentation.png
  • _static/_generated/napari_celltype_layers.png

The repo source and the published build had silently diverged. This restores the source to match the build that actually works.

Change

Restores the two hide-cellnim.screenshot(...) cells and the two <img> embeds. Docs-only; no code touched.

Verification

  • jupytext parses the tutorial: 45 cells / 24 code cells, 2 screenshot cells, 2 image embeds
  • pytest: 470 passed, 1 skipped
  • Resulting docs/site/tutorial.md is byte-identical to the version that produced the live site, apart from one unrelated abstention-wording sentence left untouched

Not addressed here

The same report also says the model won't run. Everything testable offline is healthy — pip install git+...@master resolves (incl. deepcell_auth from git), the deepcell-auth manifest maps 2026-06-15 to models/deepcell-types_2026-06-15_resmlp.pt / b819a7e0…, and predict() runs fine against that checkpoint on this branch. The one link that can't be checked without a token is whether the bucket actually serves an asset with that hash. Tracking separately.

Separately: gh-pages was last built 2026-07-12, which predates the deepcell-auth migration (#47, 2026-07-30) — the published site should be rebuilt from master once this lands.

The v0.1.0 monorepo merge replaced both napari screenshot cells and the two
embedded result images with the prose "Static documentation builds do not
execute or embed GUI screenshots." The tutorial's two visual payoffs -- the
multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type
label layers -- therefore vanished from the rendered page, leaving the
"Visualizing results" sections with no output at all.
The premise was wrong: napari renders headlessly under Xvfb + llvmpipe, which
is how the currently-deployed site was built -- it still serves both
_static/_generated/*.png. Restore the two `hide-cell` screenshot cells and the
<img> embeds so the repo source matches the build that actually works.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qvo32Wvq8EHyA9jmFCXuXi
@xuefei-wang

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #55 — closing as redundant.

#55 contains this PR's changes verbatim: the same two hide-cellnim.screenshot(...) cells and the same two <img> embeds for napari_img_and_segmentation.png and napari_celltype_layers.png. Verified by diffing this branch against #55's head — the only differences are #55's additional empty-mask guard; nothing from this PR appears as a removal.

Both changes were validated together on an integration branch merging the two (clean auto-merge, and a content no-op for docs/site/tutorial.md since #55 is a superset). A full docs build was run with the whole pipeline executing for real — remote zarr read, cellSAM segmentation, predict, and both napari screenshots — build succeeded with no cell errors and both images rendering with real content.

That build also confirmed this PR's central premise: napari does render headlessly, so the screenshot cells belong in the source. It needs Xvfb plus a real GLX context (Qt's offscreen platform provides none) and Mesa llvmpipe.

One follow-up on the rebuild note at the end of this PR's description: the from-scratch run surfaced a bug in #55's new guard cell, fixed in 47160acint(mask.max()) reported the largest label ID (4644) rather than the cell count (1743), because cellSAM's labels are not contiguous. It only reproduces on a real cellSAM run; the archive's precomputed mask has contiguous labels, so the two numbers agree there.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@xuefei-wang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs(tutorial): restore the napari screenshot cells and result images - #53

Closed
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization
Closed

docs(tutorial): restore the napari screenshot cells and result images#53
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization

Conversation

@xuefei-wang

Copy link
Copy Markdown
Collaborator

Problem

A user reports that the tutorial "stripped out the important steps to run/visualize the results," comparing against 616d4b5.

They're right. The v0.1.0 monorepo merge (4a2d7ba) replaced both napari screenshot cells and both embedded result images with prose:

The image and segmentation layers appear directly in the interactive Napari viewer. Static documentation builds do not execute or embed GUI screenshots.

So the tutorial's two visual payoffs — the multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type label layers — disappeared from the rendered page. Both "Visualizing results" sections now end with no output at all.

Why the premise was wrong

napari does render headlessly (Xvfb + llvmpipe), and that is how the currently-deployed site was built. https://vanvalenlab.github.io/deepcell-types/site/tutorial.html still serves both images today:

  • _static/_generated/napari_img_and_segmentation.png
  • _static/_generated/napari_celltype_layers.png

The repo source and the published build had silently diverged. This restores the source to match the build that actually works.

Change

Restores the two hide-cellnim.screenshot(...) cells and the two <img> embeds. Docs-only; no code touched.

Verification

  • jupytext parses the tutorial: 45 cells / 24 code cells, 2 screenshot cells, 2 image embeds
  • pytest: 470 passed, 1 skipped
  • Resulting docs/site/tutorial.md is byte-identical to the version that produced the live site, apart from one unrelated abstention-wording sentence left untouched

Not addressed here

The same report also says the model won't run. Everything testable offline is healthy — pip install git+...@master resolves (incl. deepcell_auth from git), the deepcell-auth manifest maps 2026-06-15 to models/deepcell-types_2026-06-15_resmlp.pt / b819a7e0…, and predict() runs fine against that checkpoint on this branch. The one link that can't be checked without a token is whether the bucket actually serves an asset with that hash. Tracking separately.

Separately: gh-pages was last built 2026-07-12, which predates the deepcell-auth migration (#47, 2026-07-30) — the published site should be rebuilt from master once this lands.

The v0.1.0 monorepo merge replaced both napari screenshot cells and the two
embedded result images with the prose "Static documentation builds do not
execute or embed GUI screenshots." The tutorial's two visual payoffs -- the
multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type
label layers -- therefore vanished from the rendered page, leaving the
"Visualizing results" sections with no output at all.
The premise was wrong: napari renders headlessly under Xvfb + llvmpipe, which
is how the currently-deployed site was built -- it still serves both
_static/_generated/*.png. Restore the two `hide-cell` screenshot cells and the
<img> embeds so the repo source matches the build that actually works.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qvo32Wvq8EHyA9jmFCXuXi
@xuefei-wang

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #55 — closing as redundant.

#55 contains this PR's changes verbatim: the same two hide-cellnim.screenshot(...) cells and the same two <img> embeds for napari_img_and_segmentation.png and napari_celltype_layers.png. Verified by diffing this branch against #55's head — the only differences are #55's additional empty-mask guard; nothing from this PR appears as a removal.

Both changes were validated together on an integration branch merging the two (clean auto-merge, and a content no-op for docs/site/tutorial.md since #55 is a superset). A full docs build was run with the whole pipeline executing for real — remote zarr read, cellSAM segmentation, predict, and both napari screenshots — build succeeded with no cell errors and both images rendering with real content.

That build also confirmed this PR's central premise: napari does render headlessly, so the screenshot cells belong in the source. It needs Xvfb plus a real GLX context (Qt's offscreen platform provides none) and Mesa llvmpipe.

One follow-up on the rebuild note at the end of this PR's description: the from-scratch run surfaced a bug in #55's new guard cell, fixed in 47160acint(mask.max()) reported the largest label ID (4644) rather than the cell count (1743), because cellSAM's labels are not contiguous. It only reproduces on a real cellSAM run; the archive's precomputed mask has contiguous labels, so the two numbers agree there.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@xuefei-wang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

docs(tutorial): restore the napari screenshot cells and result images - #53

Closed
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization
Closed

docs(tutorial): restore the napari screenshot cells and result images#53
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization

Conversation

@xuefei-wang

Copy link
Copy Markdown
Collaborator

Problem

A user reports that the tutorial "stripped out the important steps to run/visualize the results," comparing against 616d4b5.

They're right. The v0.1.0 monorepo merge (4a2d7ba) replaced both napari screenshot cells and both embedded result images with prose:

The image and segmentation layers appear directly in the interactive Napari viewer. Static documentation builds do not execute or embed GUI screenshots.

So the tutorial's two visual payoffs — the multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type label layers — disappeared from the rendered page. Both "Visualizing results" sections now end with no output at all.

Why the premise was wrong

napari does render headlessly (Xvfb + llvmpipe), and that is how the currently-deployed site was built. https://vanvalenlab.github.io/deepcell-types/site/tutorial.html still serves both images today:

  • _static/_generated/napari_img_and_segmentation.png
  • _static/_generated/napari_celltype_layers.png

The repo source and the published build had silently diverged. This restores the source to match the build that actually works.

Change

Restores the two hide-cellnim.screenshot(...) cells and the two <img> embeds. Docs-only; no code touched.

Verification

  • jupytext parses the tutorial: 45 cells / 24 code cells, 2 screenshot cells, 2 image embeds
  • pytest: 470 passed, 1 skipped
  • Resulting docs/site/tutorial.md is byte-identical to the version that produced the live site, apart from one unrelated abstention-wording sentence left untouched

Not addressed here

The same report also says the model won't run. Everything testable offline is healthy — pip install git+...@master resolves (incl. deepcell_auth from git), the deepcell-auth manifest maps 2026-06-15 to models/deepcell-types_2026-06-15_resmlp.pt / b819a7e0…, and predict() runs fine against that checkpoint on this branch. The one link that can't be checked without a token is whether the bucket actually serves an asset with that hash. Tracking separately.

Separately: gh-pages was last built 2026-07-12, which predates the deepcell-auth migration (#47, 2026-07-30) — the published site should be rebuilt from master once this lands.

The v0.1.0 monorepo merge replaced both napari screenshot cells and the two
embedded result images with the prose "Static documentation builds do not
execute or embed GUI screenshots." The tutorial's two visual payoffs -- the
multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type
label layers -- therefore vanished from the rendered page, leaving the
"Visualizing results" sections with no output at all.
The premise was wrong: napari renders headlessly under Xvfb + llvmpipe, which
is how the currently-deployed site was built -- it still serves both
_static/_generated/*.png. Restore the two `hide-cell` screenshot cells and the
<img> embeds so the repo source matches the build that actually works.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qvo32Wvq8EHyA9jmFCXuXi
@xuefei-wang

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #55 — closing as redundant.

#55 contains this PR's changes verbatim: the same two hide-cellnim.screenshot(...) cells and the same two <img> embeds for napari_img_and_segmentation.png and napari_celltype_layers.png. Verified by diffing this branch against #55's head — the only differences are #55's additional empty-mask guard; nothing from this PR appears as a removal.

Both changes were validated together on an integration branch merging the two (clean auto-merge, and a content no-op for docs/site/tutorial.md since #55 is a superset). A full docs build was run with the whole pipeline executing for real — remote zarr read, cellSAM segmentation, predict, and both napari screenshots — build succeeded with no cell errors and both images rendering with real content.

That build also confirmed this PR's central premise: napari does render headlessly, so the screenshot cells belong in the source. It needs Xvfb plus a real GLX context (Qt's offscreen platform provides none) and Mesa llvmpipe.

One follow-up on the rebuild note at the end of this PR's description: the from-scratch run surfaced a bug in #55's new guard cell, fixed in 47160acint(mask.max()) reported the largest label ID (4644) rather than the cell count (1743), because cellSAM's labels are not contiguous. It only reproduces on a real cellSAM run; the archive's precomputed mask has contiguous labels, so the two numbers agree there.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@xuefei-wang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs(tutorial): restore the napari screenshot cells and result images - #53

Closed
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization
Closed

docs(tutorial): restore the napari screenshot cells and result images#53
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization

Conversation

@xuefei-wang

Copy link
Copy Markdown
Collaborator

Problem

A user reports that the tutorial "stripped out the important steps to run/visualize the results," comparing against 616d4b5.

They're right. The v0.1.0 monorepo merge (4a2d7ba) replaced both napari screenshot cells and both embedded result images with prose:

The image and segmentation layers appear directly in the interactive Napari viewer. Static documentation builds do not execute or embed GUI screenshots.

So the tutorial's two visual payoffs — the multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type label layers — disappeared from the rendered page. Both "Visualizing results" sections now end with no output at all.

Why the premise was wrong

napari does render headlessly (Xvfb + llvmpipe), and that is how the currently-deployed site was built. https://vanvalenlab.github.io/deepcell-types/site/tutorial.html still serves both images today:

  • _static/_generated/napari_img_and_segmentation.png
  • _static/_generated/napari_celltype_layers.png

The repo source and the published build had silently diverged. This restores the source to match the build that actually works.

Change

Restores the two hide-cellnim.screenshot(...) cells and the two <img> embeds. Docs-only; no code touched.

Verification

  • jupytext parses the tutorial: 45 cells / 24 code cells, 2 screenshot cells, 2 image embeds
  • pytest: 470 passed, 1 skipped
  • Resulting docs/site/tutorial.md is byte-identical to the version that produced the live site, apart from one unrelated abstention-wording sentence left untouched

Not addressed here

The same report also says the model won't run. Everything testable offline is healthy — pip install git+...@master resolves (incl. deepcell_auth from git), the deepcell-auth manifest maps 2026-06-15 to models/deepcell-types_2026-06-15_resmlp.pt / b819a7e0…, and predict() runs fine against that checkpoint on this branch. The one link that can't be checked without a token is whether the bucket actually serves an asset with that hash. Tracking separately.

Separately: gh-pages was last built 2026-07-12, which predates the deepcell-auth migration (#47, 2026-07-30) — the published site should be rebuilt from master once this lands.

The v0.1.0 monorepo merge replaced both napari screenshot cells and the two
embedded result images with the prose "Static documentation builds do not
execute or embed GUI screenshots." The tutorial's two visual payoffs -- the
multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type
label layers -- therefore vanished from the rendered page, leaving the
"Visualizing results" sections with no output at all.
The premise was wrong: napari renders headlessly under Xvfb + llvmpipe, which
is how the currently-deployed site was built -- it still serves both
_static/_generated/*.png. Restore the two `hide-cell` screenshot cells and the
<img> embeds so the repo source matches the build that actually works.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qvo32Wvq8EHyA9jmFCXuXi
@xuefei-wang

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #55 — closing as redundant.

#55 contains this PR's changes verbatim: the same two hide-cellnim.screenshot(...) cells and the same two <img> embeds for napari_img_and_segmentation.png and napari_celltype_layers.png. Verified by diffing this branch against #55's head — the only differences are #55's additional empty-mask guard; nothing from this PR appears as a removal.

Both changes were validated together on an integration branch merging the two (clean auto-merge, and a content no-op for docs/site/tutorial.md since #55 is a superset). A full docs build was run with the whole pipeline executing for real — remote zarr read, cellSAM segmentation, predict, and both napari screenshots — build succeeded with no cell errors and both images rendering with real content.

That build also confirmed this PR's central premise: napari does render headlessly, so the screenshot cells belong in the source. It needs Xvfb plus a real GLX context (Qt's offscreen platform provides none) and Mesa llvmpipe.

One follow-up on the rebuild note at the end of this PR's description: the from-scratch run surfaced a bug in #55's new guard cell, fixed in 47160acint(mask.max()) reported the largest label ID (4644) rather than the cell count (1743), because cellSAM's labels are not contiguous. It only reproduces on a real cellSAM run; the archive's precomputed mask has contiguous labels, so the two numbers agree there.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@xuefei-wang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs(tutorial): restore the napari screenshot cells and result images - #53

Closed
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization
Closed

docs(tutorial): restore the napari screenshot cells and result images#53
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization

Conversation

@xuefei-wang

Copy link
Copy Markdown
Collaborator

Problem

A user reports that the tutorial "stripped out the important steps to run/visualize the results," comparing against 616d4b5.

They're right. The v0.1.0 monorepo merge (4a2d7ba) replaced both napari screenshot cells and both embedded result images with prose:

The image and segmentation layers appear directly in the interactive Napari viewer. Static documentation builds do not execute or embed GUI screenshots.

So the tutorial's two visual payoffs — the multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type label layers — disappeared from the rendered page. Both "Visualizing results" sections now end with no output at all.

Why the premise was wrong

napari does render headlessly (Xvfb + llvmpipe), and that is how the currently-deployed site was built. https://vanvalenlab.github.io/deepcell-types/site/tutorial.html still serves both images today:

  • _static/_generated/napari_img_and_segmentation.png
  • _static/_generated/napari_celltype_layers.png

The repo source and the published build had silently diverged. This restores the source to match the build that actually works.

Change

Restores the two hide-cellnim.screenshot(...) cells and the two <img> embeds. Docs-only; no code touched.

Verification

  • jupytext parses the tutorial: 45 cells / 24 code cells, 2 screenshot cells, 2 image embeds
  • pytest: 470 passed, 1 skipped
  • Resulting docs/site/tutorial.md is byte-identical to the version that produced the live site, apart from one unrelated abstention-wording sentence left untouched

Not addressed here

The same report also says the model won't run. Everything testable offline is healthy — pip install git+...@master resolves (incl. deepcell_auth from git), the deepcell-auth manifest maps 2026-06-15 to models/deepcell-types_2026-06-15_resmlp.pt / b819a7e0…, and predict() runs fine against that checkpoint on this branch. The one link that can't be checked without a token is whether the bucket actually serves an asset with that hash. Tracking separately.

Separately: gh-pages was last built 2026-07-12, which predates the deepcell-auth migration (#47, 2026-07-30) — the published site should be rebuilt from master once this lands.

The v0.1.0 monorepo merge replaced both napari screenshot cells and the two
embedded result images with the prose "Static documentation builds do not
execute or embed GUI screenshots." The tutorial's two visual payoffs -- the
multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type
label layers -- therefore vanished from the rendered page, leaving the
"Visualizing results" sections with no output at all.
The premise was wrong: napari renders headlessly under Xvfb + llvmpipe, which
is how the currently-deployed site was built -- it still serves both
_static/_generated/*.png. Restore the two `hide-cell` screenshot cells and the
<img> embeds so the repo source matches the build that actually works.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qvo32Wvq8EHyA9jmFCXuXi
@xuefei-wang

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #55 — closing as redundant.

#55 contains this PR's changes verbatim: the same two hide-cellnim.screenshot(...) cells and the same two <img> embeds for napari_img_and_segmentation.png and napari_celltype_layers.png. Verified by diffing this branch against #55's head — the only differences are #55's additional empty-mask guard; nothing from this PR appears as a removal.

Both changes were validated together on an integration branch merging the two (clean auto-merge, and a content no-op for docs/site/tutorial.md since #55 is a superset). A full docs build was run with the whole pipeline executing for real — remote zarr read, cellSAM segmentation, predict, and both napari screenshots — build succeeded with no cell errors and both images rendering with real content.

That build also confirmed this PR's central premise: napari does render headlessly, so the screenshot cells belong in the source. It needs Xvfb plus a real GLX context (Qt's offscreen platform provides none) and Mesa llvmpipe.

One follow-up on the rebuild note at the end of this PR's description: the from-scratch run surfaced a bug in #55's new guard cell, fixed in 47160acint(mask.max()) reported the largest label ID (4644) rather than the cell count (1743), because cellSAM's labels are not contiguous. It only reproduces on a real cellSAM run; the archive's precomputed mask has contiguous labels, so the two numbers agree there.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@xuefei-wang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

docs(tutorial): restore the napari screenshot cells and result images - #53

Closed
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization
Closed

docs(tutorial): restore the napari screenshot cells and result images#53
xuefei-wang wants to merge 1 commit into
masterfrom
docs/restore-tutorial-visualization

Conversation

@xuefei-wang

Copy link
Copy Markdown
Collaborator

Problem

A user reports that the tutorial "stripped out the important steps to run/visualize the results," comparing against 616d4b5.

They're right. The v0.1.0 monorepo merge (4a2d7ba) replaced both napari screenshot cells and both embedded result images with prose:

The image and segmentation layers appear directly in the interactive Napari viewer. Static documentation builds do not execute or embed GUI screenshots.

So the tutorial's two visual payoffs — the multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type label layers — disappeared from the rendered page. Both "Visualizing results" sections now end with no output at all.

Why the premise was wrong

napari does render headlessly (Xvfb + llvmpipe), and that is how the currently-deployed site was built. https://vanvalenlab.github.io/deepcell-types/site/tutorial.html still serves both images today:

  • _static/_generated/napari_img_and_segmentation.png
  • _static/_generated/napari_celltype_layers.png

The repo source and the published build had silently diverged. This restores the source to match the build that actually works.

Change

Restores the two hide-cellnim.screenshot(...) cells and the two <img> embeds. Docs-only; no code touched.

Verification

  • jupytext parses the tutorial: 45 cells / 24 code cells, 2 screenshot cells, 2 image embeds
  • pytest: 470 passed, 1 skipped
  • Resulting docs/site/tutorial.md is byte-identical to the version that produced the live site, apart from one unrelated abstention-wording sentence left untouched

Not addressed here

The same report also says the model won't run. Everything testable offline is healthy — pip install git+...@master resolves (incl. deepcell_auth from git), the deepcell-auth manifest maps 2026-06-15 to models/deepcell-types_2026-06-15_resmlp.pt / b819a7e0…, and predict() runs fine against that checkpoint on this branch. The one link that can't be checked without a token is whether the bucket actually serves an asset with that hash. Tracking separately.

Separately: gh-pages was last built 2026-07-12, which predates the deepcell-auth migration (#47, 2026-07-30) — the published site should be rebuilt from master once this lands.

The v0.1.0 monorepo merge replaced both napari screenshot cells and the two
embedded result images with the prose "Static documentation builds do not
execute or embed GUI screenshots." The tutorial's two visual payoffs -- the
multiplexed image with the CellSAM segmentation overlaid, and the per-cell-type
label layers -- therefore vanished from the rendered page, leaving the
"Visualizing results" sections with no output at all.
The premise was wrong: napari renders headlessly under Xvfb + llvmpipe, which
is how the currently-deployed site was built -- it still serves both
_static/_generated/*.png. Restore the two `hide-cell` screenshot cells and the
<img> embeds so the repo source matches the build that actually works.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qvo32Wvq8EHyA9jmFCXuXi
@xuefei-wang

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #55 — closing as redundant.

#55 contains this PR's changes verbatim: the same two hide-cellnim.screenshot(...) cells and the same two <img> embeds for napari_img_and_segmentation.png and napari_celltype_layers.png. Verified by diffing this branch against #55's head — the only differences are #55's additional empty-mask guard; nothing from this PR appears as a removal.

Both changes were validated together on an integration branch merging the two (clean auto-merge, and a content no-op for docs/site/tutorial.md since #55 is a superset). A full docs build was run with the whole pipeline executing for real — remote zarr read, cellSAM segmentation, predict, and both napari screenshots — build succeeded with no cell errors and both images rendering with real content.

That build also confirmed this PR's central premise: napari does render headlessly, so the screenshot cells belong in the source. It needs Xvfb plus a real GLX context (Qt's offscreen platform provides none) and Mesa llvmpipe.

One follow-up on the rebuild note at the end of this PR's description: the from-scratch run surfaced a bug in #55's new guard cell, fixed in 47160acint(mask.max()) reported the largest label ID (4644) rather than the cell count (1743), because cellSAM's labels are not contiguous. It only reproduces on a real cellSAM run; the archive's precomputed mask has contiguous labels, so the two numbers agree there.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@xuefei-wang