2.0.0b2
Pre-release
Pre-release
A quality and robustness release on top of 2.0.0b1, focused on the density-profile bilayer fitting (mesh refinement and thickness measurement), a forgiving centralized config system, and packaging fixes.
Added
- Per-triangle
bilayer_resolutionscore (0–1) in the thickness CSV — a reliability flag separating strictly-resolved leaflets from prior-recovered (slightly thin) measurements. morphometrics new_config --simple— a minimal, fully-runnable starter config (--verbosestill gives the full annotated template).- Centralized config defaults so partial/stripped configs run; per-command required-key validation with clean errors; trailing slashes on directory paths no longer required.
- Distance/orientation measurements default to all-vs-all when
intra/interare omitted. - Plugins can contribute
morphometricssubcommands via amorphometrics.commandsentry point. - GitHub Actions test workflow and unit tests.
Changed
- Dual-Gaussian bilayer fitting overhaul (refinement + thickness): height-above-base leaflet detection, shared-width centered fit over a symmetric window (removes a ~0.1 nm centering bias and the collapse failure mode), and a two-tier gate that recovers locally-merged bilayers from the global prior while rejecting genuine single/skewed peaks.
- Thickness measurement applies a real quality gate (resolution + R² + physical range), reporting
NaNfor unmeasurable triangles. accept_refinementfalls back to a surface's last available iteration when it converged early.mesh_refinementdefaults now match the documented template.export_obj:--angstroms→--scale_to_angstromswith config-aware units.
Fixed
- pycurv fork deadlock on Linux (
OMP_NUM_THREADS=1). export_objreads legacy/empty VTP surfaces.- NumPy 2.x compatibility (
np.trapz); deprecatedmatplotlib.cm.get_cmap.
Full changelog: https://github.com/GrotjahnLab/surface_morphometrics/blob/main/CHANGELOG.md