This Python library was made as part of the Master's thesis "Integral Invariants for Multiscale Curvature Estimations on Cell Membranes" by Simon Biberger. It contains the implementation of the paper "Principal curvatures from the integral invariant viewpoint" by Helmut Pottmann, Johannes Wallner, Yong-Liang Yang, Yu-Kun Lai, and Shi-Min Huc from 2007 (doi). Additionally, their idea of splitting occupancy grids was formalised in the thesis and two algorithms for occupancy grid splitting were proposed:
- a simple algorithm, which produces a highly structured set of surface-covering cubes fast,
- a sweep plane algorithm that constructs a set of cubes, which adapt organically to the local geometry.
The step to go from a set of surface-covering cubes to a set of occupancy grids can be non-trivial for complex shapes. Thus, we proposed a extension of the framework by Pottmann et al., which uses a more relaxed notion of occupancy grids. This allows the use of a dataset's probability or intensity values for multiscale curvature estimation. As choosing an appropriate scale can be difficult, Cestimii contains a method to efficiently average results over multiple scales at once by reprocessing results from lower scales.
The easiest way to install cestimii is to use the package manager pip for the installation:
pip install git+https://github.com/uhlmanngroup/Cestimii.git#egg=cestimii
Additionally, a popular method to manage and use Python is by using Anaconda. As cestimii does not have special dependencies, it can be added to most conda environments with the same command as above. If you would like to create a new environment specifically for cestimii, you can execute the following three commands separately in the Anaconda Shell:
conda create --name Cestimii python=3.8
conda activate Cestimii
pip install git+https://github.com/uhlmanngroup/Cestimii.git#egg=cestimii
You can test if the installation worked correctly by executing the test.py script in the scripts folder. I.e. just cd into the correct folder and execute
python test.py
On slow machines, this might take a few minutes as it is calculating a wide variety of curvature estimations.
Please refer to the Wiki.
Cestimii depends on the following libraries
- for calculations: NumPy, SciPy,
- for visualisations (optional): matplotlib, napari,
- for the processing of image stacks (optional): PIL (Pillow), h5py.
TBD.
The following two images show the mean curvature estimations using the regular and multiple scales at once curvature estimation framework with relaxed occupancy grids for scales r=15 and r=18,20,22,...,30. The images show two separate parts of a segmented cell membrane dataset provided by Diz-Muñoz, EMBL Heidelberg.
I would like to express my deepest appreciation to Brigitte Forster-Heinlein from the University of Passau and Virginie Uhlmann from EMBL-EBI for their continuous support, invaluable advice and excellent feedback. This project was supported by a fellowship within the IFI programme of the German Academic Exchange Service.
If you find cestimii useful please cite this repository using its DOI as follows:
Simon Biberger (2021). cestimii: a multiscale curvature estimation framework for python. doi: 10.5281/zenodo.5551069
Note this DOI will resolve to all versions of napari-ccp4map. To cite a specific version please find the DOI of that version on our zenodo page. The DOI of the latest version is in the badge at the top of this page.
You can also use the BibTeX below:
@software{cestimii,
author = {Simon Biberger},
title = {Cestimii: A Multiscale Curvature Estimation Framework for Python},
url = {https://github.com/uhlmanngroup/Cestimii},
version = {0.7},
doi = {10.5281/zenodo.5551069},
date = {2021-10-05},
}