@@ -5,8 +5,7 @@ implementation_specific_values = [
5
5
#
6
6
# name_suffix, DistanceMetric, INPUT_DTYPE_t, INPUT_DTYPE
7
7
#
8
- # We also use the float64 dtype and C-type names as defined in
9
- # `sklearn.utils._typedefs` to maintain consistency.
8
+ # We use DistanceMetric for float64 for backward naming compatibility.
10
9
#
11
10
('64', 'DistanceMetric', 'DTYPE_t', 'DTYPE'),
12
11
('32', 'DistanceMetric32', 'cnp.float32_t', 'np.float32')
@@ -15,14 +14,16 @@ implementation_specific_values = [
15
14
}}
16
15
cimport numpy as cnp
17
16
18
- from ...utils._typedefs cimport DTYPE_t, ITYPE_t
17
+ from ...utils._typedefs cimport DTYPE_t, ITYPE_t, SPARSE_INDEX_TYPE_t
19
18
from ...metrics._dist_metrics cimport DistanceMetric, DistanceMetric32
20
19
21
20
{{for name_suffix, DistanceMetric, INPUT_DTYPE_t, INPUT_DTYPE in implementation_specific_values}}
22
21
23
22
24
23
cdef class DatasetsPair{{name_suffix}}:
25
- cdef {{DistanceMetric}} distance_metric
24
+ cdef:
25
+ {{DistanceMetric}} distance_metric
26
+ ITYPE_t n_features
26
27
27
28
cdef ITYPE_t n_samples_X(self) nogil
28
29
@@ -37,5 +38,35 @@ cdef class DenseDenseDatasetsPair{{name_suffix}}(DatasetsPair{{name_suffix}}):
37
38
cdef:
38
39
const {{INPUT_DTYPE_t}}[:, ::1] X
39
40
const {{INPUT_DTYPE_t}}[:, ::1] Y
40
- ITYPE_t d
41
+
42
+
43
+ cdef class SparseSparseDatasetsPair{{name_suffix}}(DatasetsPair{{name_suffix}}):
44
+ cdef:
45
+ const {{INPUT_DTYPE_t}}[:] X_data
46
+ const SPARSE_INDEX_TYPE_t[:] X_indices
47
+ const SPARSE_INDEX_TYPE_t[:] X_indptr
48
+
49
+ const {{INPUT_DTYPE_t}}[:] Y_data
50
+ const SPARSE_INDEX_TYPE_t[:] Y_indices
51
+ const SPARSE_INDEX_TYPE_t[:] Y_indptr
52
+
53
+
54
+ cdef class SparseDenseDatasetsPair{{name_suffix}}(DatasetsPair{{name_suffix}}):
55
+ cdef:
56
+ const {{INPUT_DTYPE_t}}[:] X_data
57
+ const SPARSE_INDEX_TYPE_t[:] X_indices
58
+ const SPARSE_INDEX_TYPE_t[:] X_indptr
59
+
60
+ const {{INPUT_DTYPE_t}}[:] Y_data
61
+ const SPARSE_INDEX_TYPE_t[:] Y_indices
62
+ ITYPE_t n_Y
63
+
64
+
65
+ cdef class DenseSparseDatasetsPair{{name_suffix}}(DatasetsPair{{name_suffix}}):
66
+ cdef:
67
+ # As distance metrics are commutative, we can simply rely
68
+ # on the implementation of SparseDenseDatasetsPair and
69
+ # swap arguments.
70
+ DatasetsPair{{name_suffix}} datasets_pair
71
+
41
72
{{endfor}}
0 commit comments