Skip to content

Commit b5250c5

Browse files
committed
moving to a new api for polyfit and ensure the absemce of nans and infs in the input
1 parent 0c2b5a2 commit b5250c5

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

httomolibgpu/recon/rotation.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"""Modules for finding the axis of rotation for 180 and 360 degrees scans"""
2222

2323
import numpy as np
24+
from numpy.polynomial import Polynomial
2425
from httomolibgpu import cupywrapper
2526

2627
cp = cupywrapper.cp
@@ -712,9 +713,23 @@ def _calculate_curvature(list_metric):
712713

713714
# work mostly on CPU here - we have very small arrays here
714715
list1 = cp.asnumpy(list_metric[min_pos - radi : min_pos + radi + 1])
715-
afact1 = np.polyfit(np.arange(0, 2 * radi + 1), list1, 2)[0]
716+
list1[np.isnan(list1)] = list1[~np.isnan(list1)].mean()
717+
list1[np.isinf(list1)] = list1[~np.isinf(list1)].mean()
718+
719+
# afact1 = np.polyfit(np.arange(0, 2 * radi + 1), list1, 2)[0]
720+
721+
series1 = Polynomial.fit(np.arange(0, 2 * radi + 1), list1, deg=2)
722+
afact1 = series1.convert().coef[-1]
723+
716724
list2 = cp.asnumpy(list_metric[min_pos - 1 : min_pos + 2])
717-
(afact2, bfact2, _) = np.polyfit(np.arange(min_pos - 1, min_pos + 2), list2, 2)
725+
list2[np.isnan(list2)] = list2[~np.isnan(list2)].mean()
726+
list2[np.isinf(list2)] = list2[~np.isinf(list2)].mean()
727+
728+
# (afact2, bfact2, _) = np.polyfit(np.arange(min_pos - 1, min_pos + 2), list2, 2)
729+
730+
series2 = Polynomial.fit(np.arange(min_pos - 1, min_pos + 2), list2, deg=2)
731+
afact2 = series2.convert().coef[-1]
732+
bfact2 = series2.convert().coef[-1 - 1]
718733

719734
curvature = np.abs(afact1)
720735
if afact2 != 0.0:

0 commit comments

Comments
 (0)