PyFOCUSR
Python implementation of the FOCUSR
FOCUSR = Feature Oriented Correspondence using Spectral Regularization and is described in [1].
Introduction / Background
This package will find correspondence between points on two surfaces using spectral coordinate information to regularize the surface matching. Non-rigid registration between surface points is conducted using Coherent Point Drift (CPD) as described in [2] and impelmented in CyCPD [3]. More recent versions/updated versions of this (spectral alignment/registration) algorithm were developed by the original authors [4], [5] but are not covered here.
[1] Lombaert H, Grady L, Polimeni JR, Cheriet F. FOCUSR: Feature Oriented Correspondence Using Spectral Regularization--A Method for Precise Surface Matching. IEEE Transactions on Pattern Analysis and Machine Intelligence. 2013;35(9):2143-2160. doi:10.1109/TPAMI.2012.276
[2] Myronenko A, Xubo Song. Point Set Registration: Coherent Point Drift. IEEE Transactions on Pattern Analysis and Machine Intelligence. 2010;32(12):2262-2275. doi:10.1109/TPAMI.2010.46
An open-source version of the manuscript can be found here: https://tinyurl.com/tph4u7e
[3] https://github.com/gattia/cycpd
[4] Lombaert H, Sporring J, Siddiqi K. Diffeomorphic Spectral Matching of Cortical Surfaces. In: Gee JC, Joshi S, Pohl KM, Wells WM, Zöllei L, eds. Information Processing in Medical Imaging. Vol 7917. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer Berlin Heidelberg; 2013:376-389. doi:10.1007/978-3-642-38868-2_32
[5] Lombaert H, Arcaro M, Ayache N. Brain Transfer: Spectral Analysis of Cortical Surfaces and Functional Maps. In: Ourselin S, Alexander DC, Westin C-F, Cardoso MJ, eds. Information Processing in Medical Imaging. Vol 9123. Lecture Notes in Computer Science. Cham: Springer International Publishing; 2015:474-487. doi:10.1007/978-3-319-19992-4_37
Installation
It is recommended that installtion is performed in a new environment.
conda create --name focusr python=3.7
git clone https://github.com/gattia/pyfocusr
cd pyfocusr
# install dependencies
make requirements
# install pyfocusr
make install
Examples
Jupyter notebook Example_registering_two_bone_meshes in /examples shows extended example with visualizations along the way. Some example steps include:
Spectral coordinates
Normalized spectral coordinates (eigenvectors) are calculated for each mesh. Below shows examples for the first 3 eigenvectors.
| Eigen Vector 1 - Fiedler vector | Eigen Vector 2 | Eigen Vector 3 |
|---|---|---|
Next, the spectral coordinates (eigenvectors) for each node of the mesh (shown above) are used as xyz positions and are aligned.
The following includes the meshes at various steps of the registration process as well as one mesh calculated as the average of the source & target.
| Source Mesh | Target Mesh |
|---|---|
| Source Transformed to Target | Average Mesh |
MIT License.
Metadata
Release files for pyfocusr 0.0.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pyfocusr-0.0.15.tar.gz | 13.6 MB | Without provenance | Details |
Release files / pyfocusr-0.0.15.tar.gz
| Download URL | pyfocusr-0.0.15.tar.gz |
|---|---|
| Size | 13.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b96bec22600cff0f444342e68569ec95b32b9c052a4fcb369c7c63d1fd2bec10
|
|
BLAKE2b-256 checksum How to use checksums |
d1693e89d358faea5929b09e3eff5b224fba452c90c7d3d6f1753ec01b276d9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.9.19
|
Security for pyfocusr 0.0.15
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.