Skip to content

Releases: baradlab/surface_morphometrics

2.0.0b4

2.0.0b4 Pre-release
Pre-release

Choose a tag to compare

@bbarad bbarad released this 09 Jul 04:23

Protein-patch workflow overhaul and a mesh-refinement pycurv speed fix.

Added

  • Protein-to-membrane-edge distances. When per-triangle thickness is present, generate_patches writes a <prefix>_headgroup_distance (distance to the true membrane edge = midplane distance − thickness/2, measured at the patch's central triangle) per-particle into the annotated STAR, and patch_statistics reports it per-patch. Effective thickness falls back from the central triangle to the patch's distance-weighted mean, then to NaN.
  • patch_statistics reports min_protein_distance per real patch and keeps the measurement prefix in region_type (e.g. ribo_patch, ribo_random_patch) so multiple patch types can be compared.
  • patch_analysis.measurement_prefix (default ribo): patch measurement columns are prefixed, so re-running with a different prefix accumulates a second patch type (e.g. atp) on the same surface.

Changed

  • generate_patches edits the membrane .gt/.vtp/.csv in place instead of a separate *_patches set; patch_statistics/extract_patches default to the in-place *.AVV_rh* files. --output-dir now only affects the annotated STAR.
  • Refinement runs the final pycurv pass in a fresh subprocess — in-process at the end of a long run it was ~3–4× slower per NVV chunk (measured) from the loaded process's memory/allocator state, not the mesh. Also frees large arrays / gc.collect() between iterations and surfaces.

Fixed

  • Patch headgroup distance could exceed the protein distance (per-triangle-then-min came from different triangles, dropping NaN-thickness triangles). Now computed at the central triangle, guaranteeing headgroup_distance ≤ min_protein_distance.

Notes

  • generate_patches supports RELION 3/4 STAR files (absolute coordinates). RELION 5 centered coordinates (rlnCenteredCoordinate*Angst) are not yet supported — convert to absolute first.

Full changelog: see CHANGELOG.md.

2.0.0b3

2.0.0b3 Pre-release
Pre-release

Choose a tag to compare

@bbarad bbarad released this 08 Jul 22:28

Performance and robustness release for the mesh-refinement step, plus the move of the repository to the Barad Lab GitHub organization.

Changed

  • Mesh refinement now runs pycurv only once, on the final surface. Every intermediate iteration (cross-correlation and dual-Gaussian) builds a fast lightweight graph from VTK normals and warns that the surface is not curvature-ready; a single full pycurv normal-vector-voting pass runs on the accepted surface after the loop — on every exit path, including an early convergence stop — so the result is always a clean, curvature-ready surface. Previously every dual-Gaussian iteration re-ran the slow voting (~28 min on large surfaces), which dominated refinement time.
  • Mesh-refinement parallel fitting (dual-Gaussian offset centering and local thickness) now respects the configured cores instead of spawning one worker per logical CPU. Benchmarking showed throughput peaks near the configured core count and regresses beyond it, so this is both a correctness and a speed improvement.
  • accept_refinement messages now refer to "intermediate" iterations (any non-final iteration may lack a curvature graph), not specifically cross-correlation ones.
  • Repository moved to https://github.com/baradlab/surface_morphometrics.

Fixed

  • __version__ in surface_morphometrics/__init__.py had drifted a release behind pyproject.toml; both version strings are now kept in sync.

Full changelog: see CHANGELOG.md.

2.0.0b2

2.0.0b2 Pre-release
Pre-release

Choose a tag to compare

@bbarad bbarad released this 26 Jun 22:11

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_resolution score (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 (--verbose still 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/inter are omitted.
  • Plugins can contribute morphometrics subcommands via a morphometrics.commands entry 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 NaN for unmeasurable triangles.
  • accept_refinement falls back to a surface's last available iteration when it converged early.
  • mesh_refinement defaults now match the documented template.
  • export_obj: --angstroms--scale_to_angstroms with config-aware units.

Fixed

  • pycurv fork deadlock on Linux (OMP_NUM_THREADS=1).
  • export_obj reads legacy/empty VTP surfaces.
  • NumPy 2.x compatibility (np.trapz); deprecated matplotlib.cm.get_cmap.

Full changelog: https://github.com/GrotjahnLab/surface_morphometrics/blob/main/CHANGELOG.md

2.0.0b1

2.0.0b1 Pre-release
Pre-release

Choose a tag to compare

@bbarad bbarad released this 08 Jun 20:42
1243896

See CHANGELOG.MD for extensive breaking changes in 2.0 version.

v1.2

Choose a tag to compare

@bbarad bbarad released this 03 Jun 16:18
0b4f6af

What's Changed

New Contributors

Full Changelog: 1.1...1.2

v1.1

Choose a tag to compare

@bbarad bbarad released this 28 May 22:38
674dd7d

New version to support updated pymeshlab API and to deal with missing pyto dependencies.

1.0beta1

1.0beta1 Pre-release
Pre-release

Choose a tag to compare

@bbarad bbarad released this 06 Jan 23:16

Beta release of 1.0 - needs installer testing and updated citation, but this will be the final "feature release" for Barad, Medina et al JCB 2023 paper.

v0.2

Choose a tag to compare

@bbarad bbarad released this 29 Apr 04:45
1e3f7bf

Version 0.2 is the fully pipelined and configurable version of the surface morphometrics pipeline. Tutorial data and config file included so you can really jump in! This is the version prepared in response to review, and I anticipate that v1.0 (released with the final manuscript) will look very similar to this (With some extra polishing of the visualization side of the workflow, and bugfixes of course)

v0.1

Choose a tag to compare

@bbarad bbarad released this 16 Nov 05:12
e3bb533

Scripts for implicit surface reconstruction, tensor-voting based curvature analysis, and morphometric quantification. Release includes final surface reconstruction workflow but incomplete visualizations and quantifications.