Repository navigation
Add a slide deck walking through the MART tutorial - #27
Merged
Merged
Conversation
The deck is a reveal.js page in `docs/_extra/talks/mart/`, which Sphinx copies into the build unchanged, so it is served at `talks/mart/` next to the rest of the documentation. `make_figures.py` repeats the tutorial's calculation with a fixed shot-noise seed and saves slide-sized figures plus the numbers quoted in the text. `conf.py` runs it on every build so the slides always match the current code. Read the Docs needs ffmpeg for the reconstruction movie. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GqceVSp8s2msxj1Dr9MrGU
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #27 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 24 24
Lines 883 883
=========================================
Hits 883 883
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
The audience is collaborators who already know CTIS inversion in depth and are evaluating whether to adopt this package, so the deck now follows the tutorial cell by cell instead of explaining the inverse problem. Each of the 14 steps shows the tutorial's code and what it prints, with the shapes and units filled in from `make_figures.py` at build time. New slides cover the package layout, the named-array conventions, the `IdealInstrument` forward model, an abridged `MartInverter.__call__`, inverting your own images, plugging in your own instrument model, timings at tutorial scale, and the roadmap. The lines-of-sight figure is dropped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GqceVSp8s2msxj1Dr9MrGU
Retitle it "Simulating and Inverting a CTIS Observation" and drop the package-overview slide. The conventions slide now introduces `ScalarArray` before `FunctionArray` and typesets units with KaTeX. Step 2 explains `Cartesian2dVectorArray` and `Cartesian2dVectorLinearSpace`, and plotting the scene with `rgbmesh` becomes its own step, so there are now 15. The spectrum plots get a closed frame so they no longer look cut off on the right, and the remaining Unicode superscripts are typeset with KaTeX. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GqceVSp8s2msxj1Dr9MrGU
The setup lines before the loop move into the speaker notes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GqceVSp8s2msxj1Dr9MrGU
Add a slide before the MART internals that reproduces the example from `regridding.transpose_weights_conservative` with named arrays: one bright cell regridded onto a rotated grid and back. It shows that the transpose conserves the total but does not recover the cell, and ties it to `IdealInstrument.weights_transpose` and to MART's correction. Restore the setup lines before the loop on the MART internals slide. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GqceVSp8s2msxj1Dr9MrGU
Add a Talks section to the landing page, and a note at the top of the MART tutorial pointing to the slide deck that walks through it. The tutorial's link is raw HTML because the deck is copied into the build by `html_extra_path`, and nbsphinx warns about a relative link to a file that isn't in the source tree. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GqceVSp8s2msxj1Dr9MrGU
Resolve the conflict in the docs landing page by keeping both new sections: the Talks section from this branch, followed by the Citation section from main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GqceVSp8s2msxj1Dr9MrGU
Label the released features with the current version, link the new Citation section from the last slide, and drop the warning suppression around MART from the figure script now that ctis handles it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GqceVSp8s2msxj1Dr9MrGU
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a 26-slide reveal.js deck that walks collaborators through the "Invert a Synthetic Scene with MART" tutorial step by step. The audience already knows CTIS inversion and is evaluating whether to adopt ctis. It is served next to the docs at
talks/mart/(https://ctis.readthedocs.io/en/latest/talks/mart/once merged).Contents
ScalarArray), units, grids as cell edges, andFunctionArray.IdealInstrumentforward model (geometry, conservative-regridding weights, theimage()pipeline,backproject()), backprojection as the conservative transpose (the rotated-cell example fromregridding.transpose_weights_conservative), and an abridgedMartInverter.__call__.OptikaInstrumentvs. subclassingAbstractInstrument; timings at tutorial scale; status and roadmap.Links from the docs
How it works
docs/_extra/talks/mart/index.htmlis the deck: plain HTML that loads reveal.js 6.0.2, KaTeX and highlight.js from jsDelivr.html_extra_path = ['_extra']copies it into the build unchanged.docs/_extra/talks/mart/make_figures.pyrepeats the tutorial's calculation and saves slide-sized figures, an MP4 of the iterations, andnumbers.js. That file holds every printed shape, unit and number the slides quote; the HTML fills them in at load time, so the text can't drift from the code.docs/conf.pyruns every_extra/talks/*/make_figures.pyin a subprocess on each build. It's a subprocess because the agg backend the script needs would drop the jupyter-sphinx figures if it were set in the Sphinx process.IdealInstrument.image(), which has no seed argument..readthedocs.ymlinstallsffmpegfor the movie. The generated figures are gitignored.Speaker notes are on every slide (press
S), and?print-pdfgives a PDF.Test plan
main(16 blocks, including the own-images snippet)make_figures.pygives identical numbers across runs and between the local and Read the Docs buildssphinx-build -b html docs docs/_build/htmlsucceeded with no warnings (first revision)ruff checkandblack --checkpass on the new script🤖 Generated with Claude Code
https://claude.ai/code/session_01GqceVSp8s2msxj1Dr9MrGU