import numpy as np import ctypes as c from ctypes import cdll import os.path def lsap_solverHG(C): ''' Binding for lsape hungarian solver ''' nm = C.shape[0] dll_name = 'liblsap.so' lib = cdll.LoadLibrary(os.path.abspath( os.path.join(os.path.dirname(__file__), dll_name))) lib.lsap.restype = c.c_int rho = np.zeros((nm, 1), int) varrho = np.zeros((nm, 1), int) C[C == np.inf] = 10000 lib.lsap(c.c_void_p(C.transpose().ctypes.data), c.c_int(nm), c.c_void_p(rho.ctypes.data), c.c_void_p(varrho.ctypes.data)) return np.array(range(0, nm)), np.array([c.c_int(i).value for i in varrho])