105 lines
2.8 KiB
Cython
105 lines
2.8 KiB
Cython
![]() |
cimport numpy as cnp
|
||
|
|
||
|
from ...utils._typedefs cimport DTYPE_t, ITYPE_t, SPARSE_INDEX_TYPE_t
|
||
|
from ...metrics._dist_metrics cimport DistanceMetric, DistanceMetric32
|
||
|
|
||
|
|
||
|
cdef class DatasetsPair64:
|
||
|
cdef:
|
||
|
DistanceMetric distance_metric
|
||
|
ITYPE_t n_features
|
||
|
|
||
|
cdef ITYPE_t n_samples_X(self) nogil
|
||
|
|
||
|
cdef ITYPE_t n_samples_Y(self) nogil
|
||
|
|
||
|
cdef DTYPE_t dist(self, ITYPE_t i, ITYPE_t j) nogil
|
||
|
|
||
|
cdef DTYPE_t surrogate_dist(self, ITYPE_t i, ITYPE_t j) nogil
|
||
|
|
||
|
|
||
|
cdef class DenseDenseDatasetsPair64(DatasetsPair64):
|
||
|
cdef:
|
||
|
const DTYPE_t[:, ::1] X
|
||
|
const DTYPE_t[:, ::1] Y
|
||
|
|
||
|
|
||
|
cdef class SparseSparseDatasetsPair64(DatasetsPair64):
|
||
|
cdef:
|
||
|
const DTYPE_t[:] X_data
|
||
|
const SPARSE_INDEX_TYPE_t[:] X_indices
|
||
|
const SPARSE_INDEX_TYPE_t[:] X_indptr
|
||
|
|
||
|
const DTYPE_t[:] Y_data
|
||
|
const SPARSE_INDEX_TYPE_t[:] Y_indices
|
||
|
const SPARSE_INDEX_TYPE_t[:] Y_indptr
|
||
|
|
||
|
|
||
|
cdef class SparseDenseDatasetsPair64(DatasetsPair64):
|
||
|
cdef:
|
||
|
const DTYPE_t[:] X_data
|
||
|
const SPARSE_INDEX_TYPE_t[:] X_indices
|
||
|
const SPARSE_INDEX_TYPE_t[:] X_indptr
|
||
|
|
||
|
const DTYPE_t[:] Y_data
|
||
|
const SPARSE_INDEX_TYPE_t[:] Y_indices
|
||
|
ITYPE_t n_Y
|
||
|
|
||
|
|
||
|
cdef class DenseSparseDatasetsPair64(DatasetsPair64):
|
||
|
cdef:
|
||
|
# As distance metrics are commutative, we can simply rely
|
||
|
# on the implementation of SparseDenseDatasetsPair and
|
||
|
# swap arguments.
|
||
|
DatasetsPair64 datasets_pair
|
||
|
|
||
|
|
||
|
cdef class DatasetsPair32:
|
||
|
cdef:
|
||
|
DistanceMetric32 distance_metric
|
||
|
ITYPE_t n_features
|
||
|
|
||
|
cdef ITYPE_t n_samples_X(self) nogil
|
||
|
|
||
|
cdef ITYPE_t n_samples_Y(self) nogil
|
||
|
|
||
|
cdef DTYPE_t dist(self, ITYPE_t i, ITYPE_t j) nogil
|
||
|
|
||
|
cdef DTYPE_t surrogate_dist(self, ITYPE_t i, ITYPE_t j) nogil
|
||
|
|
||
|
|
||
|
cdef class DenseDenseDatasetsPair32(DatasetsPair32):
|
||
|
cdef:
|
||
|
const cnp.float32_t[:, ::1] X
|
||
|
const cnp.float32_t[:, ::1] Y
|
||
|
|
||
|
|
||
|
cdef class SparseSparseDatasetsPair32(DatasetsPair32):
|
||
|
cdef:
|
||
|
const cnp.float32_t[:] X_data
|
||
|
const SPARSE_INDEX_TYPE_t[:] X_indices
|
||
|
const SPARSE_INDEX_TYPE_t[:] X_indptr
|
||
|
|
||
|
const cnp.float32_t[:] Y_data
|
||
|
const SPARSE_INDEX_TYPE_t[:] Y_indices
|
||
|
const SPARSE_INDEX_TYPE_t[:] Y_indptr
|
||
|
|
||
|
|
||
|
cdef class SparseDenseDatasetsPair32(DatasetsPair32):
|
||
|
cdef:
|
||
|
const cnp.float32_t[:] X_data
|
||
|
const SPARSE_INDEX_TYPE_t[:] X_indices
|
||
|
const SPARSE_INDEX_TYPE_t[:] X_indptr
|
||
|
|
||
|
const cnp.float32_t[:] Y_data
|
||
|
const SPARSE_INDEX_TYPE_t[:] Y_indices
|
||
|
ITYPE_t n_Y
|
||
|
|
||
|
|
||
|
cdef class DenseSparseDatasetsPair32(DatasetsPair32):
|
||
|
cdef:
|
||
|
# As distance metrics are commutative, we can simply rely
|
||
|
# on the implementation of SparseDenseDatasetsPair and
|
||
|
# swap arguments.
|
||
|
DatasetsPair32 datasets_pair
|