Bruker ParaVision
ParaVision runs Bruker BioSpec and PharmaScan preclinical MRI scanners. A study folder holds one folder per experiment (<expno>/, with acqp and method), each with reconstructions in pdata/<procno>/: the image data 2dseq and its description visu_pars. OpenReadout reads a study, an experiment, a pdata/<procno> folder or a 2dseq file, one image per reconstruction (spectroscopy reconstructions are traces). Derived from brukerapi (MIT, Pilsen MR group), read as documentation, and the corpus; brukerapi is also the reference reader. Provenance: docs/provenance/bruker-paravision.md.
Parameter files
JCAMP-DX-style records ##$Name=value. An array declares its size in brackets (( 2 ), ( 5, 9 )) and continues on the following lines; strings are in angle brackets (<mm>); structures in parentheses ((2, <FG_ECHO>, <Map Type>, 0, 2)); @n*(v) repeats a value; $$ lines are comments. parse never fails: unreadable records are skipped.
2dseq
VisuCoreFrameCount frames of VisuCoreSize samples (x fastest; 2 or 3 core dimensions; 1 for spectroscopy) of VisuCoreWordType (_8BIT_UNSGN_INT, _16BIT_SGN_INT, _32BIT_SGN_INT, _32BIT_FLOAT) in VisuCoreByteOrder. Each frame is scaled by its VisuCoreDataSlope and VisuCoreDataOffs; the values come back float32 (stored × slope + offset), the way brukerapi scales them.
Frames are ordered by the frame groups of VisuFGOrderDesc, the first group varying fastest. Groups become axes:
| group | axis |
|---|---|
FG_SLICE |
Z (a 3-D core already fills Z: then C) |
FG_CYCLE, FG_MOVIE |
T |
every other group (FG_ECHO, FG_DIFFUSION, FG_FLOW, FG_COMPLEX, FG_ISA, …) |
C, named by VisuFGElemComment |
When the groups do not multiply to the frame count, frames are listed as T and a note says so.
Pixel size: VisuCoreExtent / VisuCoreSize (mm). Z step of 2-D slices: VisuCoreSlicePacksSliceDist, else the distance between the first two VisuCorePositions. VisuCoreOrientation is reported (extra.orientation.matrix, and the plane its third row is closest to); frames stored transposed (VisuCoreTransposition) are returned as stored and check says so.
Spectroscopy (VisuCoreDimDesc spectroscopic) is a trace; its ppm axis is centred on the method’s PVM_FrqWorkPpm and spans VisuCoreExtent, high to low (inferred).
Subject names, IDs, birth dates and the referring user are withheld (extra.personal_data; withheld in the vendor tree).
Vocabulary (every public identifier in openreadout-medical/src/paravision must appear here)
| identifier | meaning |
|---|---|
ParavisionReader |
the reader |
FORMAT_ID |
the format id, bruker-paravision |
info extras
| key | meaning |
|---|---|
expno, procno |
experiment and processing numbers |
method, protocol |
Method (or VisuAcqSequenceName) and VisuAcquisitionProtocol |
word_type, frame_groups, frame_count |
the stored data |
rescale, stored_pixel_type |
slope and offset applied (varies when frames differ) |
value_unit |
VisuCoreDataUnits |
acquisition |
repetition_time_ms, echo_time_ms, inversion_time_ms, flip_angle_deg, averages, echo_train_length, imaging_frequency_mhz, scan_time_s, nucleus, receive_coil, field_strength_t (from the 1H frequency) |
subject |
sex, type, weight_kg, position |
orientation |
plane, matrix |
personal_data |
withheld parameters |
How this reader was derived, file by file: provenance log.