Skip to content

v2.0.0 release - #48

Merged
holsam merged 50 commits into
mainfrom
v2.0.0-release
Oct 23, 2026
Merged

holsam merged 50 commits into
mainfrom
v2.0.0-release

Conversation

@holsam

@holsam holsam commented Oct 23, 2026

Copy link
Copy Markdown
Owner

Pull Request (PR) description

Issues resolved

Resolves #17

holsam added 30 commits October 14, 2026 10:12
- Modified commands/analyse/analyse.py to use membrane thickness from config file for component processing.
- Modified commands/analyse/cli.py to add a CLI option for membrane thickness.
- Modified commands/analyse/utils/io.py to update printed summary to use outer diameters label.
- Modified commands/analyse/utils/measurement.py to derive outer diameter via shell-volume-inversion formula instead of as solid sphere.
- Modified config.toml to add a default membrane thickness to analyse section.
- Modified utils/config.py to add a membrane thickness field to analyse's configuration schema.
- Modified docs/analyse.md to include documentation on membrane thickness option.
- Modified tests/integration/analyse_integration_test.py to tighten equivalent diameter range check.
- Modified tests/unit/analyse_unit_test.py to update sphere diameter test with shell inversion tests.
- Modified commands/analyse/utils/geometry.py to derive relative semi-axis lengths from inertia eigenvalues using updated ellipsoid relation.
- Modified tests/unit/analyse_unit_test.py to update axis derivation unit tests to use new relation formula and add a test to check for the previous inverse square root's ceiling.
- Modified commands/analyse/utils/geometry.py to return NaN for degenerate components.
- Modified docs/analyse.md to update footnote on major/minor axes and relationship with equivalent diameter.
- Modified tests/integration/analyse_integration_test.py to tighten the aspect ratio check for synthetic spheres.
- Modified tests/unit/analyse_unit_test.py to add unit tests for axis ratio recovery and degenerate components.
- Modified commands/analyse/analyse.py to measure lumen volume using the gap-bridged mask.
- Modified commands/analyse/utils/filtering.py to pad components before dilation so growth isn't asymmetrically clipped at the bounding box.
- Modified docs/analyse.md to update footnote explaining lumen volume uses gap-bridged mask.
- Modified tests/unit/analyse_unit_test.py to define unit tests for components at the volume boundary.
- Added .github/workflows/main_version-update-check.yaml to check that a pull request raised against main has a version number greater that then current.
- Added .github/workflows/main_publish-release.yaml to publish a GitHub release on commits to main branch.
Merge pull request #40 from holsam/gh-workflows
Merge pull request #41 from holsam/analysis-improvements
- Modified commands/label/label.py to remap component IDs to a sequential range instead of relabelling by adjacency.
- Modified tests/integration/label_integration_test.py to add a unit test to check a split vesicle is written to one label.
- Modified tests/unit/label_unit_test.py to make the separate vesicles closer to the merge tolerance boundary.
- Modified commands/label/label.py to counts excluded components at each filter stage and to log & write a per-file tally file beside labelled output.
- Modified commands/model/model.py to use the max workers config value from model section instead of label section.
- Modified commands/model/utils/least_squares_fit.py to read latitude span and beam-axis angle from the beam (z) column instead of the x column.
- Modified tests/unit/model_unit_test.py to rebuild point cloud helpers in z, y, x order and adds tests for the beam-axis and missing-wedge guards.
- Modified commands/model/utils/least_squares_fit.py to document BIC comparison limitations and add a size-limited flag to the reliability assessment.
Merge pull request #42 from holsam/label-improvements
Merge pull request #43 from holsam/model-improvements
- Modified utils/mrc.py to read voxel sizes from MRC file header and log a warning when y or z differs from x.
- Modified tests/unit/mrc_unit_test.py to add unit tests covering anisotropic header warnings.
- Modified commands/analyse/analyse.py to identify components touching the z-boundary and to flag this.
- Modified commands/analyse/utils/measurement.py to add a z-boundary check and QC flag.
- Modified tests/unit/analyse_unit_test.py to add unit tests for z-boundary check and QC flag.
- Modified commands/analyse/utils/measurement.py to add per-file membrane thickness estimation.
- Modified commands/analyse/analyse.py to resolve membrane thickness per file and record this in results.
- Modified commands/analyse/cli.py to update option help text.
- Modified config.toml to set analyse thickness to "auto" and label thickness to 2.6nm.
- Modified utils/config.py to update analyse's thickness key to accept 'auto'.
- Modified docs/config.md to document updated defaults.
- Modified docs/analyse.md to document auto mode, added output columns and update the equivalent diameter footnote.
- Modified tests/unit/analyse_unit_test.py to add unit test for membrane thickness estimation.
- Modified tests/integration/analyse_integration_test.py to update tests.
- Modified commands/label/label.py to identify components too small to reach the coverage threshold from components with incomplete coverage.
- Modified commands/label/utils/geometric_proxies.py to expose arc-coverage grid size as a shared constant.
- Modified tests/integration/label_integration_test.py to add test for exclusion tally reporting size-floor breakdown.
- Modified commands/model/model.py to log warning when input file has only one non-zero label and could be a binary segmentation.
- Modified tests/integration/model_integration_test.py to add a test for warning produced when given a binary mask.
- Modified commands/analyse/analyse.py to log warning and skip MRC files carrying an EValuator marker.
- Modified commands/model/model.py to write EValuator marker into the header of model output.
- Modified utils/mrc.py to add EValuator marker constant, update writer utility to include optional header, and add a label reader utility.
- Modified tests/integration/analyse_integration_test.py to add a test for skipped MRC files.
- Modified tests/unit/mrc_unit_test.py to add tests for the header labels.
Merge pull request #44 from holsam/misc-improvements
- Modified commands/tools/benchmark_missing_wedge/benchmark_missing_wedge.py to use the degraded shell volume during convex hull processing to match other methods.
- Modified commands/tools/utils/synthetic.py to record volume-equivalent diameter as ground truth diameter and keep nominal diameter alongside.
- Modified commands/tools/benchmark_missing_wedge/benchmark_missing_wedge.py to use membrane thickness when generating shells and converting shell voxels to a diameter.
- Modified commands/tools/benchmark_missing_wedge/defaults.py to add default membrane thickness for benchmarks.
- Modified commands/tools/benchmark_missing_wedge/methods.py to derive outer diameter from shell voxel count.
- Modified commands/tools/benchmark_geometric_proxy/benchmark_geometric_proxy.py to record timing and error for independent diagonal baseline alongside existing methods.
- Modified commands/tools/benchmark_geometric_proxy/defaults.py to registers diagonal baseline as a benchmarked method.
- Modified commands/tools/benchmark_geometric_proxy/methods.py to add independent naive diagonal radius method.
- Modified commands/tools/benchmark_geometric_proxy/summaries.py to assign a plot colour to diagonal baseline results.
- Modified docs/tools.md to document diagonal baseline.
- Added utils/figures/theme.py to provide streamlit-free theme constants and a static theme resolver.
- Moved commands/viewer/utils/plots.py to utils/figures/plots.py so figure builders no longer import streamlit.
- Moved commands/viewer/utils/format.py to utils/figures/format.py so column label formatting used by the builders is not tied to viewer specifically.
- Modified commands/viewer/utils/theme.py to import theme constants from new figures utility.
- Modified commands/viewer/app/pages/tomogram.py to import builders and formatter from new figures utility.
- Modified tests/unit/viewer_unit_test.py to import builders and formatter from new figures utility.
- Added tests/unit/figures_unit_test.py to check figure builders import without streamlit.
- Added commands/plot/utils/data.py to load analyse/model results, filter debris, log any drop reasons then joins the two datasets.
- Modified tests/unit/plot_unit_test.py to add adds unit tests for the data preprocessing utilities.
holsam added 20 commits October 16, 2026 09:25
- Added commands/plot/utils/export.py to export plotly figures as SVG files and summary tables as XLSX files.
- Modified pyproject.toml & uv.lock to add new plot optional dependency group.
- Modified tests/unit/plot_unit_test.py to define unit tests for exporting.
- Modified utils/figures/plots.py to add plot-specific builder functions.
- Added commands/plot/sections.py to define functions for creating figures per section.
- Modified commands/plot/plot.py to use Python sections rather than R scripts.
- Modified commands/plot/cli.py to replace --rscript option with --include-flagged option.
- Modified commands/plot/utils/input.py to update runnable sections.
- Modified utils/config.py to update plot configuration keys and section names.
- Modified config.toml to update plot config table to contain defaults.
- Modified pyproject.toml to remove packaged R scripts.
- Removed commands/plot/r/*, utils/r/*, and commands/plot/utils/dispatch.py.
- Modified tests/unit/plot_unit_test.py to replace R dispatch tests.
- Modified tests/integration/plot_integration_test.py to add tests for Python section orchestration.
- Modified commands/plot/cli.py to add --agreement option.
- Modified commands/plot/plot.py to run the agreement section when pairs provided.
- Modified commands/plot/sections.py to add function for generating the agreement section.
- Modified commands/plot/utils/input.py to parse agreement pairs.
- Modified tests/unit/plot_unit_test.py to add agreement parsing and gating tests.
- Modified tests/integration/plot_integration_test.py to add test for agreement.
Merge pull request #45 from holsam/figure-improvements
Merge pull request #46 from holsam/tools-improvements
- Modified commands/label/utils/merge.py to update merge logic to check if components are concentric (similar centroid, different radii) and to avoid merging these.
- Modified commands/utils/config.py to add new configuration keys for concentric merge radius and centre thresholds.
- Modified commands/label/label.py to pass new config keys through to merge utilities.
- Modified docs/config.md to add new configuration keys to reference.
- Modified docs/label.md to explain how concentric components are determined.
- Modified config.toml to add defaults for new configuration keys.
- Modified tests/unit/label_unit_test.py to define unit tests for concentric merge logic.
- Modified config.toml to update merge_centre_tol_factor to 0.573 (from 1.5).
- Modified utils/config.py to update default value for merge_centre_tol_factor to 0.573.
- Modified tests/unit/config_unit_test.py to check the merge_centre_tol_factor value in config.toml matches the schema in utils/config.py.
- Modified tests/unit/label_unit_test.py to check the default merge_centre_tol_factor does not merge neighbours.
- Modified docs/config.md to update default merge_centre_tol_factor value in reference.
- Modified commands/analyse/utils/measurement.py to remove touches Z boundary from QC flags.
- Modified commands/analyse/analyse.py to add touches Z boundary check to output CSV.
- Modified tests/unit/analyse_unit_test.py to remove tests checking Z boundary is in QC flags.
- Modified tests/unit/plot_unit_test.py to update tests to not use Z boundary check.
- Modified docs/analyse.md to include Z boundary check in output.
- Modified commands/analyse/utils/measurement.py to add functions for calculating outer diamter from largest xy slice.
- Modified commands/analyse/analyse.py to add xy diameter as additional reported measurement.
- Modified tests/units/analyse_unit_test.py to add tests for xy diameter calculation.
- Modified docs/analyse.md to add xy diameter to reported measurements.
- Modified commands/plot/utils/data.py to add populations based on filtered QC and Z clipping.
- Modified commands/plot/sections.py to run sections over populations for comparison.
- Modified tests/unit/plot_unit_test.py to add tests for population splits.
- Modified commands/plot/utils/data.py to join fitted diameters to analyse frames.
- Modified commands/plot/sections.py to load fitted diamters and use model output for comparisons.
- Modified tests/unit/plot_unit_test.py to add tests attaching fitted diameters.
- Modified commands/plot/utils/data.py to add functions to aggregate tomogram data.
- Modified commands/plot/sections.py to use per-tomogram rather than per-EV values.
- Modified tests/unit/plot_unit_test.py to add tests for tomogram aggregation.
- Modified commands/plot/sections.py to plot scatter and correlation stats at tomogram-level instead of EV-level.
- Modified test/unit/plot_unit_test.py to add tests for tomogram-level stats.
- Modified tests/cli/cli_test.py to fix test using previous R dispatch code so it uses current section runner.
- Modified tests/integration/plot_integration_test.py to use three tomograms for comparison test and PCA.
- Modified tests/integration/analyse_integration_test.py to include added columns to expected CSV columns.
- Modified tests/unit/config_unit_test.py to update expected default plot sections.
Merge pull request #47 from holsam/gen-improvements
@holsam holsam self-assigned this Oct 23, 2026
@holsam holsam added the enhancement New feature or request label Oct 23, 2026
@holsam
holsam merged commit 967e3c2 into main Oct 23, 2026
1 check passed
@holsam
holsam deleted the v2.0.0-release branch October 23, 2026 14:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Export figures as .svg

1 participant