pyfmaps 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyfmaps-1.0.0/LICENSE +21 -0
- pyfmaps-1.0.0/MANIFEST.in +7 -0
- pyfmaps-1.0.0/PKG-INFO +89 -0
- pyfmaps-1.0.0/README.md +58 -0
- pyfmaps-1.0.0/data/cat-00.off +21619 -0
- pyfmaps-1.0.0/data/landmarks.txt +20 -0
- pyfmaps-1.0.0/data/lion-00.off +14998 -0
- pyfmaps-1.0.0/data/lion2cat +5000 -0
- pyfmaps-1.0.0/pyFM/FMN/FMN.py +678 -0
- pyfmaps-1.0.0/pyFM/FMN/__init__.py +1 -0
- pyfmaps-1.0.0/pyFM/__init__.py +0 -0
- pyfmaps-1.0.0/pyFM/eval/__init__.py +1 -0
- pyfmaps-1.0.0/pyFM/eval/evaluate.py +78 -0
- pyfmaps-1.0.0/pyFM/functional.py +611 -0
- pyfmaps-1.0.0/pyFM/mesh/__init__.py +1 -0
- pyfmaps-1.0.0/pyFM/mesh/file_utils.py +405 -0
- pyfmaps-1.0.0/pyFM/mesh/geometry.py +872 -0
- pyfmaps-1.0.0/pyFM/mesh/laplacian.py +164 -0
- pyfmaps-1.0.0/pyFM/mesh/trimesh.py +1029 -0
- pyfmaps-1.0.0/pyFM/optimize/__init__.py +1 -0
- pyfmaps-1.0.0/pyFM/optimize/base_functions.py +233 -0
- pyfmaps-1.0.0/pyFM/refine/__init__.py +2 -0
- pyfmaps-1.0.0/pyFM/refine/icp.py +124 -0
- pyfmaps-1.0.0/pyFM/refine/zoomout.py +183 -0
- pyfmaps-1.0.0/pyFM/signatures/HKS_functions.py +100 -0
- pyfmaps-1.0.0/pyFM/signatures/WKS_functions.py +116 -0
- pyfmaps-1.0.0/pyFM/signatures/__init__.py +2 -0
- pyfmaps-1.0.0/pyFM/spectral/__init__.py +3 -0
- pyfmaps-1.0.0/pyFM/spectral/convert.py +193 -0
- pyfmaps-1.0.0/pyFM/spectral/nn_utils.py +31 -0
- pyfmaps-1.0.0/pyFM/spectral/projection_utils.py +932 -0
- pyfmaps-1.0.0/pyFM/spectral/shape_difference.py +83 -0
- pyfmaps-1.0.0/pyfmaps.egg-info/PKG-INFO +89 -0
- pyfmaps-1.0.0/pyfmaps.egg-info/SOURCES.txt +38 -0
- pyfmaps-1.0.0/pyfmaps.egg-info/dependency_links.txt +1 -0
- pyfmaps-1.0.0/pyfmaps.egg-info/requires.txt +5 -0
- pyfmaps-1.0.0/pyfmaps.egg-info/top_level.txt +1 -0
- pyfmaps-1.0.0/setup.cfg +43 -0
- pyfmaps-1.0.0/setup.py +6 -0
pyfmaps-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2020 Robin Magnet
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the Software), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, andor sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
pyfmaps-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: pyfmaps
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Python bindings for functional maps
|
|
5
|
+
Author: Robin Magnet
|
|
6
|
+
License: MIT License
|
|
7
|
+
Project-URL: Bug Tracker, https://github.com/RobinMagnet/pyFM/issues
|
|
8
|
+
Project-URL: Documentation, https://github.com/RobinMagnet/pyFM/blob/master/example_notebook.ipynb
|
|
9
|
+
Project-URL: Source Code, https://github.com/RobinMagnet/pyFM
|
|
10
|
+
Project-URL: User Support, https://github.com/RobinMagnet/pyFM/issues
|
|
11
|
+
Classifier: Development Status :: 2 - Pre-Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Classifier: Topic :: Software Development :: Testing
|
|
23
|
+
Requires-Python: >=3.7
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: numpy
|
|
27
|
+
Requires-Dist: scipy
|
|
28
|
+
Requires-Dist: potpourri3d
|
|
29
|
+
Requires-Dist: robust_laplacian
|
|
30
|
+
Requires-Dist: tqdm
|
|
31
|
+
|
|
32
|
+
## V 1.0 is coming very soon, with release on PyPi
|
|
33
|
+
## Expected pyFM.torch version
|
|
34
|
+
|
|
35
|
+
# pyFM - Python bindings for functional maps
|
|
36
|
+
pyFM is a pure python implementation of multiple tools used for Functional Maps computations. Namely, it implements shape signatures, functional map optimization and refinement algorithm, and above all an easy-to-use interface for using functional maps.
|
|
37
|
+
|
|
38
|
+
## Features
|
|
39
|
+
|
|
40
|
+
* A TriMesh class incuding many standard geometric measures with python code, including geodesic distances (using the [heat method](https://www.cs.cmu.edu/~kmcrane/Projects/HeatMethod/)), normals, projection on the LBO basis, export of .off or .obj files with textures.
|
|
41
|
+
* A pure Python (fast) implementation of Laplace-Beltrami Operator.
|
|
42
|
+
* Implementation of [HKS](http://www.lix.polytechnique.fr/~maks/papers/hks.pdf) and [WKS](http://imagine.enpc.fr/~aubrym/projects/wks/index.html) (and their version for landmarks) with multiple level of automation for parameters selection (from full automatic to total control)
|
|
43
|
+
* Implementation of icp and [ZoomOut](https://arxiv.org/abs/1904.07865) on Python
|
|
44
|
+
* *Fast* conversion from Functional Map to vertex to vertex map or [precise map](https://www.cs.technion.ac.il/~mirela/publications/p2p_recovery.pdf) using p-dimensional [vertex to mesh projection](https://github.com/RobinMagnet/pyFM/blob/master/pyFM/spectral/projection_utils.py)
|
|
45
|
+
* A FunctionalMapping class for straightforward computation of Functional Maps mixing all the previous features
|
|
46
|
+
* Functions for evaluating functional maps.
|
|
47
|
+
* Support for Functional Map Networks : Consistent Latent Basis, Canonical Consistent Latent Basis, consistency weights, Consistent ZoomOut
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
In particular this codebade contains python implementations of the following papers :
|
|
51
|
+
* [The Heat Method for Distance Computation](https://www.cs.cmu.edu/~kmcrane/Projects/HeatMethod/)
|
|
52
|
+
* [A Concise and Provably Informative Multi-Scale Signature Based on Heat Diffusion](http://www.lix.polytechnique.fr/~maks/papers/hks.pdf)
|
|
53
|
+
* [The Wave Kernel Signature: A Quantum Mechanical Approach To Shape Analysis](http://imagine.enpc.fr/~aubrym/projects/wks/index.html)
|
|
54
|
+
* [ZoomOut: Spectral Upsampling for Efficient Shape Correspondence](https://arxiv.org/abs/1904.07865), with MatLab implementation [here](https://github.com/llorz/SGA19_zoomOut)
|
|
55
|
+
* [Deblurring and Denoising of Maps between Shapes](https://www.cs.technion.ac.il/~mirela/publications/p2p_recovery.pdf), with Matlab implementation [here](https://mirela.net.technion.ac.il/publications/)
|
|
56
|
+
* [Functional Maps: A Flexible Representation of Maps Between Shapes](http://www.lix.polytechnique.fr/~maks/papers/obsbg_fmaps.pdf)
|
|
57
|
+
* [Informative Descriptor Preservation via Commutativity for Shape Matching](http://www.lix.polytechnique.fr/~maks/papers/fundescEG17.pdf)
|
|
58
|
+
* [Continuous and Orientation-preserving Correspondences via Functional Maps](https://arxiv.org/abs/1806.04455), only the orientation preserving / reversing term, matlab implementation can be found [here](https://github.com/llorz/SGA18_orientation_BCICP_code)
|
|
59
|
+
* [Map-Based Exploration of Intrinsic Shape Differences and Variability](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.642.4287&rep=rep1&type=pdf)
|
|
60
|
+
* [An Optimization Approach to Improving Collections of Shape Maps](http://fodava.gatech.edu/files/reports/FODAVA-11-22.pdf)
|
|
61
|
+
* [Limit Shapes – A Tool for Understanding Shape Differences and Variability in 3D Model Collections](http://www.lix.polytechnique.fr/~maks/papers/limit_shapes_SGP19.pdf)
|
|
62
|
+
* [CONSISTENT ZOOMOUT: Efficient Spectral Map Synchronization](http://www.lix.polytechnique.fr/~maks/papers/ConsistentZoomOut_SGP2020.pdf), with Matlab implementation [here](https://github.com/llorz/SGA19_zoomOut)
|
|
63
|
+
|
|
64
|
+
## Incoming features
|
|
65
|
+
Python code for [Discrete Optimization](http://www.lix.polytechnique.fr/~maks/papers/SGP21_DiscMapOpt.pdf) and [Reversible Harmonic Map](https://www.cs.technion.ac.il/~mirela/publications/rhm.pdf) should be released soon.
|
|
66
|
+
Don't hesitate to reach out at <rmagnet@> <lix.polytechnique.fr> for requests.
|
|
67
|
+
|
|
68
|
+
## Dependencies
|
|
69
|
+
|
|
70
|
+
Hard dependencies are `numpy`, `scipy`, `tqdm`, `scikit-learn` for its KDTree implementation.
|
|
71
|
+
|
|
72
|
+
The main non-standard (optional) dependencies are [`potpourri3d`](https://github.com/nmwsharp/potpourri3d) for its robust geodesic distance computation and [`robust_laplacian`](https://github.com/nmwsharp/robust-laplacians-py) which provide an implementation of both intrinsic delaunay and tufted Laplacian. If these functionalities are not needed one can remove the imports [here](https://github.com/RobinMagnet/pyFM/blob/master/pyFM/mesh/trimesh.py) and [here](https://github.com/RobinMagnet/pyFM/blob/master/pyFM/mesh/geometry.py).
|
|
73
|
+
|
|
74
|
+
I did not build on the [trimesh](https://github.com/mikedh/trimesh) package which has some strange behaviour with vertex reordering.
|
|
75
|
+
|
|
76
|
+
## Remark on Code notations
|
|
77
|
+
|
|
78
|
+
In the whole codebase, we consider pairs of meshes `mesh1` and `mesh2`. Functional maps always go **from** `mesh1` **to** `mesh2` (denoted `FM_12`) and pointwise maps always **from** `mesh2` **to** `mesh1` (denoted `p2p_21`)
|
|
79
|
+
|
|
80
|
+
## Example Code
|
|
81
|
+
|
|
82
|
+
Running the [example notebook](https://github.com/RobinMagnet/pyFM/blob/master/example_notebook.ipynb) gives you an overview of the package functions.
|
|
83
|
+
Note that this notebook requires the [`meshplot` package](https://skoch9.github.io/meshplot/), which is an easy to use interface for `pythreejs`, which allows to display mesh in an easy fashion on notebooks.
|
|
84
|
+
|
|
85
|
+
All functions in the package are documented, with a descriptions of parameters and output.
|
|
86
|
+
|
|
87
|
+
## Example Code for shape matching
|
|
88
|
+
|
|
89
|
+
See the [Example Notebook](https://github.com/RobinMagnet/pyFM/blob/master/example_notebook.ipynb) for example of code.
|
pyfmaps-1.0.0/README.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
## V 1.0 is coming very soon, with release on PyPi
|
|
2
|
+
## Expected pyFM.torch version
|
|
3
|
+
|
|
4
|
+
# pyFM - Python bindings for functional maps
|
|
5
|
+
pyFM is a pure python implementation of multiple tools used for Functional Maps computations. Namely, it implements shape signatures, functional map optimization and refinement algorithm, and above all an easy-to-use interface for using functional maps.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
* A TriMesh class incuding many standard geometric measures with python code, including geodesic distances (using the [heat method](https://www.cs.cmu.edu/~kmcrane/Projects/HeatMethod/)), normals, projection on the LBO basis, export of .off or .obj files with textures.
|
|
10
|
+
* A pure Python (fast) implementation of Laplace-Beltrami Operator.
|
|
11
|
+
* Implementation of [HKS](http://www.lix.polytechnique.fr/~maks/papers/hks.pdf) and [WKS](http://imagine.enpc.fr/~aubrym/projects/wks/index.html) (and their version for landmarks) with multiple level of automation for parameters selection (from full automatic to total control)
|
|
12
|
+
* Implementation of icp and [ZoomOut](https://arxiv.org/abs/1904.07865) on Python
|
|
13
|
+
* *Fast* conversion from Functional Map to vertex to vertex map or [precise map](https://www.cs.technion.ac.il/~mirela/publications/p2p_recovery.pdf) using p-dimensional [vertex to mesh projection](https://github.com/RobinMagnet/pyFM/blob/master/pyFM/spectral/projection_utils.py)
|
|
14
|
+
* A FunctionalMapping class for straightforward computation of Functional Maps mixing all the previous features
|
|
15
|
+
* Functions for evaluating functional maps.
|
|
16
|
+
* Support for Functional Map Networks : Consistent Latent Basis, Canonical Consistent Latent Basis, consistency weights, Consistent ZoomOut
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
In particular this codebade contains python implementations of the following papers :
|
|
20
|
+
* [The Heat Method for Distance Computation](https://www.cs.cmu.edu/~kmcrane/Projects/HeatMethod/)
|
|
21
|
+
* [A Concise and Provably Informative Multi-Scale Signature Based on Heat Diffusion](http://www.lix.polytechnique.fr/~maks/papers/hks.pdf)
|
|
22
|
+
* [The Wave Kernel Signature: A Quantum Mechanical Approach To Shape Analysis](http://imagine.enpc.fr/~aubrym/projects/wks/index.html)
|
|
23
|
+
* [ZoomOut: Spectral Upsampling for Efficient Shape Correspondence](https://arxiv.org/abs/1904.07865), with MatLab implementation [here](https://github.com/llorz/SGA19_zoomOut)
|
|
24
|
+
* [Deblurring and Denoising of Maps between Shapes](https://www.cs.technion.ac.il/~mirela/publications/p2p_recovery.pdf), with Matlab implementation [here](https://mirela.net.technion.ac.il/publications/)
|
|
25
|
+
* [Functional Maps: A Flexible Representation of Maps Between Shapes](http://www.lix.polytechnique.fr/~maks/papers/obsbg_fmaps.pdf)
|
|
26
|
+
* [Informative Descriptor Preservation via Commutativity for Shape Matching](http://www.lix.polytechnique.fr/~maks/papers/fundescEG17.pdf)
|
|
27
|
+
* [Continuous and Orientation-preserving Correspondences via Functional Maps](https://arxiv.org/abs/1806.04455), only the orientation preserving / reversing term, matlab implementation can be found [here](https://github.com/llorz/SGA18_orientation_BCICP_code)
|
|
28
|
+
* [Map-Based Exploration of Intrinsic Shape Differences and Variability](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.642.4287&rep=rep1&type=pdf)
|
|
29
|
+
* [An Optimization Approach to Improving Collections of Shape Maps](http://fodava.gatech.edu/files/reports/FODAVA-11-22.pdf)
|
|
30
|
+
* [Limit Shapes – A Tool for Understanding Shape Differences and Variability in 3D Model Collections](http://www.lix.polytechnique.fr/~maks/papers/limit_shapes_SGP19.pdf)
|
|
31
|
+
* [CONSISTENT ZOOMOUT: Efficient Spectral Map Synchronization](http://www.lix.polytechnique.fr/~maks/papers/ConsistentZoomOut_SGP2020.pdf), with Matlab implementation [here](https://github.com/llorz/SGA19_zoomOut)
|
|
32
|
+
|
|
33
|
+
## Incoming features
|
|
34
|
+
Python code for [Discrete Optimization](http://www.lix.polytechnique.fr/~maks/papers/SGP21_DiscMapOpt.pdf) and [Reversible Harmonic Map](https://www.cs.technion.ac.il/~mirela/publications/rhm.pdf) should be released soon.
|
|
35
|
+
Don't hesitate to reach out at <rmagnet@> <lix.polytechnique.fr> for requests.
|
|
36
|
+
|
|
37
|
+
## Dependencies
|
|
38
|
+
|
|
39
|
+
Hard dependencies are `numpy`, `scipy`, `tqdm`, `scikit-learn` for its KDTree implementation.
|
|
40
|
+
|
|
41
|
+
The main non-standard (optional) dependencies are [`potpourri3d`](https://github.com/nmwsharp/potpourri3d) for its robust geodesic distance computation and [`robust_laplacian`](https://github.com/nmwsharp/robust-laplacians-py) which provide an implementation of both intrinsic delaunay and tufted Laplacian. If these functionalities are not needed one can remove the imports [here](https://github.com/RobinMagnet/pyFM/blob/master/pyFM/mesh/trimesh.py) and [here](https://github.com/RobinMagnet/pyFM/blob/master/pyFM/mesh/geometry.py).
|
|
42
|
+
|
|
43
|
+
I did not build on the [trimesh](https://github.com/mikedh/trimesh) package which has some strange behaviour with vertex reordering.
|
|
44
|
+
|
|
45
|
+
## Remark on Code notations
|
|
46
|
+
|
|
47
|
+
In the whole codebase, we consider pairs of meshes `mesh1` and `mesh2`. Functional maps always go **from** `mesh1` **to** `mesh2` (denoted `FM_12`) and pointwise maps always **from** `mesh2` **to** `mesh1` (denoted `p2p_21`)
|
|
48
|
+
|
|
49
|
+
## Example Code
|
|
50
|
+
|
|
51
|
+
Running the [example notebook](https://github.com/RobinMagnet/pyFM/blob/master/example_notebook.ipynb) gives you an overview of the package functions.
|
|
52
|
+
Note that this notebook requires the [`meshplot` package](https://skoch9.github.io/meshplot/), which is an easy to use interface for `pythreejs`, which allows to display mesh in an easy fashion on notebooks.
|
|
53
|
+
|
|
54
|
+
All functions in the package are documented, with a descriptions of parameters and output.
|
|
55
|
+
|
|
56
|
+
## Example Code for shape matching
|
|
57
|
+
|
|
58
|
+
See the [Example Notebook](https://github.com/RobinMagnet/pyFM/blob/master/example_notebook.ipynb) for example of code.
|