Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Rubick65/dcemapper/llms.txt

Use this file to discover all available pages before exploring further.

DCEMapper’s interactive three-panel layout is designed for rapid visual inspection of DCE-MRI dynamics. You can navigate freely through Z-slices and time frames with keyboard shortcuts, click any voxel to plot its contrast-enhancement curve, and zoom or pan the canvas to examine fine detail — all without leaving the main window.

Three-Panel Layout

Left Panel — Slice Selector

A scrollable thumbnail grid populated with grayscale previews of every axial slice at time-point 0. Click any thumbnail to jump directly to that Z-slice in the main canvas.The column count adapts automatically as you resize the panel: the layout recalculates columns whenever the panel width changes (approximately one column per 110 px of available width). For datasets with many slices, the panel scrolls vertically; the horizontal scrollbar is always hidden.The Time Point (T) and FPS sliders sit above the thumbnail grid and control temporal navigation and movie-mode playback speed respectively.

Center Panel — Main Canvas

The primary matplotlib FigureCanvas (NiftiCanvas) displaying the currently selected Z-slice at the current time point. A NiftiToolbar docked above the canvas provides:
  • Pan and Zoom toggles
  • Home (reset view)
  • Forward/Back zoom-level history
  • ROI shape selection buttons
  • Processed-map view toggle (RCE / MAX RCE / TTP)
Click any pixel on the canvas to extract its time-series and update the right panel.

Right Panel — Intensity Graph & Log

An IntensityGraph widget (matplotlib embedded in Qt) that plots data[x, y, current_z, :] for the last clicked voxel, together with an X and Y coordinate input for manual entry.Below the graph, a vertical QSplitter separates the graph from the Clicks record log. The log is a scrollable list of every voxel click in the session.
Drag the vertical dividers between panels at any time to redistribute horizontal space. Press R to snap all panels back to their default proportions.

Z-Slice Navigation

MethodAction
Move to the previous Z-slice
Move to the next Z-slice
Click thumbnailJump directly to the clicked slice

Temporal Frame Navigation

MethodAction
Advance to the next time frame
Step back to the previous time frame
Time Point (T) sliderDrag or type a value in the adjacent text box to jump to any frame
SpaceToggle movie mode — see Movie Mode below

Movie Mode

Pressing Space (or clicking the play control) toggles movie mode. When active, a QTimer fires every movie_speed milliseconds and increments the time index by one, cycling through all frames and stopping at the last frame. The timer interval is derived from the FPS slider:
movie_speed (ms) = 1000 / FPS
Adjust the FPS slider or its companion text box before or during playback. Playback stops automatically when the last time frame is reached (the slider resets to frame 0). Clicking any thumbnail, moving the T-slider manually, or typing a new value in the T text box also stops playback.

Pixel Intensity Curves

Clicking any voxel on the main canvas triggers create_graphic(x, y, value), which:
  1. Reads the full time series at the clicked spatial position: data[x, y, current_z, :].
  2. Passes the array to IntensityGraph.update_graph(), which replots the curve in the right panel.
  3. Updates the Coor X and Coor Y fields to reflect the clicked coordinates.
You can also type coordinates directly into the Coor X and Coor Y text boxes and press Enter — DCEMapper will extract and plot the time series for that position without requiring a canvas click.

Click Record Log

Every voxel click (whether from the canvas or the coordinate inputs) appends an entry to the Clicks record log in the right panel:
Click N | X = x | Y = y | Z = z | Intensity increase = value%
The Intensity increase field is calculated as the percentage change between the first and last time points of the extracted series:
intensity_increase = (intensities_t[-1] - intensities_t[0]) / intensities_t[0] * 100
If the first time-point value is zero the intensity increase is reported as 0 to avoid division by zero. The log is scrollable and persists for the lifetime of the loaded file.

Colormaps

The main canvas uses matplotlib colormaps via the NiftiCanvas.update_cmap() method.
  • Raw / preprocessed NIfTI files — loaded with the default grayscale colormap.
  • Parametric maps (RCE, MAX RCE, TTP) — the jet colormap is applied automatically whenever a processed file is opened (via File → Open → Open Process File) or when processing completes.
Colormap rendering is handled entirely by matplotlib; no additional configuration is required.

Pan, Zoom, and Navigation Controls

All canvas-navigation shortcuts work as long as the main window has keyboard focus. Click the center panel or press any navigation key to ensure focus.
KeyTool
ZToggle the interactive Zoom tool (click-drag to zoom into a rectangle)
MToggle the interactive Pan tool (click-drag to scroll the view)
HHome — reset the canvas to the default full-image view
,Step back to the previous zoom level in the zoom history
.Step forward to the next zoom level in the zoom history
FToggle Full Screen mode (press again or F to return to windowed mode)
RRestore the default splitter dimensions for all three panels
The Zoom and Pan tools are mutually exclusive. Pressing Z while Pan is active first deactivates Pan, and vice versa. Both tools are also guarded against accidental activation during a left-button mouse press (click_pressed flag).

Resizable Splitter Panels

All three panels are separated by draggable QSplitter dividers:
  • Horizontal splitter — drag the dividers between left / center / right panels to redistribute width.
  • Vertical splitter (right panel) — drag the divider between the intensity graph and the clicks record log to give more space to either component.
Default proportions (restored by pressing R) allocate approximately 20 % of the window to the left panel, 40 % to the center canvas, and 40 % to the right graph panel.

Build docs developers (and LLMs) love