1
+ from weakref import ref
1
2
from scipy .signal import fftconvolve
2
3
import numpy as np
3
4
from scipy import signal , fft as sp_fft
@@ -65,6 +66,19 @@ def get_histograms(sdata, category=None,resolution=5):
65
66
66
67
import pdb ;
67
68
69
+ def _interpolate (x ,y ,step ):
70
+ """_interpolat generates linear interpolation from the x,y to create mutual distance curves in um units
71
+
72
+ :param x: distances with available values
73
+ :type x: np.array
74
+ :param y: values at x
75
+ :type y: np array
76
+ :param step: step size of x,y
77
+ :type step: float
78
+ """
79
+
80
+ return np .apply_along_axis (lambda x_ : np .interp (np .arange (0 ,x .max ()* step ),x * step ,x_ ,),2 ,y )
81
+
68
82
def co_occurrence (sdata , resolution = 5.0 , max_radius = 400 , linear_steps = 5 , category = None ):
69
83
"""co_occurrence _summary_
70
84
@@ -118,7 +132,7 @@ def co_occurrence(sdata, resolution=5.0, max_radius=400, linear_steps=5, categor
118
132
co_occurrences [i ,j ] = h2_product .sum (axis = (1 ,2 ))
119
133
co_occurrences [j ,i ]= co_occurrences [i ,j ]
120
134
121
- return radii , co_occurrences
135
+ return _interpolate ( radii , co_occurrences , resolution )
122
136
123
137
def ripleys_k (sdata , resolution = 5 , max_radius = 400 , linear_steps = 5 , category = None ):
124
138
@@ -159,3 +173,26 @@ def ripleys_k(sdata, resolution=5, max_radius=400, linear_steps=5, category=None
159
173
co_occurrences [j ,i ]= co_occurrences [i ,j ]
160
174
161
175
return radii , co_occurrences
176
+
177
+ def mor_normalize (stats1 ,stats2 ):
178
+ """mor_normalize _summary_
179
+
180
+ :param stats1: _description_
181
+ :type stats1: _type_
182
+ :param stats2: _description_
183
+ :type stats2: _type_
184
+ """
185
+
186
+ gmean = (stats1 .counts * stats2 .counts )** 0.5
187
+
188
+ ref_ratios_1 = (stats1 .counts / gmean ).fillna (0 )
189
+ ref_ratios_2 = (stats2 .counts / gmean ).fillna (0 )
190
+
191
+ norm_factor_1 = np .median (ref_ratios_1 )
192
+ norm_factor_2 = np .median (ref_ratios_2 )
193
+
194
+ normalized_1 = stats1 .counts / norm_factor_1
195
+ normalized_2 = stats2 .counts / norm_factor_2
196
+
197
+ return normalized_1 ,normalized_2
198
+
0 commit comments