Skip to content

Commit b74e9cc

Browse files
Merge pull request #90 from DiamondLightSource/estimators-fetch-default-param-values
Fetch default value for parameters required in estimator functions
2 parents 73211cc + a440124 commit b74e9cc

6 files changed

Lines changed: 131 additions & 4 deletions

File tree

‎httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/misc/corr.py‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
import inspect
12
from typing import Tuple
23

4+
from httomolibgpu.misc.corr import median_filter, remove_outlier
35

46
__all__ = [
57
"_calc_padding_remove_outlier",
@@ -8,10 +10,18 @@
810

911

1012
def _calc_padding_remove_outlier(**kwargs) -> Tuple[int, int]:
13+
if "kernel_size" not in kwargs:
14+
params = inspect.signature(remove_outlier).parameters
15+
kwargs["kernel_size"] = params["kernel_size"].default
16+
1117
kernel_size = kwargs["kernel_size"]
1218
return (kernel_size // 2, kernel_size // 2)
1319

1420

1521
def _calc_padding_median_filter(**kwargs) -> Tuple[int, int]:
22+
if "kernel_size" not in kwargs:
23+
params = inspect.signature(median_filter).parameters
24+
kwargs["kernel_size"] = params["kernel_size"].default
25+
1626
kernel_size = kwargs["kernel_size"]
1727
return (kernel_size // 2, kernel_size // 2)

‎httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/misc/morph.py‎

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,13 @@
2020
# ---------------------------------------------------------------------------
2121
"""Modules for memory estimation for morph functions"""
2222

23+
import inspect
2324
import math
2425
from typing import Tuple
2526
import numpy as np
2627

28+
from httomolibgpu.misc.morph import data_resampler, sino_360_to_180
29+
2730
__all__ = [
2831
"_calc_memory_bytes_data_resampler",
2932
"_calc_output_dim_data_resampler",
@@ -42,6 +45,10 @@ def _calc_memory_bytes_data_resampler(
4245
**kwargs,
4346
) -> Tuple[int, int]:
4447
newshape = kwargs["newshape"]
48+
49+
if "interpolation" not in kwargs:
50+
params = inspect.signature(data_resampler).parameters
51+
kwargs["interpolation"] = params["interpolation"].default
4552
interpolation = kwargs["interpolation"]
4653

4754
input_size = np.prod(non_slice_dims_shape) * dtype.itemsize
@@ -62,7 +69,9 @@ def _calc_output_dim_sino_360_to_180(
6269
non_slice_dims_shape: Tuple[int, int],
6370
**kwargs,
6471
) -> Tuple[int, int]:
65-
assert "overlap" in kwargs, "Expected overlap in method parameters"
72+
if "overlap" not in kwargs:
73+
params = inspect.signature(sino_360_to_180).parameters
74+
kwargs["overlap"] = params["overlap"].default
6675
overlap: float = kwargs["overlap"]
6776

6877
original_sino_width = non_slice_dims_shape[1]
@@ -75,7 +84,9 @@ def _calc_memory_bytes_sino_360_to_180(
7584
dtype: np.dtype,
7685
**kwargs,
7786
) -> Tuple[int, int]:
78-
assert "overlap" in kwargs, "Expected overlap in method parameters"
87+
if "overlap" not in kwargs:
88+
params = inspect.signature(sino_360_to_180).parameters
89+
kwargs["overlap"] = params["overlap"].default
7990
overlap: float = kwargs["overlap"]
8091

8192
original_sino_width = non_slice_dims_shape[1]

‎httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/misc/rescale.py‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import inspect
12
from typing import Tuple
23
import numpy as np
34

5+
from httomolibgpu.misc.rescale import rescale_to_int
6+
47
__all__ = [
58
"_calc_memory_bytes_rescale_to_int",
69
]
@@ -11,6 +14,9 @@ def _calc_memory_bytes_rescale_to_int(
1114
dtype: np.dtype,
1215
**kwargs,
1316
) -> Tuple[int, int]:
17+
if "bits" not in kwargs:
18+
params = inspect.signature(rescale_to_int).parameters
19+
kwargs["bits"] = params["bits"].default
1420
bits: int = kwargs["bits"]
1521
if bits == 8:
1622
itemsize = 1

‎httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/prep/stripe.py‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@
2020
# ---------------------------------------------------------------------------
2121
"""Modules for memory estimation for stripe removal methods"""
2222

23+
import inspect
2324
import math
2425
from typing import Tuple
2526
import numpy as np
2627

2728
from httomo_backends.cufft import CufftType, cufft_estimate_1d
28-
from httomolibgpu.prep.stripe import remove_stripe_fw
29+
from httomolibgpu.prep.stripe import raven_filter, remove_stripe_fw
2930

3031

3132
__all__ = [
@@ -87,7 +88,14 @@ def _calc_memory_bytes_raven_filter(
8788
**kwargs,
8889
) -> Tuple[int, int]:
8990

91+
if "pad_x" not in kwargs:
92+
params = inspect.signature(raven_filter).parameters
93+
kwargs["pad_x"] = params["pad_x"].default
9094
pad_x = kwargs["pad_x"]
95+
96+
if "pad_y" not in kwargs:
97+
params = inspect.signature(raven_filter).parameters
98+
kwargs["pad_y"] = params["pad_y"].default
9199
pad_y = kwargs["pad_y"]
92100

93101
# Unpadded input

‎httomo_backends/methods_database/packages/backends/httomolibgpu/supporting_funcs/recon/algorithm.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def __calc_output_dim_recon(non_slice_dims_shape, **kwargs):
5252
5353
"""
5454
DetectorsLengthH = non_slice_dims_shape[1]
55-
recon_size = kwargs["recon_size"]
55+
recon_size = kwargs.get("recon_size", None)
5656
if recon_size is None:
5757
recon_size = DetectorsLengthH
5858
output_dims = (recon_size, recon_size)

‎tests/test_httomolibgpu.py‎

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
)
3636
from httomolibgpu.misc.rescale import rescale_to_int
3737

38+
from httomo_backends.methods_database.packages.backends.httomolibgpu.supporting_funcs.misc.corr import *
3839
from httomo_backends.methods_database.packages.backends.httomolibgpu.supporting_funcs.misc.morph import *
3940
from httomo_backends.methods_database.packages.backends.httomolibgpu.supporting_funcs.prep.phase import *
4041
from httomo_backends.methods_database.packages.backends.httomolibgpu.supporting_funcs.prep.stripe import *
@@ -1166,3 +1167,94 @@ def test_FBP2d_astra_output_dim():
11661167
recon_size=recon_size,
11671168
)
11681169
assert output_dims == (recon_size, recon_size)
1170+
1171+
1172+
def test_remove_outlier_padding_calculator_fetches_default_param_value():
1173+
try:
1174+
_calc_padding_remove_outlier(**{})
1175+
except KeyError as e:
1176+
pytest.fail(f"Failed to get default value for {e} parameter")
1177+
1178+
1179+
def test_median_filter_padding_calculator_fetches_default_param_value():
1180+
try:
1181+
_calc_padding_median_filter(**{})
1182+
except KeyError as e:
1183+
pytest.fail(f"Failed to get default value for {e} parameter")
1184+
1185+
1186+
def test_data_resampler_memory_estimator_fetches_default_param_value():
1187+
try:
1188+
_calc_memory_bytes_data_resampler((2, 2), np.float32(), **{"newshape": (1, 1)})
1189+
except KeyError as e:
1190+
pytest.fail(f"Failed to get default value for {e} parameter")
1191+
1192+
1193+
def test_sino_360_to_180_output_dims_calculator_fetches_default_param_value():
1194+
try:
1195+
_calc_output_dim_sino_360_to_180((1, 1), **{})
1196+
except KeyError as e:
1197+
pytest.fail(f"Failed to get default value for {e} parameter")
1198+
1199+
1200+
def test_sino_360_to_180_memory_estimator_fetches_default_param_value():
1201+
try:
1202+
_calc_memory_bytes_sino_360_to_180((1, 1), np.float32(), **{})
1203+
except KeyError as e:
1204+
pytest.fail(f"Failed to get default value for {e} parameter")
1205+
1206+
1207+
def test_rescale_to_int_memory_estimator_fetches_default_param_value():
1208+
try:
1209+
_calc_memory_bytes_rescale_to_int((1, 1), np.float32(), **{})
1210+
except KeyError as e:
1211+
pytest.fail(f"Failed to get default value for {e} parameter")
1212+
1213+
1214+
def test_raven_filter_memory_estimator_fetches_default_param_value():
1215+
try:
1216+
_calc_memory_bytes_raven_filter((1, 1), np.float32(), **{})
1217+
except KeyError as e:
1218+
pytest.fail(f"Failed to get default value for {e} parameter")
1219+
1220+
1221+
def test_FBP2d_astra_output_dims_calculator_fetches_default_param_value():
1222+
try:
1223+
_calc_output_dim_FBP2d_astra((1, 1), **{})
1224+
except KeyError as e:
1225+
pytest.fail(f"Failed to get default value for {e} parameter")
1226+
1227+
1228+
def test_FBP3d_tomobar_output_dims_calculator_fetches_default_param_value():
1229+
try:
1230+
_calc_output_dim_FBP3d_tomobar((1, 1), **{})
1231+
except KeyError as e:
1232+
pytest.fail(f"Failed to get default value for {e} parameter")
1233+
1234+
1235+
def test_LPRec3d_tomobar_output_dims_calculator_fetches_default_param_value():
1236+
try:
1237+
_calc_output_dim_LPRec3d_tomobar((1, 1), **{})
1238+
except KeyError as e:
1239+
pytest.fail(f"Failed to get default value for {e} parameter")
1240+
1241+
1242+
def test_SIRT3d_tomobar_output_dims_calculator_fetches_default_param_value():
1243+
try:
1244+
_calc_output_dim_SIRT3d_tomobar((1, 1), **{})
1245+
except KeyError as e:
1246+
pytest.fail(f"Failed to get default value for {e} parameter")
1247+
1248+
1249+
def test_CGLS3d_tomobar_output_dims_calculator_fetches_default_param_value():
1250+
try:
1251+
_calc_output_dim_CGLS3d_tomobar((1, 1), **{})
1252+
except KeyError as e:
1253+
pytest.fail(f"Failed to get default value for {e} parameter")
1254+
1255+
1256+
def test_FISTA3d_tomobar_output_dims_calculator_fetches_default_param_value():
1257+
try:
1258+
_calc_output_dim_FISTA3d_tomobar((1, 1), **{})
1259+
except KeyError as e:
1260+
pytest.fail(f"Failed to get default value for {e} parameter")

0 commit comments

Comments
 (0)