Skip to main content

brukerapi-python

https://zenodo.org/badge/DOI/10.5281/zenodo.3831320.svg https://github.com/isi-nmr/brukerapi-python/workflows/CI/badge.svg Documentation Status

A Python package providing I/O interface for Bruker data sets.

tl;dr

Install using pip:

pip install brukerapi

Load any data set:

from brukerapi.dataset import Dataset
dataset = Dataset('{path}/2dseq')    # also supports fid, fid_proc.64, traj, and rawdata.jobN
dataset.data                         # access data array
dataset.get_value('VisuCoreSize')    # get a parameter value

Raw acquisitions and k-space

Raw Bruker acquisitions have format-dependent historical .data semantics. For explicit code, use the representation that matches the task:

fid = Dataset('{path}/fid')
fid.raw                 # decoded (sample, shot, receiver) acquisitions
fid.kspace              # ordered FID k-space

job = Dataset('{path}/rawdata.job0')
job.raw                 # decoded (sample, shot, receiver) acquisitions
job.kspace              # ordered Cartesian PV360 k-space, when metadata proves the layout
job.to_kspace(bart=True)  # optional 16-axis BART layout

Dataset.data remains backward compatible: FIDs expose their historical ordered k-space view, whereas PV360 rawdata.jobN exposes its historical decoded stream and emits a FutureWarning. .kspace is not a reconstruction API; EPI and non-Cartesian jobs require acquisition-specific handling.

Frame-group metadata

For 2dseq data, frame_group_values aligns values named by VisuGroupDepVals to the corresponding array axes. Returned arrays use singleton dimensions where needed and therefore broadcast directly against dataset.data:

echoes = dataset.frame_group_values['VisuAcqEchoTime']
b_matrices = dataset.frame_group_values['VisuAcqDiffusionBMatrix']

metadata provides normalized, grouped access to parsed subject, study, series, equipment, and acquisition fields:

dataset.metadata['visu_study']['uid']
dataset.metadata['visu_acq']['sequence_name']
dataset.metadata['subject']['id']

Load an entire study:

from brukerapi.folders import Study
study = Study('{path_to_study_folder}')
dataset = study.get_dataset(exp_id='1', proc_id='1')

dataset.data                         # Study loads datasets by default

Load a parametric file:

from brukerapi.jcampdx import JCAMPDX

parameters = JCAMPDX('path_to_scan/method')

TR = parameters.params["PVM_RepetitionTime"].value
TR = parameters.get_value("PVM_RepetitionTime")

Features

  • I/O interface for fid data sets

  • I/O interface for 2dseq data sets

  • I/O interface for rawdata data sets

  • Random access for fid and 2dseq data sets

  • Split operation implemented over 2dseq data sets

  • Filter operation implemented over Bruker folders (allowing you to work with a subset of your study only)

  • ParaVision 5.1, 6.0.1, 7.0.0, and 360 metadata and binary-layout support

  • Metadata-based fallback inference for custom Cartesian, EPI, radial/UTE, spiral, ZTE, CSI, and spectroscopy sequences

Examples

Documentation

Online documentation of the API is available at Read The Docs.

Install

Using pip:

pip install brukerapi

From source:

git clone https://github.com/isi-nmr/brukerapi-python.git
cd brukerapi-python
python -m pip install -e .[dev]

Testing

To ensure reliability, every commit to this repository is tested against the following, publicly available data sets:

The corpus download is opt-in for local runs:

python -m pytest test --download_test_data

Without that flag, pytest uses any corpus already present under test/test_data and skips unavailable collections.

File format reference

Bruker ParaVision Raw Data Format is the source of truth for file-format parsing, binary layouts, dataset typing, and metadata-driven acquisition scheme inference in this project.

Compatibility

Tested releases are ParaVision 5.1, 6.0.1, 7.0.0, and PV360 3.x. Supported primary binaries are fid, fid_proc.64, 2dseq, traj, rawdata.jobN, and named jobs declared by ACQ_jobs (for example, rawdata.Navigator or rawdata.echoNavigator). Known fid.spiral, fid.navFid, and fid.orig files are exposed as auxiliary subdatasets of their parent fid; they are not accepted as standalone primary datasets. TopSpin/NMR ser is intentionally unsupported.

Known pulse-program names use dedicated layouts. For custom sequences the reader also infers common acquisition families from metadata; callers can pass scheme_id= when inference is ambiguous. Rawdata is returned as complex ordered samples, not as reconstructed k-space. See the compatibility page in the documentation for behavior and current reconstruction limitations.

Metadata

Release files for brukerapi 0.4.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for brukerapi 0.4.6
File Size Uploaded Provenance Actions
brukerapi-0.4.6.tar.gz 121.0 kB Without provenance Details for brukerapi-0.4.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for brukerapi 0.4.6
File Interpreter ABI Platform Actions
brukerapi-0.4.6-py3-none-any.whl Python 3 none any Details for brukerapi-0.4.6-py3-none-any.whl

Total release size: 193.5 kB

Release files / brukerapi-0.4.6.tar.gz

Download URL brukerapi-0.4.6.tar.gz
Size 121.0 kB
Tags Source
SHA-256 checksum
How to use checksums
24616ea608169cdc7b67f935da403cfd5475824d8637b7f8625350c25887fd52
BLAKE2b-256 checksum
How to use checksums
92d101db4e3a01b95a8087ea124407495ce6b5fd4e9a645766d669a910718cbe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release files / brukerapi-0.4.6-py3-none-any.whl

Download URL brukerapi-0.4.6-py3-none-any.whl
Size 72.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e35ad12be930a67717086d56e9c616ec4a0a100b87e396c5e6d444aa9317221b
BLAKE2b-256 checksum
How to use checksums
827d9c2f87105bd98afa915f48d83228fd15c6fe4e3a8822355794089e04547c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Security for brukerapi 0.4.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page