diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e833a1..15070bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +- 0.4.9 & 0.4.10 + - Fix ismrmrd export - 0.4.8 - New `backend="pulseq_rs"` option on `Sequence.import_file` that parses `.seq` files through [pulseq-rs](https://github.com/pulseq-frame/pulseq-rs) diff --git a/Cargo.lock b/Cargo.lock index 2575ddb..4001cb5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "mrzero_core" -version = "0.4.6" +version = "0.4.10" dependencies = [ "num-complex", "pulseq-rs", diff --git a/Cargo.toml b/Cargo.toml index 9a96944..62804fa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mrzero_core" -version = "0.4.6" +version = "0.4.10" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/pyproject.toml b/pyproject.toml index 1cb906a..c4b8a45 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "mrzerocore" -version = "0.4.8" +version = "0.4.10" description = "Core functionality of MRzero" authors = [ {name = "Jonathan Endres", email = "jonathan.endres@uk-erlangen.de"}, diff --git a/python/MRzeroCore/simulation/sig_to_mrd.py b/python/MRzeroCore/simulation/sig_to_mrd.py index 36b2aed..45aec2b 100644 --- a/python/MRzeroCore/simulation/sig_to_mrd.py +++ b/python/MRzeroCore/simulation/sig_to_mrd.py @@ -264,32 +264,33 @@ def s_to_ms(x_in_s): seq_fov = [m_to_mm(val) for val in seq.definitions.get("FOV", [1, 1, 1])] seq_labels = seq.evaluate_labels(evolution="adc") - mrd_enc_params = ismrmrd.xsd.encodingType() - - mrd_enc_params.encodedSpace = ismrmrd.xsd.encodingSpaceType( - matrixSize=ismrmrd.xsd.matrixSizeType( - x=seq_res[0], - y=seq_res[1], - z=seq_res[2], - ), - fieldOfView_mm=ismrmrd.xsd.fieldOfViewMm( - x=seq_fov[0], - y=seq_fov[1], - z=seq_fov[2], - ), - ) - - mrd_enc_params.reconSpace = ismrmrd.xsd.encodingSpaceType( - matrixSize=ismrmrd.xsd.matrixSizeType( - x=seq_res[0], - y=seq_res[1], - z=seq_res[2], + mrd_enc_params = ismrmrd.xsd.encodingType( + encodedSpace=ismrmrd.xsd.encodingSpaceType( + matrixSize=ismrmrd.xsd.matrixSizeType( + x=seq_res[0], + y=seq_res[1], + z=seq_res[2], + ), + fieldOfView_mm=ismrmrd.xsd.fieldOfViewMm( + x=seq_fov[0], + y=seq_fov[1], + z=seq_fov[2], + ), ), - fieldOfView_mm=ismrmrd.xsd.fieldOfViewMm( - x=seq_fov[0], - y=seq_fov[1], - z=seq_fov[2], + reconSpace=ismrmrd.xsd.encodingSpaceType( + matrixSize=ismrmrd.xsd.matrixSizeType( + x=seq_res[0], + y=seq_res[1], + z=seq_res[2], + ), + fieldOfView_mm=ismrmrd.xsd.fieldOfViewMm( + x=seq_fov[0], + y=seq_fov[1], + z=seq_fov[2], + ), ), + encodingLimits=_labels_to_encodinglimits(seq_labels), + trajectory=ismrmrd.xsd.trajectoryType.OTHER ) if verbose > 4: @@ -299,16 +300,17 @@ def s_to_ms(x_in_s): print( f"Wrote encode/recon RES to mrd header with {mrd_enc_params.encodedSpace.fieldOfView_mm}/{mrd_enc_params.reconSpace.fieldOfView_mm}" ) - - mrd_enc_params.encodingLimits = _labels_to_encodinglimits(seq_labels) # The Lamour frequency is a required field in the ISMRMRD header - exp = ismrmrd.xsd.experimentalConditionsType() - exp.H1resonanceFrequency_Hz = int(seq.system.B0 * 42.5764 * 1e6) + exp = ismrmrd.xsd.experimentalConditionsType( + H1resonanceFrequency_Hz=int(seq.system.B0 * 42.5764 * 1e6) + ) mrd_head = ismrmrd.xsd.ismrmrdHeader( experimentalConditions=exp, - measurementInformation=ismrmrd.xsd.measurementInformationType(), + measurementInformation=ismrmrd.xsd.measurementInformationType( + patientPosition=ismrmrd.xsd.patientPositionType.HFS + ), acquisitionSystemInformation=ismrmrd.xsd.acquisitionSystemInformationType(), sequenceParameters=mrd_seq_params, encoding=[mrd_enc_params],