Skip to content

Commit 404aaf3

Browse files
authored
Updated schema to the latest version from ISMRMRD (#67)
* Updated schema * Updated xsdata requirements * Updated conda * Update meta.yaml * Update meta.yaml * Update build.sh
1 parent 7ec97e3 commit 404aaf3

4 files changed

Lines changed: 64 additions & 29 deletions

File tree

conda/build.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#!/bin/bash
22

33
set -euo pipefail
4-
54
pip install .

conda/meta.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@ requirements:
1313
- numpy>=1.22.0
1414
- h5py>=2.3
1515
- nose>=1.0
16+
- docformatter<=1.4
1617
- xsdata>=22.2
1718

1819
run:
1920
- python
2021
- xsdata>=22.2
2122
- numpy>=1.22.0
2223
- h5py>=2.3
24+
- xsdata>=22.2
2325

2426
test:
2527
source_files:
@@ -35,4 +37,4 @@ about:
3537
Python interface and utilities for the ISMRM Raw Data (ISMRMRD a.k.a. MRD) format.
3638
dev_url: https://github.com/ismrmrd/ismrmrd-python
3739
doc_url: https://github.com/ismrmrd/ismrmrd-python
38-
doc_source_url: https://github.com/ismrmrd/ismrmrd-python/blob/main/README.md
40+
doc_source_url: https://github.com/ismrmrd/ismrmrd-python/blob/main/README.md

schema/ismrmrd.xsd

Lines changed: 58 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<xs:all>
2323
<xs:element minOccurs="0" name="patientName" type="xs:string" />
2424
<xs:element minOccurs="0" name="patientWeight_kg" type="xs:float" />
25-
<xs:element minOccurs="0" name="patientHeight_m" type="xs:float"/>
25+
<xs:element minOccurs="0" name="patientHeight_m" type="xs:float" />
2626
<xs:element minOccurs="0" name="patientID" type="xs:string" />
2727
<xs:element minOccurs="0" name="patientBirthdate" type="xs:date" />
2828
<xs:element minOccurs="0" name="patientGender">
@@ -67,7 +67,7 @@
6767
<xs:element minOccurs="0" name="seriesDate" type="xs:date" />
6868
<xs:element minOccurs="0" name="seriesTime" type="xs:time" />
6969
<xs:element minOccurs="1" name="patientPosition" type="patientPositionType" />
70-
<xs:element minOccurs="0" name="relativeTablePosition" type="threeDimensionalFloatType" />
70+
<xs:element minOccurs="0" name="relativeTablePosition" type="threeDimensionalFloat" />
7171
<xs:element minOccurs="0" name="initialSeriesNumber" type="xs:long" />
7272
<xs:element minOccurs="0" name="protocolName" type="xs:string" />
7373
<xs:element minOccurs="0" name="sequenceName" type="xs:string" />
@@ -123,7 +123,6 @@
123123
<xs:element maxOccurs="1" minOccurs="0" name="trajectoryDescription" type="trajectoryDescriptionType" />
124124
<xs:element maxOccurs="1" minOccurs="0" name="parallelImaging" type="parallelImagingType" />
125125
<xs:element maxOccurs="1" minOccurs="0" name="echoTrainLength" type="xs:long" />
126-
<xs:element maxOccurs="1" minOccurs="0" name="multiband" type="multibandType"/>
127126
</xs:all>
128127
</xs:complexType>
129128

@@ -134,13 +133,6 @@
134133
</xs:all>
135134
</xs:complexType>
136135

137-
<xs:complexType name="multibandType">
138-
<xs:sequence>
139-
<xs:element maxOccurs="unbounded" minOccurs="1" name="spacing" type="xs:float"/>
140-
<xs:element name="phaseShift" type="xs:float"/>
141-
</xs:sequence>
142-
</xs:complexType>
143-
144136
<xs:complexType name="matrixSizeType">
145137
<xs:sequence>
146138
<xs:element default="1" maxOccurs="1" minOccurs="1" name="x" type="xs:unsignedShort" />
@@ -174,14 +166,6 @@
174166
</xs:all>
175167
</xs:complexType>
176168

177-
<xs:complexType name="threeDimensionalFloatType">
178-
<xs:sequence>
179-
<xs:element maxOccurs="1" minOccurs="1" name="x" type="xs:float" />
180-
<xs:element maxOccurs="1" minOccurs="1" name="y" type="xs:float" />
181-
<xs:element maxOccurs="1" minOccurs="1" name="z" type="xs:float" />
182-
</xs:sequence>
183-
</xs:complexType>
184-
185169
<xs:complexType name="encodingLimitsType">
186170
<xs:all>
187171
<xs:element maxOccurs="1" minOccurs="0" name="kspace_encoding_step_0" type="limitType" />
@@ -221,6 +205,7 @@
221205
<xs:element maxOccurs="1" minOccurs="1" name="identifier" type="xs:string" />
222206
<xs:element maxOccurs="unbounded" minOccurs="0" name="userParameterLong" type="userParameterLongType" />
223207
<xs:element maxOccurs="unbounded" minOccurs="0" name="userParameterDouble" type="userParameterDoubleType" />
208+
<xs:element maxOccurs="unbounded" minOccurs="0" name="userParameterString" type="userParameterStringType" />
224209
<xs:element maxOccurs="1" minOccurs="0" name="comment" type="xs:string" />
225210
</xs:sequence>
226211
</xs:complexType>
@@ -233,22 +218,44 @@
233218
<xs:element minOccurs="0" maxOccurs="unbounded" type="xs:float" name="flipAngle_deg" />
234219
<xs:element minOccurs="0" maxOccurs="1" type="xs:string" name="sequence_type" />
235220
<xs:element minOccurs="0" maxOccurs="unbounded" type="xs:float" name="echo_spacing" />
236-
<xs:element minOccurs="0" maxOccurs="unbounded" type="diffusionType" name="diffusion"/>
221+
<xs:element minOccurs="0" maxOccurs="1" type="diffusionDimensionType" name="diffusionDimension" />
222+
<xs:element minOccurs="0" maxOccurs="unbounded" type="diffusionType" name="diffusion" />
223+
<xs:element minOccurs="0" maxOccurs="1" type="xs:string" name="diffusionScheme" />
237224
</xs:sequence>
238225
</xs:complexType>
239226

240227
<xs:complexType name="diffusionType">
241228
<xs:sequence>
242229
<xs:element type="gradientDirectionType" name="gradientDirection" />
243-
<xs:element type="xs:float" name="bvalue"/>
230+
<xs:element type="xs:float" name="bvalue" />
244231
</xs:sequence>
245232
</xs:complexType>
246233

234+
235+
<xs:simpleType name="diffusionDimensionType">
236+
<xs:restriction base="xs:string">
237+
<xs:enumeration value="average" />
238+
<xs:enumeration value="contrast" />
239+
<xs:enumeration value="phase" />
240+
<xs:enumeration value="repetition" />
241+
<xs:enumeration value="set" />
242+
<xs:enumeration value="segment" />
243+
<xs:enumeration value="user_0" />
244+
<xs:enumeration value="user_1" />
245+
<xs:enumeration value="user_2" />
246+
<xs:enumeration value="user_3" />
247+
<xs:enumeration value="user_4" />
248+
<xs:enumeration value="user_5" />
249+
<xs:enumeration value="user_6" />
250+
<xs:enumeration value="user_7" />
251+
</xs:restriction>
252+
</xs:simpleType>
253+
247254
<xs:complexType name="gradientDirectionType">
248255
<xs:all>
249-
<xs:element type="xs:float" name="rl"/>
250-
<xs:element type="xs:float" name="ap"/>
251-
<xs:element type="xs:float" name="fh"/>
256+
<xs:element type="xs:float" name="rl" />
257+
<xs:element type="xs:float" name="ap" />
258+
<xs:element type="xs:float" name="fh" />
252259
</xs:all>
253260
</xs:complexType>
254261

@@ -295,6 +302,32 @@
295302
</xs:sequence>
296303
</xs:complexType>
297304

305+
306+
<xs:complexType name="multibandType">
307+
<xs:sequence>
308+
<xs:element maxOccurs="unbounded" minOccurs="1" name="spacing" type="multibandSpacingType" />
309+
<xs:element name="deltaKz" minOccurs="1" maxOccurs="1" type="xs:float" />
310+
<xs:element name="multiband_factor" minOccurs="1" maxOccurs="1" type="xs:unsignedInt" />
311+
<xs:element name="calibration" minOccurs="1" maxOccurs="1" type="multibandCalibrationType" />
312+
<xs:element name="calibration_encoding" minOccurs="1" maxOccurs="1" type="xs:unsignedLong" />
313+
</xs:sequence>
314+
</xs:complexType>
315+
316+
<xs:complexType name="multibandSpacingType">
317+
<xs:sequence>
318+
<xs:element maxOccurs="unbounded" minOccurs="1" name="dZ" type="xs:float" />
319+
</xs:sequence>
320+
</xs:complexType>
321+
322+
<xs:simpleType name="multibandCalibrationType">
323+
<xs:restriction base="xs:string">
324+
<xs:enumeration value="separable2D" />
325+
<xs:enumeration value="full3D" />
326+
<xs:enumeration value="other" />
327+
</xs:restriction>
328+
</xs:simpleType>
329+
330+
298331
<xs:complexType name="accelerationFactorType">
299332
<xs:all>
300333
<xs:element name="kspace_encoding_step_1" type="xs:unsignedShort" />
@@ -327,6 +360,7 @@
327360
<xs:element type="accelerationFactorType" name="accelerationFactor" />
328361
<xs:element maxOccurs="1" minOccurs="0" type="calibrationModeType" name="calibrationMode" />
329362
<xs:element maxOccurs="1" minOccurs="0" type="interleavingDimensionType" name="interleavingDimension" />
363+
<xs:element maxOccurs="1" minOccurs="0" type="multibandType" name="multiband" />
330364
</xs:sequence>
331365
</xs:complexType>
332366

@@ -349,4 +383,4 @@
349383
<xs:element name="userParameters" type="userParametersType" />
350384
</xs:sequence>
351385
</xs:complexType>
352-
</xs:schema>
386+
</xs:schema>

setup.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def to_uri(filename):
5858

5959
setup(
6060
name='ismrmrd',
61-
version='1.13.1',
61+
version='1.14.0',
6262
author='ISMRMRD Developers',
6363
description='Python implementation of the ISMRMRD',
6464
license='Public Domain',
@@ -74,8 +74,8 @@ def to_uri(filename):
7474
'Operating System :: OS Independent',
7575
'Topic :: Scientific/Engineering :: Medical Science Apps.'
7676
],
77-
install_requires=['xsdata>=22.2', 'numpy>=1.22.0', 'h5py>=2.3'],
78-
setup_requires=['nose>=1.0', 'xsdata[cli]>=22.2', 'jinja2 >= 2.11'],
77+
install_requires=['xsdata>=22.12', 'numpy>=1.22.0', 'h5py>=2.3'],
78+
setup_requires=['nose>=1.0', 'xsdata[cli]>=22.12', 'jinja2 >= 2.11'],
7979
test_suite='nose.collector',
8080
cmdclass={'build_py':my_build_py}
8181
)

0 commit comments

Comments
 (0)