v0.4.0
What's Changed
VisuCoreDiskSliceOrder=disk_reverse_slice_orderraises `InvalidData… by @headmeister in #144- Test suite exercises zero real Bruker data: fixtures root at nonexist… by @headmeister in #145
- JCAMPDX fixes brackets and par anchoring by @headmeister in #146
- 3-D radial / CS
fidmis-sized:RADIALblock count omits the parti… by @headmeister in #147 dim_typedesynchronised from the data array (dEPI, SPECTROSCOPY, 2d… by @headmeister in #148- reordering fix
ACQ_obj_ordernever applied:fidslice axis delive… by @headmeister in #149 - k-space ordering BART reordering, sync docs by @headmeister in #150
Full Changelog: v0.3.0...v0.4.0
Potential breaking changes
This list covers behavior changed during the format-conformance remediation
work. Items marked breaking can alter returned arrays or raise a new,
intentional exception; items marked migration preserve the old API but
should prompt downstream code to move to the explicit replacement.
Data representation
- Migration — PV360
rawdata.jobN:Dataset.dataremains the historical
decoded stream, but now emitsFutureWarningbecause its meaning differs
from FID.data. UseDataset.rawfor(sample, shot, receiver)data or
Dataset.kspacefor ordered Cartesian k-space. - New API:
Dataset.raw,Dataset.kspace, and
Dataset.to_kspace(bart=True)provide explicit raw/k-space representations.
kspaceis only available for FIDs and supported Cartesian PV360 jobs. - Breaking — FIDs:
ACQ_obj_orderis now applied, so multi-slice FID data
is returned in object/slice order instead of acquisition order. Code that
compensated manually must remove its extra permutation. - Breaking — 2dseq:
RECO_transposition/VisuCoreTranspositionnow
swaps the first two spatial axes for flagged frames. Historical consumers
that applied this correction themselves must stop doing so. - Breaking — 2dseq:
VisuCoreDiskSliceOrder=disk_reverse_slice_orderis
applied to the third encoded axis for 3-D data. Earlier releases rejected
these volumes; code relying on the on-disk slice order must adjust.
Axis and random-access behavior
- Breaking:
dim_typeis now kept rank-consistent with loaded data,
including rawdata and traj. Code depending on missing/synthetic labels or
previous misaligned indices must update its axis selection. - Breaking:
mmap=Trueis explicitly unsupported forfid,traj, and
rawdata, and raisesUnsupportedDatasetType. It remains supported for
2dseq; partial encoded-axis slices now return exactly the requested data.
Parsing and dataset discovery
- Behavior change: JCAMP-DX versions are whitespace-normalized and record
starts are line-anchored. Files previously rejected or crashed may now load. - Behavior change: passing a PV360 experiment directory now resolves the
lowest-numberedrawdata.jobNwhen nofidor2dseqexists. - Behavior change:
d3procis loaded as optional metadata for 2dseq and
participates in legacy word-type/geometry fallback.
Metadata and helpers
- New API:
Dataset.frame_group_valuesreturnsVisuGroupDepVals
metadata reshaped to broadcast against 2dseq data. Do not assume legacy
flat echo-time or diffusion-matrix vectors are the preferred representation. - New API:
Dataset.metadataexposes grouped, snake-case Visu and
SUBJECT_*metadata. Existingdataset['ParameterName']access is
unchanged. - Breaking:
utils.combine_channelsnow performs RSS as
sqrt(sum(abs(data)**2)); complex callers that consumed the previous
complex-square result will receive physically meaningful real magnitudes.
Scope removals and diagnostics
- Breaking: TopSpin
seris no longer advertised by the load sweep and is
intentionally unsupported. - Behavior change: direct construction of
fid.orig,fid.spiral, and
fid.navFidproduces a companion-specific diagnostic directing callers to
the parent FID'sfid_companionsmapping. - Behavior change: trajectory reports use a fallback filename rather than
failing when no dataset id is available.