local_vals
Get the neighboring feature values for every object in a GeoDataFrame.
Note
Neighborhoods are defined by the spatial_weights
object, which can be created
with the fit_graph
function. The function should be applied to the input
GeoDataFrame before using this function.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
gdf
|
GeoDataFrame
|
The GeoDataFrame containing the spatial data. |
required |
spatial_weights
|
W
|
A libpysal weights object defining the spatial relationships. |
required |
val_col
|
str
|
The column name in |
required |
new_col_name
|
str
|
The name of the new column to store neighborhood values. |
required |
id_col
|
str
|
The unique id column in the gdf. If None, this uses |
None
|
parallel
|
bool
|
Whether to apply the function in parallel. Defaults to False. |
False
|
num_processes
|
int
|
The number of processes to use if |
1
|
create_copy
|
bool
|
Flag whether to create a copy of the input gdf and return that. Defaults to True. |
True
|
Returns:
Type | Description |
---|---|
GeoDataFrame
|
gpd.GeoDataFrame: The original GeoDataFrame with an additional column for neighborhood values. |
Examples:
>>> from histolytics.utils.gdf import set_uid
>>> from histolytics.data import cervix_nuclei
>>> from histolytics.spatial_graph.graph import fit_graph
>>> from histolytics.spatial_geom.shape_metrics import shape_metric
>>> from histolytics.spatial_agg.local_values import local_vals
>>>
>>> # input data
>>> nuc = cervix_nuclei()
>>> nuc = set_uid(nuc)
>>>
>>> # Calculate shape metrics
>>> nuc = shape_metric(nuc, ["area"])
>>> nuc["area"] = nuc["area"].round(3)
>>>
>>> # Fit delaunay graph
>>> w, _ = fit_graph(nuc, "delaunay", id_col="uid", threshold=100, use_polars=True)
>>> # Get the local areas of nuclei in each neighborhood
>>> nuc = local_vals(
... nuc,
... w,
... val_col="area",
... new_col_name="local_areas",
... id_col="uid",
... num_processes=6,
... )
>>> print(nuc.head(3))
geometry class_name uid uid
0 POLYGON ((940.01 5570.02, 939.01 5573, 939 559... connective 0
1 POLYGON ((906.01 5350.02, 906.01 5361, 908.01 ... connective 1
2 POLYGON ((866 5137.02, 862.77 5137.94, 860 513... squamous_epithel 2
area local_areas
uid
0 429.588 [429.588, 171.402, 130.916, 129.895, 52.101, 4...
1 408.466 [408.466, 226.671, 151.296, 107.531, 67.125, 5...
2 369.493 [369.493, 330.894, 215.215, 127.846, 417.95]7, 2...
Source code in src/histolytics/spatial_agg/local_values.py
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
|