RESUMEN
Curvature is a fundamental morphological descriptor of cellular membranes. Cryo-electron tomography (cryo-ET) is particularly well-suited to visualize and analyze membrane morphology in a close-to-native state and molecular resolution. However, current curvature estimation methods cannot be applied directly to membrane segmentations in cryo-ET, as these methods cannot cope with some of the artifacts introduced during image acquisition and membrane segmentation, such as quantization noise and open borders. Here, we developed and implemented a Python package for membrane curvature estimation from tomogram segmentations, which we named PyCurv. From a membrane segmentation, a signed surface (triangle mesh) is first extracted. The triangle mesh is then represented by a graph, which facilitates finding neighboring triangles and the calculation of geodesic distances necessary for local curvature estimation. PyCurv estimates curvature based on tensor voting. Beside curvatures, this algorithm also provides robust estimations of surface normals and principal directions. We tested PyCurv and three well-established methods on benchmark surfaces and biological data. This revealed the superior performance of PyCurv not only for cryo-ET, but also for data generated by other techniques such as light microscopy and magnetic resonance imaging. Altogether, PyCurv is a versatile open-source software to reliably estimate curvature of membranes and other surfaces in a wide variety of applications.