(eigen_vecs, eigen_vals, num_t, t_min=0.1, t_max=1000, scale=1000)
| 74 | |
| 75 | |
| 76 | def compute_HKS(eigen_vecs, eigen_vals, num_t, t_min=0.1, t_max=1000, scale=1000): |
| 77 | eigen_vals = eigen_vals.flatten() |
| 78 | assert eigen_vals[1] > 0 |
| 79 | assert np.min(eigen_vals) > -1E-6 |
| 80 | assert np.array_equal(eigen_vals, sorted(eigen_vals)) |
| 81 | |
| 82 | t_list = np.geomspace(t_min, t_max, num_t) |
| 83 | phase = np.exp(-np.outer(t_list, eigen_vals[1:]), dtype='f') |
| 84 | wphi = phase[:, None, :] * eigen_vecs[None, :, 1:] |
| 85 | HKS = np.einsum('tnk,nk->nt', wphi, eigen_vecs[:, 1:]) * scale |
| 86 | heat_trace = np.sum(phase, axis=1) |
| 87 | HKS /= heat_trace |
| 88 | |
| 89 | return HKS |
| 90 | |
| 91 | |
| 92 | def compute_curvatures(xyz, normals, batch, curvature_scales): |
nothing calls this directly
no outgoing calls
no test coverage detected