Widgets¶

ipywidgets provides a large library of user interface controls. These can allow users to interact with NiiVue.

In [1]:
import ipywidgets
from ipyniivue import NiiVue, SliceType, WidgetObserver

volumes = [
    {
        "path": "../images/mni152.nii.gz",
        "colormap": "gray",
        "visible": True,
        "opacity": 1.0,
    },
    {
        "path": "../images/hippo.nii.gz",
        "colormap": "red",
        "visible": True,
        "opacity": 1.0,
    },
]

nv = NiiVue(
    slice_type=SliceType.MULTIPLANAR,
    back_color=(0.3, 0.3, 0.5, 1)
)
nv.load_volumes(volumes)

widgetArray = []

initial_mosaic = ("L A -16 0 16 32 S -24")

mosaic_text = {
    "widget": ipywidgets.Text(
        description="Mosaic ",
        value=initial_mosaic,
    ),
    "obj": nv.opts,
    "attribute": "slice_mosaic_string",
}
widgetArray.append(mosaic_text)

cornet_text_button = {
    "widget": ipywidgets.ToggleButton(
        description="Corner Text",
        value=False,
        button_style='',
        icon=''
    ),
    "obj": nv.opts,
    "attribute": "is_corner_orientation_text",   # this will be set to True/False
}
widgetArray.append(cornet_text_button)

widget_dark_check = {
    "widget": ipywidgets.Checkbox(
        value=False,
        description="Clip Dark",
    ),
    "obj": nv.opts,
    "attribute": "is_alpha_clip_dark",
}
widgetArray.append(widget_dark_check)

widget_back_opacity = {
    "widget": ipywidgets.RadioButtons(
        options=[
            ("Transparent", 0),
            ("Translucent", 0.5),
            ("Opaque", 1),
        ],
        value=1,
        description="Scan Opacity:",
    ),
    "obj": nv.volumes[0],
    "attribute": "opacity",
}
widgetArray.append(widget_back_opacity)

widget_hippo_opacity = {
    "widget": ipywidgets.FloatSlider(
        value=1.0,
        min=0.0,
        max=1.0,
        step=0.1,
        description="Hippocampus Opacity:",
        orientation="horizontal",
        style={"description_width": "initial"},
    ),
    "obj": nv.volumes[1],
    "attribute": "opacity",
}
widgetArray.append(widget_hippo_opacity)

widget_scan_colormap = {
    "widget": ipywidgets.Select(
        options=["Gray", "Red", "Blue", "Green"],
        value="Gray",
        description="Scan Colormap:",
        style={"description_width": "initial"},
    ),
    "obj": nv.volumes[0],
    "attribute": "colormap",
}
widgetArray.append(widget_scan_colormap)

widget_hippo_colormap = {
    "widget": ipywidgets.Dropdown(
        options=["Red", "Blue", "Green", "Gray"],
        value="Red",
        description="Hippocampus Colormap:",
        style={"description_width": "initial"},
    ),
    "obj": nv.volumes[1],
    "attribute": "colormap",
}
widgetArray.append(widget_hippo_colormap)

for widget in widgetArray:
    WidgetObserver(**widget)

for widget in widgetArray:
    display(widget["widget"])

nv
/home/runner/work/ipyniivue/ipyniivue/src/ipyniivue/widget.py:1327: UserWarning: Ignored unsupported kwargs in Volume: ['visible']
  volume_objects.append(Volume(**item))
Out[1]:
In [ ]:
 
In [ ]: