Behaviour changes
-ba yredacts the CMRR measurement UUID fromWipMemBlock.-ba yis the default; use-ba oor-ba nto keep it.- Siemens 2D
AcquisitionTime. Reports the earliest slice of the first volume (the origin ofSliceTiming), not instance 1; date-aware across midnight. - Philips Dixon. Water/fat/in-phase/out-phase are separate series with
_water/_fat/_inphase/_outphasepostfixes andrec-entities inBidsGuessand%h/%Hnames. - Parametric Maps. Multi-channel maps are split by LUTLabel into one file per channel. Validation Dataset.
- ASL
RepetitionTime. ASL keeps the per-shot TR; the issue 1024 volume-TR override no longer applies to perfusion series. - BIDS sidecars. Siemens partial Fourier emits
PartialFourierDirectionPHASE;TablePositionprints0not-0;NumberOfKSpaceTrajectoriesis MRS-only; UIH(0018,9082)is read as EffectiveEchoSpacing, not echo time, and BWPE as per acquired pixel (issue 1035).
New features
- Multi-delay pCASL. Siemens XA
tgse_pcasl_loftis decoded to BIDS ASL (per-volumePostLabelingDelay,_aslcontext.tsv, dummy-volume removal via reproinx). CMRRMeasurementUUIDin CMRR imaging and physio sidecars (-ba nonly), pairing physio with image series.- Series listing.
-n -2writesdcm2niix_series.jsonwithout converting;-n -1no longer touches files (previously-n -1 -w 1deleted existing outputs). - Browser package
@niivue/dcm2niix1.4:convert(),listSeries(),groupOutputs(),exitCodes, shipped TypeScript declarations; one JPEG-LS/JPEG 2000 build (/plainand/jpegare aliases); output names follow the input's shared top folder (loose files or several top-level folders still giveinput_); inputs are read lazily from theFile(WORKERFS) with a read-ahead cache; WASM heap may grow to 4 GB and outputs are freed as collected. - Filename specifiers
%@(station name) and%=(device serial number). - BIDS classification. Siemens T1w spin echo and T1 SPACE; MP2RAGE
RepetitionTimePreparation; dzne_ep3dReadPolarity. - ReproIn. Stricter entity/bareword parsing,
ses-{date},inventity; reproinx run correspondence and staleB0Fieldlink cleanup.
Fixes
- Malformed JPEG lossless, JPEG 2000 and JPEG-LS frames whose size disagrees with the DICOM header (including one codestream under a multi-frame header, or a mosaic split into frames) are rejected instead of over-reading memory or returning uninitialized pixels; TurboJPEG builds check the same; JPEG-LS and TurboJPEG no longer leak their input buffers.
- JPEG: lossless multi-frame images with several fragments per frame, Extended JPEG (.51) including 12-bit (issue 1054), and encapsulated multi-frame files decoded at their own item offsets.
- GE MR30 DWI: VascularCollapseFlag 3/4/5 gradients and per-volume trace detection; clearer missing-image messages report the image total ("expected 210 images (42 spatial positions per volume)") (thanks to PR #1056).
- Faster conversion: per-file parser setup no longer zeroes a 9 MB table (regression from the Parametric Map split), and Siemens ASCII protocol arrays (
alTI,alTE, WipMemBlockalFree/adFree, free diffusion directions) are read in one pass instead of one full scan per index (XA studies 2.3× faster natively, ~25% in the browser). - Compressed (JPEG-LS, JPEG 2000, RLE) enhanced DICOM keeps Dimension Index frame order and per-frame scaling; 4D JPEG lossless decodes all frames; RLE RGB planar configuration 1.
- Rename mode (
-r y) fails closed on read/write errors; byte-identical inputs are skipped, true conflicts return exit 8. - Stack overflows: macOS MRSI segfault (PR #1042) and Windows 32 MB stack reserve (issue 1040).
- CMake superbuild forwards toolchain, macOS SDK and architectures; Cloudflare zlib pinned; OpenJPEG flags preserved on non-MSVC; Windows wheel build.
- pigz hint shown only in verbose mode (issue 1027).