Source code for cellcomplex.property_topomesh.utils.matching_tools

# -*- coding: utf-8 -*-
# -*- python -*-
#
#       PropertyTopomesh
#
#       Copyright 2014-2016 INRIA - CIRAD - INRA
#
#       File author(s): Guillaume Cerutti <guillaume.cerutti@inria.fr>
#
#       File contributor(s): Guillaume Cerutti <guillaume.cerutti@inria.fr>
#
#       Distributed under the Cecill-C License.
#       See accompanying file LICENSE.txt or copy at
#           http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html
#
#       OpenaleaLab Website : http://virtualplants.github.io/
#
###############################################################################

import numpy as np
from scipy.spatial import cKDTree
from scipy.cluster.vq import vq

[docs]def brute_force_match(obs, codebook): distance_matrix = np.linalg.norm(obs[:,np.newaxis] - codebook[np.newaxis,:],axis=2) return (np.argmin(distance_matrix,axis=1),np.min(distance_matrix,axis=1))
[docs]def kd_tree_match(obs, codebook, radius=1e-5): data = cKDTree(obs) res1 = data.query_ball_tree(cKDTree(codebook), radius, 2, radius) res1 = np.array([r[np.argmin(np.linalg.norm(codebook[r] - o,axis=1))] if len(r)>0 else None for o,r in zip(obs,res1)]) return res1
[docs]def vector_quantization_match(obs, codebook): return vq(obs, codebook)[0]