Repository navigation
Read the sequence description from ISMRMRD waveforms; description's RF raster by default; 20 mm non-selective rule - #53
Merged
Merged
Conversation
…e description's raster; profile only pulses thinner than 20 mm Pulserver now sends the description as waveforms 1024-1026, which every MRD writer keeps with the series; read_mrd_description reads them (and still the TEXT message), and description_from_waveforms reads a stored series'. EpgEngine.simulate and simulate_subspace integrated pulses on a 1 us raster unless told otherwise, whatever the description stated; on a scanner's 2 us raster every flip came out halved. The description's raster is now the default. A pulse whose bandwidth over its slice-select gradient exceeds NONSELECTIVE_THICKNESS_M (20 mm) is a slab the encoding resolves: a slice profile takes it at its centre rotation. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Pulserver no longer sends the TEXT message, and no series that carries one is kept. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
mcencini
marked this pull request as ready for review
November 3, 2026 23:11
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Matteo
What changed
read_mrd_descriptionreads the description as ISMRMRD waveforms 1024 (header), 1025 (event list) and 1026 (one per RF definition), the form pulserver sends from Sequence description: one repetition at the k-space centre, as ISMRMRD waveforms pulserver#339. It passes physiological waveforms over. The TEXT message form is no longer read: pulserver no longer sends it, and no stored series holds one. A newdescription_from_waveformsreads the description off a stored series' waveforms (ismrmrd.Waveformobjects or(id, data)pairs).EpgEngine.simulateandsimulate_subspacenow takerf_raster_time_sfrom the description by default, instead of 1 µs.NONSELECTIVE_THICKNESS_M(20 mm) is tabulated without bandwidth, so a slice profile takes it at its centre rotation: a slab the encoding resolves. A description stating no gradient or no bandwidth keeps the old behaviour.Why
Validation
pytest tests/sequence: 1006 passed after removing the TEXT path (the full suite passed at 1490 before that). New tests:ruff checkandruff format --check: clean.fse_descriptionfor the same train to 0.07 %, with or withoutexact_slice_profile. The slabs read as 180 and 255 mm.Documentation impact
The developer guide's MRD stream section now gives the waveform layout.
explanations/description.mdandexplanations/epg.mdlist the new claims with their tests.🤖 Generated with Claude Code