Source code for abm_initialization_collection.coordinate.filter_coordinate_bounds

import numpy as np
import pandas as pd


[docs]def filter_coordinate_bounds(coordinates: list, radius: float, center: bool = True) -> pd.DataFrame: """ Filters list for coordinates with given radius. Parameters ---------- coordinates List of (x, y, z) coordinates. radius Maximum valid radius of coordinate. Returns ------- : Filtered list of coordinates. """ filtered_coordinates = [] x_center, y_center, _ = np.array(coordinates).mean(axis=0) for x, y, z in coordinates: coordinate_radius = (x - x_center) ** 2 + (y - y_center) ** 2 if coordinate_radius <= radius**2: if center: filtered_coordinates.append((x - x_center, y - y_center, z)) else: filtered_coordinates.append((x, y, z)) return pd.DataFrame(filtered_coordinates, columns=["x", "y", "z"])