Source code for palmari.image_tools.density_filtering
import numpy as np
from sklearn.neighbors import radius_neighbors_graph
import pandas as pd
[docs]def density_filtering(
pos: pd.DataFrame, radius: float = 0.2, n_neighbors: int = None
) -> pd.Series:
# Filtering based on number of neighbors in radius
A = radius_neighbors_graph(pos[["x", "y"]].values, radius=radius)
N = np.reshape(np.array(A.sum(axis=0)), (-1,))
if n_neighbors is None:
n_neighbors = np.quantile(N[N > 0], 0.01)
return pd.Series(index=pos.index, data=N >= n_neighbors)