Commit 4b1731c
committed
fix: symmetrize RMSD matrix in-place to prevent sklearn HDBSCAN rejection
Some backends (mdtraj, torch) produce tiny asymmetry (~1e-7 nm) in
the pairwise RMSD matrix due to floating-point ordering in the
superposition loop. sklearn's HDBSCAN checks allclose(X, X.T) and
rejects asymmetric matrices with ValueError.
New _symmetrize_inplace Numba kernel averages (i,j) and (j,i) entries
in parallel with zero extra allocation. Called in compute_rmsd_matrix
before returning, so all downstream consumers get an exactly symmetric
matrix regardless of which backend was used.
Tightened the symmetry test from atol=1e-6 to assert_array_equal
(bit-identical).1 parent f1f3773 commit 4b1731c
2 files changed
Lines changed: 32 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
121 | 121 | | |
122 | 122 | | |
123 | 123 | | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
124 | 131 | | |
125 | 132 | | |
126 | 133 | | |
| |||
135 | 142 | | |
136 | 143 | | |
137 | 144 | | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
138 | 168 | | |
139 | 169 | | |
140 | 170 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
97 | 97 | | |
98 | 98 | | |
99 | 99 | | |
100 | | - | |
| 100 | + | |
101 | 101 | | |
102 | | - | |
| 102 | + | |
103 | 103 | | |
104 | 104 | | |
105 | 105 | | |
| |||
0 commit comments