@@ -32,7 +32,9 @@ def get_ripleys_inputs(ripley_stats: List[dict]):
3232 return distance_matrices , mesh_distances , barycentric_areas
3333
3434
35- def get_xaxis_distances (distance_matrices : List [np .array ], num_bins : int ):
35+ def get_xaxis_distances (
36+ distance_matrices : List [np .array ], num_bins : int , bin_size : float = None
37+ ):
3638 # flatten protein-protein distances
3739 all_distances = np .concatenate (
3840 [np .ravel (distance_matrix ) for distance_matrix in distance_matrices ]
@@ -44,8 +46,14 @@ def get_xaxis_distances(distance_matrices: List[np.array], num_bins: int):
4446 all_distances = all_distances [sort_indices ]
4547
4648 # split distances into bins
49+ if bin_size is not None :
50+ max_val = np .max (all_distances [all_distances < np .inf ])
51+ bins = np .arange (0 , max_val , bin_size )
52+ else :
53+ bins = num_bins
54+
4755 distance_histogram , bin_edges = np .histogram (
48- all_distances [all_distances < np .inf ], bins = num_bins
56+ all_distances [all_distances < np .inf ], bins = bins
4957 )
5058 all_distances = bin_edges [:- 1 ]
5159
@@ -147,7 +155,10 @@ def define_xy_values(
147155
148156
149157def aggregate_ripleys_stats (
150- ripley_stats : List [dict ], ripley_type : str = "L" , num_bins : int = 50
158+ ripley_stats : List [dict ],
159+ ripley_type : str = "L" ,
160+ num_bins : int = 50 ,
161+ bin_size : float = None ,
151162):
152163 assert ripley_type in ["K" , "L" , "O" ]
153164 # extract relevant arrays
@@ -188,7 +199,7 @@ def aggregate_ripleys_stats(
188199
189200 # split protein-protein distances into bins
190201 all_distances , distance_histogram = get_xaxis_distances (
191- distance_matrices = distance_matrices , num_bins = num_bins
202+ distance_matrices = distance_matrices , num_bins = num_bins , bin_size = bin_size
192203 )
193204 protein_per_distance = distance_histogram / avg_starting_points
194205
0 commit comments