Skip to content

Reconstruction architecture

Reconstruction is still the MRI4ALL Python stack. Adelpha MRI runs it in-process on the desktop so macOS and Windows can reconstruct without systemd.

Pipeline versus MRI4ALL services

MRI4ALL Adelpha desktop
services.recon.main as a systemd unit Do not import that module in the sidecar
stdout redirected, Linux-oriented sidecar/console/services/api/pipeline.py polls the folder queue
Start/Stop on System Status maps to systemd On Mac, service status stays Unknown

The worker sets _recon_enabled and processes tasks whose state is scheduled_recon / recon. Acquisition is a sibling thread in the same pipeline (_acq_enabled). Both share common.queue and ScanTask.

Modes in run_reconstruction

sidecar/console/services/recon/reconstruction.py branches on task.processing:

recon_mode / trajectory Behavior
bypass Log and return; sequence may already have plotted FID internally
fake_dicoms utils.generate_fake_dicoms for UI/demo without k-space
basic3d 3D only; loads PE order from RAWDATA / PE_ORDER
trajectory == cartesian Cartesian reconstruction (run_reconstruction_cartesian)
anything else Error: unknown trajectory

Optional imports (log a warning and continue if missing):

Module Role
recon.B0Correction.B0Corrector Cartesian \(B_0\) correction
recon.ismrmrd.numpy_to_ismrmrd ISMRMRD writer
recon.image_filters.denoise Image denoising

Core k-space path uses recon.kspaceFiltering and writes DICOM via recon.DICOM.DICOM_utils.

What the operator sees

Study Viewer and Flex Viewer consume reconstructed results from the MRI4ALL data tree, not from a separate Adelpha image server. Processing tabs on a scan set recon_mode and trajectory the same way the Qt console did.

Logs: hamburger Control → Log Viewer has Reconstruction as a stream. Twin API docs also list GET /logs/{acq|recon|ui|api} on the MRI façade.

This is research reconstruction (FFT, optional filters, hackathon-era paths). It is not a cleared clinical recon pipeline. See Intended use.