具有周期性边界条件和输出对距离的 KDTree

KDTree with periodic boundary conditions and pair distances in output

我想 运行 对位于周期性框内的 >10k 点进行最近邻搜索,然后 return 将这些点的距离及其索引发送给我。

到目前为止,我尝试了 sklearn.neighbors.KDTree(positions).query_radius(positions, r=maximum_distance,return_distance=True),其中 return 是最大距离内的最近邻距离。半径,但是它不适用于周期性边界条件 (PBC)。我探索的另一种方法是 scipy.spatial.cKDTree(positions, boxsize=box_size).query_pairs(r=maximum_distance),它适用于 PBC,但不适用于 return 对之间的距离。

是否可以像 scipy.spatial.cKDTree 那样扩展 sklearn.neighbors.KDTree 处理 PBC 的能力?

是否可以将 scipy.spatial.cKDTree 扩展到 return 对距离?

答案是:

scipy.spatial.cKDTree().query()