|
from libc.math cimport sqrt, exp |
|
|
|
from ..utils._typedefs cimport float64_t, float32_t, int32_t, intp_t |
|
|
|
cdef class DistanceMetric: |
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cdef class DistanceMetric64(DistanceMetric): |
|
|
|
|
|
|
|
|
|
cdef float64_t p |
|
cdef const float64_t[::1] vec |
|
cdef const float64_t[:, ::1] mat |
|
cdef intp_t size |
|
cdef object func |
|
cdef object kwargs |
|
|
|
cdef float64_t dist( |
|
self, |
|
const float64_t* x1, |
|
const float64_t* x2, |
|
intp_t size, |
|
) except -1 nogil |
|
|
|
cdef float64_t rdist( |
|
self, |
|
const float64_t* x1, |
|
const float64_t* x2, |
|
intp_t size, |
|
) except -1 nogil |
|
|
|
cdef float64_t dist_csr( |
|
self, |
|
const float64_t* x1_data, |
|
const int32_t* x1_indices, |
|
const float64_t* x2_data, |
|
const int32_t* x2_indices, |
|
const int32_t x1_start, |
|
const int32_t x1_end, |
|
const int32_t x2_start, |
|
const int32_t x2_end, |
|
const intp_t size, |
|
) except -1 nogil |
|
|
|
cdef float64_t rdist_csr( |
|
self, |
|
const float64_t* x1_data, |
|
const int32_t* x1_indices, |
|
const float64_t* x2_data, |
|
const int32_t* x2_indices, |
|
const int32_t x1_start, |
|
const int32_t x1_end, |
|
const int32_t x2_start, |
|
const int32_t x2_end, |
|
const intp_t size, |
|
) except -1 nogil |
|
|
|
cdef int pdist( |
|
self, |
|
const float64_t[:, ::1] X, |
|
float64_t[:, ::1] D, |
|
) except -1 |
|
|
|
cdef int cdist( |
|
self, |
|
const float64_t[:, ::1] X, |
|
const float64_t[:, ::1] Y, |
|
float64_t[:, ::1] D, |
|
) except -1 |
|
|
|
cdef int pdist_csr( |
|
self, |
|
const float64_t* x1_data, |
|
const int32_t[::1] x1_indices, |
|
const int32_t[::1] x1_indptr, |
|
const intp_t size, |
|
float64_t[:, ::1] D, |
|
) except -1 nogil |
|
|
|
cdef int cdist_csr( |
|
self, |
|
const float64_t* x1_data, |
|
const int32_t[::1] x1_indices, |
|
const int32_t[::1] x1_indptr, |
|
const float64_t* x2_data, |
|
const int32_t[::1] x2_indices, |
|
const int32_t[::1] x2_indptr, |
|
const intp_t size, |
|
float64_t[:, ::1] D, |
|
) except -1 nogil |
|
|
|
cdef float64_t _rdist_to_dist(self, float64_t rdist) except -1 nogil |
|
|
|
cdef float64_t _dist_to_rdist(self, float64_t dist) except -1 nogil |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cdef class DistanceMetric32(DistanceMetric): |
|
|
|
|
|
|
|
|
|
cdef float64_t p |
|
cdef const float64_t[::1] vec |
|
cdef const float64_t[:, ::1] mat |
|
cdef intp_t size |
|
cdef object func |
|
cdef object kwargs |
|
|
|
cdef float32_t dist( |
|
self, |
|
const float32_t* x1, |
|
const float32_t* x2, |
|
intp_t size, |
|
) except -1 nogil |
|
|
|
cdef float32_t rdist( |
|
self, |
|
const float32_t* x1, |
|
const float32_t* x2, |
|
intp_t size, |
|
) except -1 nogil |
|
|
|
cdef float32_t dist_csr( |
|
self, |
|
const float32_t* x1_data, |
|
const int32_t* x1_indices, |
|
const float32_t* x2_data, |
|
const int32_t* x2_indices, |
|
const int32_t x1_start, |
|
const int32_t x1_end, |
|
const int32_t x2_start, |
|
const int32_t x2_end, |
|
const intp_t size, |
|
) except -1 nogil |
|
|
|
cdef float32_t rdist_csr( |
|
self, |
|
const float32_t* x1_data, |
|
const int32_t* x1_indices, |
|
const float32_t* x2_data, |
|
const int32_t* x2_indices, |
|
const int32_t x1_start, |
|
const int32_t x1_end, |
|
const int32_t x2_start, |
|
const int32_t x2_end, |
|
const intp_t size, |
|
) except -1 nogil |
|
|
|
cdef int pdist( |
|
self, |
|
const float32_t[:, ::1] X, |
|
float32_t[:, ::1] D, |
|
) except -1 |
|
|
|
cdef int cdist( |
|
self, |
|
const float32_t[:, ::1] X, |
|
const float32_t[:, ::1] Y, |
|
float32_t[:, ::1] D, |
|
) except -1 |
|
|
|
cdef int pdist_csr( |
|
self, |
|
const float32_t* x1_data, |
|
const int32_t[::1] x1_indices, |
|
const int32_t[::1] x1_indptr, |
|
const intp_t size, |
|
float32_t[:, ::1] D, |
|
) except -1 nogil |
|
|
|
cdef int cdist_csr( |
|
self, |
|
const float32_t* x1_data, |
|
const int32_t[::1] x1_indices, |
|
const int32_t[::1] x1_indptr, |
|
const float32_t* x2_data, |
|
const int32_t[::1] x2_indices, |
|
const int32_t[::1] x2_indptr, |
|
const intp_t size, |
|
float32_t[:, ::1] D, |
|
) except -1 nogil |
|
|
|
cdef float32_t _rdist_to_dist(self, float32_t rdist) except -1 nogil |
|
|
|
cdef float32_t _dist_to_rdist(self, float32_t dist) except -1 nogil |
|
|