[ENH]: Update get_template interface #413
7 changed files with 18 additions and 14 deletions
1
docs/changes/newsfragments/413.change
Normal file
1
docs/changes/newsfragments/413.change
Normal file
|
|
@ -0,0 +1 @@
|
|||
``target_data`` parameter of :func:`.get_template` has been replaced with ``target_img`` by `Fede Raimondo`_
|
||||
|
|
@ -125,7 +125,7 @@ class ANTsMaskWarper:
|
|||
# Get template space image
|
||||
template_space_img = get_template(
|
||||
space=dst,
|
||||
target_data=target_data,
|
||||
target_img=mask_img,
|
||||
extra_input=None,
|
||||
)
|
||||
# Save template to a tempfile
|
||||
|
|
|
|||
|
|
@ -106,15 +106,15 @@ def compute_brain_mask(
|
|||
if entry["dst"] == "native":
|
||||
target_std_space = entry["src"]
|
||||
|
||||
target_img = target_data["data"]
|
||||
# Fetch template in closest resolution
|
||||
template = get_template(
|
||||
space=target_std_space,
|
||||
target_data=target_data,
|
||||
target_img=target_img,
|
||||
extra_input=extra_input,
|
||||
template_type=mask_type,
|
||||
)
|
||||
# Resample template to target image
|
||||
target_img = target_data["data"]
|
||||
resampled_template = resample_to_img(
|
||||
source_img=template, target_img=target_img
|
||||
)
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ class ANTsParcellationWarper:
|
|||
# Get template space image
|
||||
template_space_img = get_template(
|
||||
space=dst,
|
||||
target_data=target_data,
|
||||
target_img=parcellation_img,
|
||||
extra_input=None,
|
||||
|
I updated it for both parcellation and mask to reduce the confusion in the other PRs. I updated it for both parcellation and mask to reduce the confusion in the other PRs.
|
||||
)
|
||||
# Save template to a tempfile
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ def get_xfm(
|
|||
|
||||
def get_template(
|
||||
space: str,
|
||||
target_data: dict[str, Any],
|
||||
target_img: nib.Nifti1Image,
|
||||
extra_input: Optional[dict[str, Any]] = None,
|
||||
template_type: str = "T1w",
|
||||
) -> nib.Nifti1Image:
|
||||
|
|
@ -132,9 +132,9 @@ def get_template(
|
|||
----------
|
||||
space : str
|
||||
The name of the template space.
|
||||
target_data : dict
|
||||
The corresponding item of the data object for which the template space
|
||||
will be loaded.
|
||||
target_img : Nifti1Image
|
||||
The corresponding image for which the template space will be loaded.
|
||||
This is used to obtain the best matching resolution.
|
||||
extra_input : dict, optional
|
||||
The other fields in the data object. Useful for accessing other data
|
||||
types (default None).
|
||||
|
|
@ -163,7 +163,6 @@ def get_template(
|
|||
raise_error(f"Unknown template type: {template_type}")
|
||||
|
||||
# Get the min of the voxels sizes and use it as the resolution
|
||||
target_img = target_data["data"]
|
||||
resolution = np.min(target_img.header.get_zooms()[:3]).astype(int)
|
||||
|
||||
# Fetch available resolutions for the template
|
||||
|
|
|
|||
|
|
@ -61,7 +61,9 @@ def test_get_template(template_type: str) -> None:
|
|||
bold = element_data["BOLD"]
|
||||
# Get tailored parcellation
|
||||
tailored_template = get_template(
|
||||
space=bold["space"], target_data=bold, template_type=template_type
|
||||
space=bold["space"],
|
||||
target_img=bold["data"],
|
||||
template_type=template_type,
|
||||
)
|
||||
assert isinstance(tailored_template, nib.Nifti1Image)
|
||||
|
||||
|
|
@ -74,7 +76,7 @@ def test_get_template_invalid_space() -> None:
|
|||
vbm_gm = element_data["VBM_GM"]
|
||||
# Get tailored parcellation
|
||||
with pytest.raises(ValueError, match="Unknown template space:"):
|
||||
get_template(space="andromeda", target_data=vbm_gm)
|
||||
get_template(space="andromeda", target_img=vbm_gm["data"])
|
||||
|
||||
|
||||
def test_get_template_invalid_template_type() -> None:
|
||||
|
|
@ -87,7 +89,7 @@ def test_get_template_invalid_template_type() -> None:
|
|||
with pytest.raises(ValueError, match="Unknown template type:"):
|
||||
get_template(
|
||||
space=vbm_gm["space"],
|
||||
target_data=vbm_gm,
|
||||
target_img=vbm_gm["data"],
|
||||
template_type="xenon",
|
||||
)
|
||||
|
||||
|
|
@ -100,5 +102,7 @@ def test_get_template_closest_resolution() -> None:
|
|||
vbm_gm = element_data["VBM_GM"]
|
||||
# Change header resolution to fetch closest resolution
|
||||
element_data["VBM_GM"]["data"].header.set_zooms((3, 3, 3))
|
||||
template = get_template(space=vbm_gm["space"], target_data=vbm_gm)
|
||||
template = get_template(
|
||||
space=vbm_gm["space"], target_img=vbm_gm["data"]
|
||||
)
|
||||
assert isinstance(template, nib.Nifti1Image)
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ class ANTsWarper:
|
|||
# Get template space image
|
||||
template_space_img = get_template(
|
||||
space=reference,
|
||||
target_data=input,
|
||||
target_img=input["data"],
|
||||
extra_input=None,
|
||||
)
|
||||
# Save template
|
||||
|
|
|
|||
Loading…
Reference in a new issue
i think this one needs to be in the refactor of the parcellation logic, otherwise it will fail tests here.