Add 2026 poster#63
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
📝 WalkthroughWalkthroughAdds a new Quarto+Typst poster (OME-Arrow) and supporting docs, introduces Typst poster templates and a Quarto extension, updates docs index and README branding, bumps the ruff pre-commit hook, and adds a Poethepoet task for local poster preview. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Warning Review ran into problems🔥 ProblemsGit: Failed to clone repository. Please run the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
This PR adds new documentation and presentation assets (abstract + Quarto/Typst poster) to help communicate OME-Arrow to a wider community, and wires the new docs pages into the Sphinx/MyST docs site.
Changes:
- Add “Why OME Arrow?” and “Presentations” docs pages and include them in the docs toctree.
- Add 2026 OME Community Meeting poster source (
.qmd), a custom Quarto/Typst poster template extension, and supporting images/abstract. - Add a Poe task to preview the poster and bump the ruff pre-commit hook version.
Reviewed changes
Copilot reviewed 12 out of 30 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
pyproject.toml |
Adds a Poe task to preview the Quarto poster. |
docs/src/why-ome-arrow.md |
New documentation page explaining the motivation and positioning of OME-Arrow. |
docs/src/presentations.md |
New docs page linking to the 2026 poster PDF. |
docs/src/index.md |
Adds the new docs pages to the toctree. |
docs/src/_static/logo.png |
Static asset change/addition for documentation branding. |
docs/presentations/2026-OME-community-meeting/readme.md |
Adds build/preview instructions and references for poster development. |
docs/presentations/2026-OME-community-meeting/poster.qmd |
Adds the Quarto poster source content. |
docs/presentations/2026-OME-community-meeting/images/spacer.png |
Adds an image asset used in poster header composition. |
docs/presentations/2026-OME-community-meeting/images/ome-arrow-qr.png |
Adds QR code image asset for the poster. |
docs/presentations/2026-OME-community-meeting/images/ome-arrow-qr-text.png |
Adds QR code + text composite image asset for the poster. |
docs/presentations/2026-OME-community-meeting/abstract.md |
Adds the meeting abstract content. |
docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ |
Introduces a custom Typst poster template (modified). |
docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-show.typ |
Wires Quarto metadata into the Typst poster template. |
docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/_extension.yml |
Registers the custom Quarto/Typst format extension. |
README.md |
Updates the README header image reference. |
.pre-commit-config.yaml |
Bumps astral-sh/ruff-pre-commit rev. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| lazy = OMEArrow.scan("image.parquet").slice_lazy(0, 512, 0, 512).collect() | ||
|
|
||
| # visualize the image with pyvista for jupyter-friendly views | ||
| oa.view(how="pyvista) |
There was a problem hiding this comment.
The Python example has an unterminated string literal: oa.view(how="pyvista) is missing the closing quote. This will break syntax highlighting and can confuse readers copying the snippet; close the string and the call properly.
| oa.view(how="pyvista) | |
| oa.view(how="pyvista") |
|
|
||
| ## OME-Zarr and iceberg-bioimage | ||
|
|
||
|  as a warehouse/control-plane layer and [`duckdb_zarr`](https://github.com/photometric/duckdb-zarr) for analytical access to OME-Zarr-backed data. Here, **OME-Zarr / OME-TIFF** remain exchange formats, while **OME-Arrow / Parquet / Arrow-native tables** support joins and analytics, with **Lance** as a random-access table option.](images/icebeg-bioimage-ome-zarr-integration.png) |
There was a problem hiding this comment.
The image filename icebeg-bioimage-ome-zarr-integration.png appears to be a misspelling of iceberg (it’s referenced as iceberg-bioimage in the caption). Consider renaming the asset + updating the reference to avoid confusion and make the path easier to grep/maintain.
|  as a warehouse/control-plane layer and [`duckdb_zarr`](https://github.com/photometric/duckdb-zarr) for analytical access to OME-Zarr-backed data. Here, **OME-Zarr / OME-TIFF** remain exchange formats, while **OME-Arrow / Parquet / Arrow-native tables** support joins and analytics, with **Lance** as a random-access table option.](images/icebeg-bioimage-ome-zarr-integration.png) | |
|  as a warehouse/control-plane layer and [`duckdb_zarr`](https://github.com/photometric/duckdb-zarr) for analytical access to OME-Zarr-backed data. Here, **OME-Zarr / OME-TIFF** remain exchange formats, while **OME-Arrow / Parquet / Arrow-native tables** support joins and analytics, with **Lance** as a random-access table option.](images/iceberg-bioimage-ome-zarr-integration.png) |
| // add one more column at the start for the left-side image | ||
| rows: (auto, auto), | ||
| columns: (210pt, title_column_size, univ_logo_column_size), | ||
| column-gutter: 25pt, | ||
| row-gutter: 30pt, | ||
|
|
||
| // left-side image cell | ||
| grid.cell( | ||
| pad(top: -18pt, | ||
| image("images/ome-arrow-logo.png", width: 210pt), | ||
| ), | ||
| rowspan: 3, | ||
| align: left, |
There was a problem hiding this comment.
The header grid declares rows: (auto, auto) but later uses rowspan: 3 for multiple cells. With only two rows defined, this is likely invalid (or at least inconsistent) and may cause the Typst template to fail to compile. Consider defining three rows (e.g., title/authors/departments) or adjusting the rowspan values to match the declared grid shape.
| pad(top: 2pt, pad( left: 20pt, | ||
| image(univ_logo, width: 130%), | ||
| )), |
There was a problem hiding this comment.
This pad(...) call appears malformed: pad(top: 2pt, pad(left: 20pt, ...)) nests a second pad( as if it were a named argument, which Typst won’t parse. Use a single pad call with multiple named parameters (e.g., top, left) around the image.
| pad(top: 2pt, pad( left: 20pt, | |
| image(univ_logo, width: 130%), | |
| )), | |
| pad(top: 2pt, left: 20pt, | |
| image(univ_logo, width: 130%), | |
| ), |
| $if(footer-url-font-size)$ footer_url_font_size: $footer-url-font-size$, $endif$ | ||
|
|
||
| // Footer's text font size (in pt). | ||
| $if(footer-text-font-size)$ footer_text_font_size: [$footer-text-font-size$], $endif$ |
There was a problem hiding this comment.
footer_text_font_size is forwarded as a bracketed content value ([$footer-text-font-size$]), but the template casts it with int(...). This will likely fail at render time unless it’s a plain numeric value. Pass the raw metadata value (without brackets) so it can be parsed/cast correctly.
| $if(footer-text-font-size)$ footer_text_font_size: [$footer-text-font-size$], $endif$ | |
| $if(footer-text-font-size)$ footer_text_font_size: $footer-text-font-size$, $endif$ |
|
|
||
| ## OME Community Meeting 2026 | ||
|
|
||
| - Poster PDF: [OME-Arrow 2026 poster (WayScience/ome-arrow)](https://github.com/WayScience/ome-arrow/blob/main/docs/presentations/2026-OME-community-meeting/ome-arrow-2026-poster.pdf) |
There was a problem hiding this comment.
The poster link points to the GitHub blob URL, which renders a GitHub HTML page rather than reliably serving the PDF in docs/offline contexts. Consider linking to the raw.githubusercontent.com URL or (preferably) using a relative link to the PDF within the documentation site so it works when the docs are built locally.
| - Poster PDF: [OME-Arrow 2026 poster (WayScience/ome-arrow)](https://github.com/WayScience/ome-arrow/blob/main/docs/presentations/2026-OME-community-meeting/ome-arrow-2026-poster.pdf) | |
| - Poster PDF: [OME-Arrow 2026 poster (WayScience/ome-arrow)](../presentations/2026-OME-community-meeting/ome-arrow-2026-poster.pdf) |
| #set text(42pt) | ||
| #block( | ||
| fill: rgb(footer_color), | ||
| width: 100%, | ||
| inset: 20pt, | ||
| radius: 10pt, | ||
| // adds text to footer | ||
| [ |
There was a problem hiding this comment.
fill: rgb(footer_color) is passed a string from Quarto metadata (e.g., "CBE9E1" in the poster front matter). Typst’s rgb(...) typically expects numeric channels or a color literal, so this may fail unless you normalize the value (e.g., require #RRGGBB in metadata or prepend # before converting).
| ```bash | ||
| # preview the poster during development | ||
| uv run poe poster-preview | ||
|
|
||
| # build the poster PDF from source | ||
| uv run poe poster-render | ||
| ``` |
There was a problem hiding this comment.
The README instructs running uv run poe poster-render, but there is no poster-render task defined in pyproject.toml (only poster-preview). Either add the missing Poe task or update the docs to the supported command(s).
| #v(10pt, weak: true) | ||
| #set align(left) | ||
| #set text({ 44pt }, weight: 600, font: "Vollkorn", fill: rgb("#2A6F63")) | ||
| #v(45pt, weak: true) | ||
| #if it.numbering != none { | ||
| numbering("I.", deepest) | ||
| h(7pt, weak: true) | ||
| } | ||
| #it.body | ||
| #v(25pt, weak: true) | ||
| #line(length: 100%, stroke: rgb(200, 200, 200)) | ||
| #v(25pt, weak: true) | ||
|
|
||
| // all other headers | ||
| ] else [ | ||
| #set text({ 36pt }, weight: 600, font: "Vollkorn", fill: rgb("#3E877A"), style: "italic") | ||
| #if it.level == 2 { |
There was a problem hiding this comment.
#set text({ 44pt }, ...) / #set text({ 36pt }, ...) appear to pass a content block as the font size. set text expects a length (or size: named arg), so this likely won’t type-check in Typst. Use a numeric length directly (e.g., 44pt) or size: 44pt / size: 36pt.
There was a problem hiding this comment.
Actionable comments posted: 7
🧹 Nitpick comments (2)
README.md (1)
1-1: Add alt text for the README logo.Line 1 embeds the new branding image without alternative text, which makes the README less accessible when images are unavailable or read by assistive tech.
♿ Proposed README image tweak
-<img width="600" src="https://raw.githubusercontent.com/wayscience/ome-arrow/main/docs/src/_static/ome-arrow-with-text.png?raw=true"> +<img width="600" alt="OME-Arrow" src="https://raw.githubusercontent.com/wayscience/ome-arrow/main/docs/src/_static/ome-arrow-with-text.png?raw=true">🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@README.md` at line 1, The README embeds an image tag without alt text which hurts accessibility; update the <img> tag to include a descriptive alt attribute (e.g., alt="OME Arrow logo" or similar meaningful description) so screen readers and broken-image fallbacks can present useful information, and optionally add a title attribute for hover tooltips.docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ (1)
15-19: Honor the exposed logo and author sizing parameters.
univ_logo_scaleandauthors_font_sizeare accepted and converted, but the rendered header still uses hardcoded sizes, so metadata overrides silently do nothing.♻️ Proposed refactor
univ_logo_scale: "140", univ_logo_column_size: "10", title_column_size: "33", title_font_size: "42", authors_font_size: "32", + departments_font_size: "26", footer_url_font_size: "40", footer_text_font_size: "40", @@ univ_logo_scale = int(univ_logo_scale) * 1% title_font_size = int(title_font_size) * 1pt authors_font_size = int(authors_font_size) * 1pt + departments_font_size = int(departments_font_size) * 1pt num_columns = int(num_columns) @@ - image(univ_logo, width: 130%), + image(univ_logo, width: univ_logo_scale), @@ - pad(top: 5pt, text(size: 28pt, authors)), + pad(top: 5pt, text(size: authors_font_size, authors)), // department and notes display - pad(top: 5pt, text(size: 26pt, emph(departments))) + pad(top: 5pt, text(size: departments_font_size, emph(departments)))Also applies to: 29-31, 154-167
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ` around lines 15 - 19, The header rendering currently ignores the converted metadata variables (univ_logo_scale, univ_logo_column_size, title_column_size, title_font_size, authors_font_size) and instead uses hardcoded sizes; update the typst template where the header, logo image and author text are composed to replace the hardcoded numeric literals with the corresponding variables (use the converted values and append appropriate units/percentages or fallbacks), ensure the logo/image sizing and column widths use univ_logo_scale and univ_logo_column_size, the title uses title_font_size and title_column_size, and the author block uses authors_font_size so metadata overrides actually take effect; keep existing conversion logic but reference those converted symbols in the image(), text(), and layout calls and provide sensible default values if any variable is missing.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-show.typ`:
- Around line 67-71: The footer_text_font_size parameter is incorrectly wrapped
in Typst content brackets; update the assignment in typst-show.typ so
footer_text_font_size uses a plain numeric value like footer_url_font_size
(remove the surrounding [...] from the $if(footer-text-font-size)$ branch),
ensuring the poster() call (and its int() conversion in typst-template.typ)
receives a numeric string; modify the $if...$ block referencing
footer_text_font_size to mirror the footer_url_font_size pattern.
In
`@docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ`:
- Line 4: The default value for the metadata key size is currently a quoted
descriptive string that cannot be parsed as WIDTHxHEIGHT; update the default to
a parseable poster size (for example "36x24" without extra quotes or descriptive
text) so the code that parses WIDTHxHEIGHT (lines referencing size parsing) can
safely call int() on the split parts; locate the size declaration in
typst-template.typ (the size: "'36x24' or '48x36''" entry) and replace it with a
simple parseable default like "36x24" (or choose one valid option) so downstream
parsing of WIDTH and HEIGHT succeeds.
In `@docs/presentations/2026-OME-community-meeting/poster.qmd`:
- Around line 48-52: The demo snippet has a Python syntax error and wrong
variable reference: the oa.view call has an unterminated string and it uses oa
instead of the collected crop; fix by closing the quote in the view call
(how="pyvista") and call view on the collected variable (lazy.view(...)) after
OMEArrow.scan(...).slice_lazy(...).collect(); ensure the symbols OMEArrow.scan,
slice_lazy, collect, and lazy.view are used so the cropped image is actually
visualized.
- Around line 59-61: The image filename referenced in the poster content under
the "OME-Zarr and iceberg-bioimage" heading is misspelled as
images/icebeg-bioimage-ome-zarr-integration.png (missing an "r"); update the
markdown reference in docs/presentations/2026-OME-community-meeting/poster.qmd
to images/iceberg-bioimage-ome-zarr-integration.png and also rename the actual
file in docs/presentations/2026-OME-community-meeting/images/ from
icebeg-bioimage-ome-zarr-integration.png to
iceberg-bioimage-ome-zarr-integration.png so the link and filename match the
iceberg-bioimage project name.
In `@docs/presentations/2026-OME-community-meeting/readme.md`:
- Around line 46-48: The README text and the ImageMagick commands are
inconsistent: the heading claims "150 dpi" but both commands use "-density 300".
Update the documentation so they match by either changing the heading text to
"150 dpi" -> "300 dpi" or altering the two magick commands (the lines producing
poster.png and poster.jpg with "-density 300") to use "-density 150"; ensure the
phrasing and both command lines (poster.png and poster.jpg) are consistent.
- Around line 50-55: The ImageMagick example still hardcodes the label "The
Software Gardening Almanack"; update the magick command's label argument to a
relevant title or neutral placeholder (e.g., "OME-Arrow Poster" or "{{TITLE}}")
so the documented command produces the correct poster title; edit the label:"The
Software Gardening Almanack" part in the magick invocation to the new text in
the readme's example.
In `@pyproject.toml`:
- Around line 154-163: The README references a Poe task named poster-render but
the Poe config only defines tasks.poster-preview.shell, so add a new Poe task
named tasks.poster-render.shell (or rename poster-preview to poster-render) that
invokes Quarto render for
docs/presentations/2026-OME-community-meeting/poster.qmd (or call the
appropriate quarto binary fallback like /Applications/quarto/bin/quarto) and
exits non‑zero with a clear error if Quarto is not found; ensure the new task
mirrors the existing conditional logic in tasks.poster-preview.shell but runs
"quarto render ... --output" (or the desired render command) so the documented
uv run poe poster-render command works.
---
Nitpick comments:
In
`@docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ`:
- Around line 15-19: The header rendering currently ignores the converted
metadata variables (univ_logo_scale, univ_logo_column_size, title_column_size,
title_font_size, authors_font_size) and instead uses hardcoded sizes; update the
typst template where the header, logo image and author text are composed to
replace the hardcoded numeric literals with the corresponding variables (use the
converted values and append appropriate units/percentages or fallbacks), ensure
the logo/image sizing and column widths use univ_logo_scale and
univ_logo_column_size, the title uses title_font_size and title_column_size, and
the author block uses authors_font_size so metadata overrides actually take
effect; keep existing conversion logic but reference those converted symbols in
the image(), text(), and layout calls and provide sensible default values if any
variable is missing.
In `@README.md`:
- Line 1: The README embeds an image tag without alt text which hurts
accessibility; update the <img> tag to include a descriptive alt attribute
(e.g., alt="OME Arrow logo" or similar meaningful description) so screen readers
and broken-image fallbacks can present useful information, and optionally add a
title attribute for hover tooltips.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 9567b569-8dec-4840-a23e-af39d014fa96
⛔ Files ignored due to path filters (18)
docs/presentations/2026-OME-community-meeting/images/cu-anschutz-short.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/cytomining-integration.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/cytotable-parquet-benchmarks.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/example-umap.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/header-combined-images.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/icebeg-bioimage-ome-zarr-integration.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/ome-arrow-benchmarks.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/ome-arrow-logo.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/ome-arrow-qr-text.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/ome-arrow-qr.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/pccma-cytodataframe-cosmicqc-result-example.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/spacer.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/what-is-ome-arrow.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/images/why-ome-arrow.pngis excluded by!**/*.pngdocs/presentations/2026-OME-community-meeting/ome-arrow-2026-poster.pdfis excluded by!**/*.pdfdocs/src/_static/logo.pngis excluded by!**/*.pngdocs/src/_static/ome-arrow-logo.pngis excluded by!**/*.pngdocs/src/_static/ome-arrow-with-text.pngis excluded by!**/*.png
📒 Files selected for processing (12)
.pre-commit-config.yamlREADME.mddocs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/_extension.ymldocs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-show.typdocs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typdocs/presentations/2026-OME-community-meeting/abstract.mddocs/presentations/2026-OME-community-meeting/poster.qmddocs/presentations/2026-OME-community-meeting/readme.mddocs/src/index.mddocs/src/presentations.mddocs/src/why-ome-arrow.mdpyproject.toml
| // Footer's URL and email font size (in pt). | ||
| $if(footer-url-font-size)$ footer_url_font_size: $footer-url-font-size$, $endif$ | ||
|
|
||
| // Footer's text font size (in pt). | ||
| $if(footer-text-font-size)$ footer_text_font_size: [$footer-text-font-size$], $endif$ |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# First, let's locate and examine the file
find . -type f -name "typst-show.typ" -o -path "*quarto-ext/poster*" -type f | head -20Repository: WayScience/ome-arrow
Length of output: 346
🏁 Script executed:
# Read the typst-show.typ file to see the context around lines 67-71
cat -n ./docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-show.typ | head -80Repository: WayScience/ome-arrow
Length of output: 3534
🏁 Script executed:
# Also examine the typst-template.typ to understand the poster function definition
cat -n ./docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typRepository: WayScience/ome-arrow
Length of output: 7202
Remove brackets from footer_text_font_size parameter to match other numeric font-size parameters.
Line 71 inconsistently wraps the value in Typst content brackets [...], unlike the adjacent footer_url_font_size on line 68 and all other numeric parameters. The poster() function expects a numeric string (converted via int() on line 36 of typst-template.typ), not a content block. This will cause type conversion to fail when the parameter is used.
🐛 Proposed fix
- $if(footer-text-font-size)$ footer_text_font_size: [$footer-text-font-size$], $endif$
+ $if(footer-text-font-size)$ footer_text_font_size: $footer-text-font-size$, $endif$📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| // Footer's URL and email font size (in pt). | |
| $if(footer-url-font-size)$ footer_url_font_size: $footer-url-font-size$, $endif$ | |
| // Footer's text font size (in pt). | |
| $if(footer-text-font-size)$ footer_text_font_size: [$footer-text-font-size$], $endif$ | |
| // Footer's URL and email font size (in pt). | |
| $if(footer-url-font-size)$ footer_url_font_size: $footer-url-font-size$, $endif$ | |
| // Footer's text font size (in pt). | |
| $if(footer-text-font-size)$ footer_text_font_size: $footer-text-font-size$, $endif$ |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-show.typ`
around lines 67 - 71, The footer_text_font_size parameter is incorrectly wrapped
in Typst content brackets; update the assignment in typst-show.typ so
footer_text_font_size uses a plain numeric value like footer_url_font_size
(remove the surrounding [...] from the $if(footer-text-font-size)$ branch),
ensuring the poster() call (and its int() conversion in typst-template.typ)
receives a numeric string; modify the $if...$ block referencing
footer_text_font_size to mirror the footer_url_font_size pattern.
| #let poster( | ||
| // set variables for use throughout | ||
| // note: some are referenced from `.qmd` file | ||
| size: "'36x24' or '48x36''", |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
python - <<'PY'
from pathlib import Path
import re
path = Path("docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ")
text = path.read_text()
match = re.search(r'size:\s*"([^"]+)"', text)
if not match:
raise SystemExit("No default size found")
value = match.group(1)
if not re.fullmatch(r"\d+x\d+", value):
raise SystemExit(f"Default size is not parseable as WIDTHxHEIGHT: {value!r}")
print(f"Default size is parseable: {value}")
PYRepository: WayScience/ome-arrow
Length of output: 132
🏁 Script executed:
cat -n "docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ"Repository: WayScience/ome-arrow
Length of output: 7202
Use a parseable default poster size.
The default size value is descriptive text, but lines 26-28 parse it as numeric WIDTHxHEIGHT. If metadata omits size, rendering will fail because int("'36") cannot parse the quoted default.
🔧 Proposed fix
- size: "'36x24' or '48x36''",
+ size: "48x36",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| size: "'36x24' or '48x36''", | |
| size: "48x36", |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@docs/presentations/2026-OME-community-meeting/_extensions/quarto-ext/poster/typst-template.typ`
at line 4, The default value for the metadata key size is currently a quoted
descriptive string that cannot be parsed as WIDTHxHEIGHT; update the default to
a parseable poster size (for example "36x24" without extra quotes or descriptive
text) so the code that parses WIDTHxHEIGHT (lines referencing size parsing) can
safely call int() on the split parts; locate the size declaration in
typst-template.typ (the size: "'36x24' or '48x36''" entry) and replace it with a
simple parseable default like "36x24" (or choose one valid option) so downstream
parsing of WIDTH and HEIGHT succeeds.
| # Create and collect a "lazy" crop of an image | ||
| lazy = OMEArrow.scan("image.parquet").slice_lazy(0, 512, 0, 512).collect() | ||
|
|
||
| # visualize the image with pyvista for jupyter-friendly views | ||
| oa.view(how="pyvista) |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
python - <<'PY'
from pathlib import Path
import ast
import re
path = Path("docs/presentations/2026-OME-community-meeting/poster.qmd")
text = path.read_text()
match = re.search(r"```python\n(.*?)\n```", text, re.S)
if not match:
raise SystemExit("No Python code block found")
ast.parse(match.group(1))
print("Python code block parses successfully")
PYRepository: WayScience/ome-arrow
Length of output: 427
🏁 Script executed:
cat -n docs/presentations/2026-OME-community-meeting/poster.qmd | sed -n '45,65p'Repository: WayScience/ome-arrow
Length of output: 2060
🏁 Script executed:
ls -la docs/presentations/2026-OME-community-meeting/images/ 2>/dev/null | grep -i "iceb"Repository: WayScience/ome-arrow
Length of output: 156
Fix the Python syntax error and variable reference in the demo snippet.
Line 52 has an unterminated string literal (how="pyvista missing closing quote), and the example collects a crop into lazy but then visualizes oa instead of the cropped result.
Proposed fix
-# Create and collect a "lazy" crop of an image
-lazy = OMEArrow.scan("image.parquet").slice_lazy(0, 512, 0, 512).collect()
+# Create and collect a lazy crop of an image
+crop = OMEArrow.scan("image.parquet").slice_lazy(0, 512, 0, 512).collect()
-# visualize the image with pyvista for jupyter-friendly views
-oa.view(how="pyvista)
+# Visualize the cropped image with pyvista for Jupyter-friendly views
+crop.view(how="pyvista")🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/presentations/2026-OME-community-meeting/poster.qmd` around lines 48 -
52, The demo snippet has a Python syntax error and wrong variable reference: the
oa.view call has an unterminated string and it uses oa instead of the collected
crop; fix by closing the quote in the view call (how="pyvista") and call view on
the collected variable (lazy.view(...)) after
OMEArrow.scan(...).slice_lazy(...).collect(); ensure the symbols OMEArrow.scan,
slice_lazy, collect, and lazy.view are used so the cropped image is actually
visualized.
| ## OME-Zarr and iceberg-bioimage | ||
|
|
||
|  as a warehouse/control-plane layer and [`duckdb_zarr`](https://github.com/photometric/duckdb-zarr) for analytical access to OME-Zarr-backed data. Here, **OME-Zarr / OME-TIFF** remain exchange formats, while **OME-Arrow / Parquet / Arrow-native tables** support joins and analytics, with **Lance** as a random-access table option.](images/icebeg-bioimage-ome-zarr-integration.png) |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
python - <<'PY'
from pathlib import Path
import re
path = Path("docs/presentations/2026-OME-community-meeting/poster.qmd")
base = path.parent
missing = []
for image_ref in re.findall(r"!\[[\s\S]*?\]\(([^)]+)\)", path.read_text()):
image_path = base / image_ref
exists = image_path.exists()
print(f"{image_ref}: {'OK' if exists else 'MISSING'}")
if not exists:
missing.append(image_ref)
if missing:
raise SystemExit(f"Missing image references: {missing}")
PYRepository: WayScience/ome-arrow
Length of output: 806
🏁 Script executed:
#!/bin/bash
# Check if the file exists and read the specific lines
if [ -f "docs/presentations/2026-OME-community-meeting/poster.qmd" ]; then
echo "=== File contents around lines 59-61 ==="
sed -n '55,65p' "docs/presentations/2026-OME-community-meeting/poster.qmd"
echo ""
echo "=== All image references in the file ==="
grep -n "!\[" "docs/presentations/2026-OME-community-meeting/poster.qmd"
else
echo "File not found"
fiRepository: WayScience/ome-arrow
Length of output: 4980
🏁 Script executed:
#!/bin/bash
# List all image files in the poster directory
ls -la "docs/presentations/2026-OME-community-meeting/images/" | grep -E "(icebeg|iceberg)"
echo "---"
# Show all PNG files in that directory
echo "All PNG files:"
ls -1 "docs/presentations/2026-OME-community-meeting/images/"*.png 2>/dev/null || echo "No PNG files found"Repository: WayScience/ome-arrow
Length of output: 1266
Fix filename typo for iceberg-bioimage project reference.
Line 61 references images/icebeg-bioimage-ome-zarr-integration.png, but the project is named iceberg-bioimage (note the missing 'r'). The image file itself is also currently misspelled in the repository, so while it renders now, both the filename and the reference should be corrected for consistency with the actual project name.
Fix
Rename the image file and update the reference:
-](images/icebeg-bioimage-ome-zarr-integration.png)
+](images/iceberg-bioimage-ome-zarr-integration.png)The image file in docs/presentations/2026-OME-community-meeting/images/ should also be renamed from icebeg-bioimage-ome-zarr-integration.png to iceberg-bioimage-ome-zarr-integration.png.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## OME-Zarr and iceberg-bioimage | |
|  as a warehouse/control-plane layer and [`duckdb_zarr`](https://github.com/photometric/duckdb-zarr) for analytical access to OME-Zarr-backed data. Here, **OME-Zarr / OME-TIFF** remain exchange formats, while **OME-Arrow / Parquet / Arrow-native tables** support joins and analytics, with **Lance** as a random-access table option.](images/icebeg-bioimage-ome-zarr-integration.png) | |
| ## OME-Zarr and iceberg-bioimage | |
|  as a warehouse/control-plane layer and [`duckdb_zarr`](https://github.com/photometric/duckdb-zarr) for analytical access to OME-Zarr-backed data. Here, **OME-Zarr / OME-TIFF** remain exchange formats, while **OME-Arrow / Parquet / Arrow-native tables** support joins and analytics, with **Lance** as a random-access table option.](images/iceberg-bioimage-ome-zarr-integration.png) |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/presentations/2026-OME-community-meeting/poster.qmd` around lines 59 -
61, The image filename referenced in the poster content under the "OME-Zarr and
iceberg-bioimage" heading is misspelled as
images/icebeg-bioimage-ome-zarr-integration.png (missing an "r"); update the
markdown reference in docs/presentations/2026-OME-community-meeting/poster.qmd
to images/iceberg-bioimage-ome-zarr-integration.png and also rename the actual
file in docs/presentations/2026-OME-community-meeting/images/ from
icebeg-bioimage-ome-zarr-integration.png to
iceberg-bioimage-ome-zarr-integration.png so the link and filename match the
iceberg-bioimage project name.
| # convert the poster pdf to png and jpg with 150 dpi and a white background | ||
| magick -antialias -density 300 -background white -flatten poster.pdf poster.png | ||
| magick -antialias -density 300 -background white -flatten poster.pdf poster.jpg |
There was a problem hiding this comment.
Make the documented DPI match the command.
Line 46 says 150 dpi, but both conversion commands use -density 300.
📝 Proposed wording fix
-# convert the poster pdf to png and jpg with 150 dpi and a white background
+# convert the poster pdf to png and jpg with 300 dpi and a white background📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| # convert the poster pdf to png and jpg with 150 dpi and a white background | |
| magick -antialias -density 300 -background white -flatten poster.pdf poster.png | |
| magick -antialias -density 300 -background white -flatten poster.pdf poster.jpg | |
| # convert the poster pdf to png and jpg with 300 dpi and a white background | |
| magick -antialias -density 300 -background white -flatten poster.pdf poster.png | |
| magick -antialias -density 300 -background white -flatten poster.pdf poster.jpg |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/presentations/2026-OME-community-meeting/readme.md` around lines 46 -
48, The README text and the ImageMagick commands are inconsistent: the heading
claims "150 dpi" but both commands use "-density 300". Update the documentation
so they match by either changing the heading text to "150 dpi" -> "300 dpi" or
altering the two magick commands (the lines producing poster.png and poster.jpg
with "-density 300") to use "-density 150"; ensure the phrasing and both command
lines (poster.png and poster.jpg) are consistent.
| # create the title with clip path through svg (typst doesn't support https://github.com/typst/typst/issues/5611) | ||
| magick forest_modified.png -resize 5700x400^ -gravity center -extent 5700x400 \ | ||
| \( -background none -fill white \ | ||
| -font "Vollkorn-Bold" -pointsize 340 \ | ||
| label:"The Software Gardening Almanack" \ | ||
| -gravity West -extent 5700x400 \) \ |
There was a problem hiding this comment.
Replace the stale example title before documenting this command.
The ImageMagick command still renders The Software Gardening Almanack, which appears unrelated to the OME-Arrow poster and could generate the wrong title asset if copied.
📝 Proposed placeholder correction
- label:"The Software Gardening Almanack" \
+ label:"OME-Arrow" \📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| # create the title with clip path through svg (typst doesn't support https://github.com/typst/typst/issues/5611) | |
| magick forest_modified.png -resize 5700x400^ -gravity center -extent 5700x400 \ | |
| \( -background none -fill white \ | |
| -font "Vollkorn-Bold" -pointsize 340 \ | |
| label:"The Software Gardening Almanack" \ | |
| -gravity West -extent 5700x400 \) \ | |
| # create the title with clip path through svg (typst doesn't support https://github.com/typst/typst/issues/5611) | |
| magick forest_modified.png -resize 5700x400^ -gravity center -extent 5700x400 \ | |
| \( -background none -fill white \ | |
| -font "Vollkorn-Bold" -pointsize 340 \ | |
| label:"OME-Arrow" \ | |
| -gravity West -extent 5700x400 \) \ |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/presentations/2026-OME-community-meeting/readme.md` around lines 50 -
55, The ImageMagick example still hardcodes the label "The Software Gardening
Almanack"; update the magick command's label argument to a relevant title or
neutral placeholder (e.g., "OME-Arrow Poster" or "{{TITLE}}") so the documented
command produces the correct poster title; edit the label:"The Software
Gardening Almanack" part in the magick invocation to the new text in the
readme's example.
| tasks.poster-preview.shell = """ | ||
| if command -v quarto >/dev/null 2>&1; then | ||
| quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser | ||
| elif [ -x /Applications/quarto/bin/quarto ]; then | ||
| /Applications/quarto/bin/quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser | ||
| else | ||
| echo "quarto not found. Install Quarto or add it to PATH." | ||
| exit 1 | ||
| fi | ||
| """ |
There was a problem hiding this comment.
Add the documented poster-render task or update the README command.
The poster README documents uv run poe poster-render, but this Poe config only defines poster-preview. As written, the documented render workflow will fail with an unknown task.
🛠️ Proposed Poe task addition
tasks.poster-preview.shell = """
if command -v quarto >/dev/null 2>&1; then
quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser
elif [ -x /Applications/quarto/bin/quarto ]; then
/Applications/quarto/bin/quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser
else
echo "quarto not found. Install Quarto or add it to PATH."
exit 1
fi
"""
+tasks.poster-render.shell = """
+if command -v quarto >/dev/null 2>&1; then
+ quarto render docs/presentations/2026-OME-community-meeting/poster.qmd
+elif [ -x /Applications/quarto/bin/quarto ]; then
+ /Applications/quarto/bin/quarto render docs/presentations/2026-OME-community-meeting/poster.qmd
+else
+ echo "quarto not found. Install Quarto or add it to PATH."
+ exit 1
+fi
+"""📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| tasks.poster-preview.shell = """ | |
| if command -v quarto >/dev/null 2>&1; then | |
| quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser | |
| elif [ -x /Applications/quarto/bin/quarto ]; then | |
| /Applications/quarto/bin/quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser | |
| else | |
| echo "quarto not found. Install Quarto or add it to PATH." | |
| exit 1 | |
| fi | |
| """ | |
| tasks.poster-preview.shell = """ | |
| if command -v quarto >/dev/null 2>&1; then | |
| quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser | |
| elif [ -x /Applications/quarto/bin/quarto ]; then | |
| /Applications/quarto/bin/quarto preview docs/presentations/2026-OME-community-meeting/poster.qmd --no-browser | |
| else | |
| echo "quarto not found. Install Quarto or add it to PATH." | |
| exit 1 | |
| fi | |
| """ | |
| tasks.poster-render.shell = """ | |
| if command -v quarto >/dev/null 2>&1; then | |
| quarto render docs/presentations/2026-OME-community-meeting/poster.qmd | |
| elif [ -x /Applications/quarto/bin/quarto ]; then | |
| /Applications/quarto/bin/quarto render docs/presentations/2026-OME-community-meeting/poster.qmd | |
| else | |
| echo "quarto not found. Install Quarto or add it to PATH." | |
| exit 1 | |
| fi | |
| """ |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@pyproject.toml` around lines 154 - 163, The README references a Poe task
named poster-render but the Poe config only defines tasks.poster-preview.shell,
so add a new Poe task named tasks.poster-render.shell (or rename poster-preview
to poster-render) that invokes Quarto render for
docs/presentations/2026-OME-community-meeting/poster.qmd (or call the
appropriate quarto binary fallback like /Applications/quarto/bin/quarto) and
exits non‑zero with a clear error if Quarto is not found; ensure the new task
mirrors the existing conditional logic in tasks.poster-preview.shell but runs
"quarto render ... --output" (or the desired render command) so the documented
uv run poe poster-render command works.
|
Avoiding further changes for now because this has been printed due to time constraints. Poster content was reviewed outside of PR during live meeting. |
Description
This PR adds an abstract and poster content in support of communicating OME-Arrow to a wider community.
What kind of change(s) are included?
Checklist
Please ensure that all boxes are checked before indicating that this pull request is ready for review.
Summary by CodeRabbit
New Features
Documentation
Chores