Skip to content

Commit

Permalink
Updated schema to the latest version from ISMRMRD (#67)
Browse files Browse the repository at this point in the history
* Updated schema

* Updated xsdata requirements

* Updated conda

* Update meta.yaml

* Update meta.yaml

* Update build.sh
  • Loading branch information
dchansen authored May 1, 2023
1 parent 7ec97e3 commit 404aaf3
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 29 deletions.
1 change: 0 additions & 1 deletion conda/build.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/bin/bash

set -euo pipefail

pip install .
4 changes: 3 additions & 1 deletion conda/meta.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,15 @@ requirements:
- numpy>=1.22.0
- h5py>=2.3
- nose>=1.0
- docformatter<=1.4
- xsdata>=22.2

run:
- python
- xsdata>=22.2
- numpy>=1.22.0
- h5py>=2.3
- xsdata>=22.2

test:
source_files:
Expand All @@ -35,4 +37,4 @@ about:
Python interface and utilities for the ISMRM Raw Data (ISMRMRD a.k.a. MRD) format.
dev_url: https://github.com/ismrmrd/ismrmrd-python
doc_url: https://github.com/ismrmrd/ismrmrd-python
doc_source_url: https://github.com/ismrmrd/ismrmrd-python/blob/main/README.md
doc_source_url: https://github.com/ismrmrd/ismrmrd-python/blob/main/README.md
82 changes: 58 additions & 24 deletions schema/ismrmrd.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<xs:all>
<xs:element minOccurs="0" name="patientName" type="xs:string" />
<xs:element minOccurs="0" name="patientWeight_kg" type="xs:float" />
<xs:element minOccurs="0" name="patientHeight_m" type="xs:float"/>
<xs:element minOccurs="0" name="patientHeight_m" type="xs:float" />
<xs:element minOccurs="0" name="patientID" type="xs:string" />
<xs:element minOccurs="0" name="patientBirthdate" type="xs:date" />
<xs:element minOccurs="0" name="patientGender">
Expand Down Expand Up @@ -67,7 +67,7 @@
<xs:element minOccurs="0" name="seriesDate" type="xs:date" />
<xs:element minOccurs="0" name="seriesTime" type="xs:time" />
<xs:element minOccurs="1" name="patientPosition" type="patientPositionType" />
<xs:element minOccurs="0" name="relativeTablePosition" type="threeDimensionalFloatType" />
<xs:element minOccurs="0" name="relativeTablePosition" type="threeDimensionalFloat" />
<xs:element minOccurs="0" name="initialSeriesNumber" type="xs:long" />
<xs:element minOccurs="0" name="protocolName" type="xs:string" />
<xs:element minOccurs="0" name="sequenceName" type="xs:string" />
Expand Down Expand Up @@ -123,7 +123,6 @@
<xs:element maxOccurs="1" minOccurs="0" name="trajectoryDescription" type="trajectoryDescriptionType" />
<xs:element maxOccurs="1" minOccurs="0" name="parallelImaging" type="parallelImagingType" />
<xs:element maxOccurs="1" minOccurs="0" name="echoTrainLength" type="xs:long" />
<xs:element maxOccurs="1" minOccurs="0" name="multiband" type="multibandType"/>
</xs:all>
</xs:complexType>

Expand All @@ -134,13 +133,6 @@
</xs:all>
</xs:complexType>

<xs:complexType name="multibandType">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="1" name="spacing" type="xs:float"/>
<xs:element name="phaseShift" type="xs:float"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="matrixSizeType">
<xs:sequence>
<xs:element default="1" maxOccurs="1" minOccurs="1" name="x" type="xs:unsignedShort" />
Expand Down Expand Up @@ -174,14 +166,6 @@
</xs:all>
</xs:complexType>

<xs:complexType name="threeDimensionalFloatType">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="1" name="x" type="xs:float" />
<xs:element maxOccurs="1" minOccurs="1" name="y" type="xs:float" />
<xs:element maxOccurs="1" minOccurs="1" name="z" type="xs:float" />
</xs:sequence>
</xs:complexType>

<xs:complexType name="encodingLimitsType">
<xs:all>
<xs:element maxOccurs="1" minOccurs="0" name="kspace_encoding_step_0" type="limitType" />
Expand Down Expand Up @@ -221,6 +205,7 @@
<xs:element maxOccurs="1" minOccurs="1" name="identifier" type="xs:string" />
<xs:element maxOccurs="unbounded" minOccurs="0" name="userParameterLong" type="userParameterLongType" />
<xs:element maxOccurs="unbounded" minOccurs="0" name="userParameterDouble" type="userParameterDoubleType" />
<xs:element maxOccurs="unbounded" minOccurs="0" name="userParameterString" type="userParameterStringType" />
<xs:element maxOccurs="1" minOccurs="0" name="comment" type="xs:string" />
</xs:sequence>
</xs:complexType>
Expand All @@ -233,22 +218,44 @@
<xs:element minOccurs="0" maxOccurs="unbounded" type="xs:float" name="flipAngle_deg" />
<xs:element minOccurs="0" maxOccurs="1" type="xs:string" name="sequence_type" />
<xs:element minOccurs="0" maxOccurs="unbounded" type="xs:float" name="echo_spacing" />
<xs:element minOccurs="0" maxOccurs="unbounded" type="diffusionType" name="diffusion"/>
<xs:element minOccurs="0" maxOccurs="1" type="diffusionDimensionType" name="diffusionDimension" />
<xs:element minOccurs="0" maxOccurs="unbounded" type="diffusionType" name="diffusion" />
<xs:element minOccurs="0" maxOccurs="1" type="xs:string" name="diffusionScheme" />
</xs:sequence>
</xs:complexType>

<xs:complexType name="diffusionType">
<xs:sequence>
<xs:element type="gradientDirectionType" name="gradientDirection" />
<xs:element type="xs:float" name="bvalue"/>
<xs:element type="xs:float" name="bvalue" />
</xs:sequence>
</xs:complexType>


<xs:simpleType name="diffusionDimensionType">
<xs:restriction base="xs:string">
<xs:enumeration value="average" />
<xs:enumeration value="contrast" />
<xs:enumeration value="phase" />
<xs:enumeration value="repetition" />
<xs:enumeration value="set" />
<xs:enumeration value="segment" />
<xs:enumeration value="user_0" />
<xs:enumeration value="user_1" />
<xs:enumeration value="user_2" />
<xs:enumeration value="user_3" />
<xs:enumeration value="user_4" />
<xs:enumeration value="user_5" />
<xs:enumeration value="user_6" />
<xs:enumeration value="user_7" />
</xs:restriction>
</xs:simpleType>

<xs:complexType name="gradientDirectionType">
<xs:all>
<xs:element type="xs:float" name="rl"/>
<xs:element type="xs:float" name="ap"/>
<xs:element type="xs:float" name="fh"/>
<xs:element type="xs:float" name="rl" />
<xs:element type="xs:float" name="ap" />
<xs:element type="xs:float" name="fh" />
</xs:all>
</xs:complexType>

Expand Down Expand Up @@ -295,6 +302,32 @@
</xs:sequence>
</xs:complexType>


<xs:complexType name="multibandType">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="1" name="spacing" type="multibandSpacingType" />
<xs:element name="deltaKz" minOccurs="1" maxOccurs="1" type="xs:float" />
<xs:element name="multiband_factor" minOccurs="1" maxOccurs="1" type="xs:unsignedInt" />
<xs:element name="calibration" minOccurs="1" maxOccurs="1" type="multibandCalibrationType" />
<xs:element name="calibration_encoding" minOccurs="1" maxOccurs="1" type="xs:unsignedLong" />
</xs:sequence>
</xs:complexType>

<xs:complexType name="multibandSpacingType">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="1" name="dZ" type="xs:float" />
</xs:sequence>
</xs:complexType>

<xs:simpleType name="multibandCalibrationType">
<xs:restriction base="xs:string">
<xs:enumeration value="separable2D" />
<xs:enumeration value="full3D" />
<xs:enumeration value="other" />
</xs:restriction>
</xs:simpleType>


<xs:complexType name="accelerationFactorType">
<xs:all>
<xs:element name="kspace_encoding_step_1" type="xs:unsignedShort" />
Expand Down Expand Up @@ -327,6 +360,7 @@
<xs:element type="accelerationFactorType" name="accelerationFactor" />
<xs:element maxOccurs="1" minOccurs="0" type="calibrationModeType" name="calibrationMode" />
<xs:element maxOccurs="1" minOccurs="0" type="interleavingDimensionType" name="interleavingDimension" />
<xs:element maxOccurs="1" minOccurs="0" type="multibandType" name="multiband" />
</xs:sequence>
</xs:complexType>

Expand All @@ -349,4 +383,4 @@
<xs:element name="userParameters" type="userParametersType" />
</xs:sequence>
</xs:complexType>
</xs:schema>
</xs:schema>
6 changes: 3 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def to_uri(filename):

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

0 comments on commit 404aaf3

Please sign in to comment.