Prepare pyvcell for 2026 workshop: docs, remote simulation API, and client regeneration#35
Merged
Prepare pyvcell for 2026 workshop: docs, remote simulation API, and client regeneration#35
Conversation
…ization Decouple geometry processing from visualization by extracting a SegmentedImageGeometry class that holds a labeled numpy array with spatial metadata, independent of PyVista/VTK. Key changes: - New pyvcell/_internal/geometry/ package with SegmentedImageGeometry - Geometry.to_segmented_image() factory method - Geometry.plot() now delegates to SegmentedImageGeometry.plot() - Fix analytic rasterizer to honor first-added-wins priority - Fix Image axis ordering: size is now consistently (X, Y, Z) with X-fastest pixel data, matching VCell VCML convention Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add save_path to Plotter.plot_concentrations(), plot_slice_2d(), plot_slice_3d(), and SegmentedImageGeometry.plot() / Geometry.plot() so notebooks can save figures to files for use in static docs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…on tests Notebooks now save figures via save_path to docs/guides/images/. Markdown guides reference these images so static pages show plots. Add pytest-based notebook execution tests under tests/guides/. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
login_interactive() defaulted api_base_url to include /api/v1, causing a doubled path prefix since the generated client already includes it in resource paths. The generated saveBioModel method listed application/json in the Accept header but the server only @produces(APPLICATION_XML). The deserializer did not handle application/xml responses from the server. Added scripts/python-fix.sh to patch these code-generator bugs after regeneration, and wired it into generate.sh. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Parse server-assigned version metadata (key, name, owner, date) from VCML XML into Biomodel and Simulation objects, enabling programmatic access to server keys after save/load round-trips. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Create notebook walking through authenticate, save, run, monitor, and export workflow against the live VCell server. Exclude from CI execution since it requires interactive OAuth login. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace file download approach with lazy chunked reads via TensorStore's HTTP driver against VCell's S3 proxy. Update guide and notebook to parse the export URL and open the N5 dataset remotely. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduce the `vcml_remote` module to automate the multi-step process of saving a model, starting a simulation, polling for completion, and exporting results to N5. The new `run_remote` function provides a single-call entry point that returns a TensorStore, while composable functions like `save_and_start` and `export_n5` offer more granular control. Update the tutorial notebook and documentation to demonstrate this simplified workflow. Co-Authored-By: Claude Opus 4.6
Implement _write_version() in VcmlWriter so Version elements roundtrip through read/write cycles. Fix mypy errors in vcml_remote.py: use camelCase alias names for generated API models and narrow str|None type.
…ckend Update expected concentration values in test_simulations.py and test_result.py to reflect domain-masked mean computation. Set matplotlib Agg backend in tests that call plot functions to prevent hanging on interactive display. Fix publication API test import.
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.
Summary
exploration) with companion Jupyter notebooks and generated images
vcml_remotemodule): High-level convenience functions (run_remote,save_and_start,export_n5) to authenticate, save a model, run simulations, poll for completion, andread results via TensorStore — all from Python
SegmentedImageGeometryclass, fixed analytic/image rasterization axis ordering, addedsave_pathto plot methods for static doc generationdocs-execute-notebooksmake target, cache-corruption resilience in GitHub ActionsTest plan
pytest tests/— unit tests including new geometry and expression testspytest tests/guides/test_notebooks.py— notebook execution tests (excludes remote-simulations which requires OAuth)mkdocs serve— verify documentation renders correctly with imagesdocs/guides/notebooks/remote-simulations.ipynbagainst live VCell server