mrd-python 2.1.1__tar.gz → 2.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mrd_python-2.1.1 → mrd_python-2.2.0}/PKG-INFO +4 -3
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/_binary.py +6 -6
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/_dtypes.py +10 -5
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/_ndjson.py +1 -1
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/binary.py +20 -20
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/ndjson.py +58 -58
- mrd_python-2.2.0/mrd/protocols.py +320 -0
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/tools/export_png_images.py +6 -3
- mrd_python-2.2.0/mrd/tools/ismrmrd_to_mrd.py +655 -0
- mrd_python-2.2.0/mrd/tools/mrd_to_ismrmrd.py +696 -0
- mrd_python-2.2.0/mrd/tools/phantom.py +277 -0
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/tools/simulation.py +4 -3
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/tools/stream_recon.py +2 -2
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/types.py +100 -100
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/yardl_types.py +5 -4
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd_python.egg-info/PKG-INFO +4 -3
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd_python.egg-info/SOURCES.txt +2 -0
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd_python.egg-info/requires.txt +1 -0
- {mrd_python-2.1.1 → mrd_python-2.2.0}/pyproject.toml +6 -2
- mrd_python-2.2.0/setup.py +7 -0
- mrd_python-2.1.1/mrd/protocols.py +0 -318
- mrd_python-2.1.1/mrd/tools/phantom.py +0 -161
- mrd_python-2.1.1/setup.py +0 -7
- {mrd_python-2.1.1 → mrd_python-2.2.0}/README.md +0 -0
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/__init__.py +0 -0
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/tools/minimal_example.py +0 -0
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd/tools/transform.py +0 -0
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd_python.egg-info/dependency_links.txt +0 -0
- {mrd_python-2.1.1 → mrd_python-2.2.0}/mrd_python.egg-info/top_level.txt +0 -0
- {mrd_python-2.1.1 → mrd_python-2.2.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: mrd-python
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
4
4
|
Summary: Library and tools for working with data in the ISMRM Raw Data (MRD) format.
|
|
5
5
|
Project-URL: Homepage, https://ismrmrd.github.io/mrd
|
|
6
6
|
Project-URL: Documentation, https://ismrmrd.github.io/mrd
|
|
@@ -11,8 +11,9 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Intended Audience :: Science/Research
|
|
13
13
|
Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
|
|
14
|
-
Requires-Python: >=3.
|
|
14
|
+
Requires-Python: >=3.12
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
|
+
Requires-Dist: ismrmrd>=1.14.2
|
|
16
17
|
Requires-Dist: numpy>=1.22.0
|
|
17
18
|
Requires-Dist: pillow>=9.2.0
|
|
18
19
|
|
|
@@ -632,7 +632,7 @@ class Complex32Serializer(StructSerializer[ComplexFloat, np.complex64]):
|
|
|
632
632
|
stream.write(self._struct, value.real, value.imag)
|
|
633
633
|
|
|
634
634
|
def read(self, stream: CodedInputStream) -> ComplexFloat:
|
|
635
|
-
return
|
|
635
|
+
return complex(*stream.read(self._struct))
|
|
636
636
|
|
|
637
637
|
def read_numpy(self, stream: CodedInputStream) -> np.complex64:
|
|
638
638
|
real, imag = stream.read(self._struct)
|
|
@@ -656,7 +656,7 @@ class Complex64Serializer(StructSerializer[ComplexDouble, np.complex128]):
|
|
|
656
656
|
stream.write(self._struct, value.real, value.imag)
|
|
657
657
|
|
|
658
658
|
def read(self, stream: CodedInputStream) -> ComplexDouble:
|
|
659
|
-
return
|
|
659
|
+
return complex(*stream.read(self._struct))
|
|
660
660
|
|
|
661
661
|
def read_numpy(self, stream: CodedInputStream) -> np.complex128:
|
|
662
662
|
real, imag = stream.read(self._struct)
|
|
@@ -687,7 +687,7 @@ class StringSerializer(TypeSerializer[str, np.object_]):
|
|
|
687
687
|
return str(view, "utf-8")
|
|
688
688
|
|
|
689
689
|
def read_numpy(self, stream: CodedInputStream) -> np.object_:
|
|
690
|
-
return np.object_(self.read(stream))
|
|
690
|
+
return np.object_(self.read(stream)) # pyright: ignore [reportReturnType]
|
|
691
691
|
|
|
692
692
|
|
|
693
693
|
string_serializer = StringSerializer()
|
|
@@ -770,7 +770,7 @@ class TimeSerializer(TypeSerializer[Time, np.timedelta64]):
|
|
|
770
770
|
time_serializer = TimeSerializer()
|
|
771
771
|
|
|
772
772
|
DATETIME_NANOSECONDS_DTYPE = np.dtype("datetime64[ns]")
|
|
773
|
-
EPOCH_DATETIME = datetime.datetime.
|
|
773
|
+
EPOCH_DATETIME = datetime.datetime.fromtimestamp(0, tz=datetime.timezone.utc)
|
|
774
774
|
|
|
775
775
|
|
|
776
776
|
class DateTimeSerializer(TypeSerializer[DateTime, np.datetime64]):
|
|
@@ -1034,7 +1034,7 @@ class VectorSerializer(Generic[T, T_NP], TypeSerializer[list[T], np.object_]):
|
|
|
1034
1034
|
return [self._element_serializer.read(stream) for _ in range(length)]
|
|
1035
1035
|
|
|
1036
1036
|
def read_numpy(self, stream: CodedInputStream) -> np.object_:
|
|
1037
|
-
return np.object_(self.read(stream))
|
|
1037
|
+
return np.object_(self.read(stream)) # pyright: ignore [reportReturnType]
|
|
1038
1038
|
|
|
1039
1039
|
|
|
1040
1040
|
TKey = TypeVar("TKey")
|
|
@@ -1073,7 +1073,7 @@ class MapSerializer(
|
|
|
1073
1073
|
}
|
|
1074
1074
|
|
|
1075
1075
|
def read_numpy(self, stream: CodedInputStream) -> np.object_:
|
|
1076
|
-
return np.object_(self.read(stream))
|
|
1076
|
+
return np.object_(self.read(stream)) # pyright: ignore [reportReturnType]
|
|
1077
1077
|
|
|
1078
1078
|
|
|
1079
1079
|
class NDArraySerializerBase(
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
import datetime
|
|
5
5
|
from types import GenericAlias
|
|
6
|
+
from typing import Annotated, Any
|
|
6
7
|
import sys
|
|
7
8
|
|
|
8
9
|
if sys.version_info >= (3, 10):
|
|
@@ -15,10 +16,13 @@ from . import yardl_types as yardl
|
|
|
15
16
|
|
|
16
17
|
def make_get_dtype_func(
|
|
17
18
|
dtype_map: dict[
|
|
18
|
-
Union[type, GenericAlias],
|
|
19
|
+
Union[type, GenericAlias, Annotated[Any, Any]],
|
|
19
20
|
Union[np.dtype[Any], Callable[[tuple[type, ...]], np.dtype[Any]]],
|
|
20
|
-
]
|
|
21
|
-
) -> Callable[
|
|
21
|
+
],
|
|
22
|
+
) -> Callable[
|
|
23
|
+
[Union[type, GenericAlias, Annotated[Any, Any]]],
|
|
24
|
+
np.dtype[Any],
|
|
25
|
+
]:
|
|
22
26
|
dtype_map[bool] = np.dtype(np.bool_)
|
|
23
27
|
dtype_map[yardl.Int8] = np.dtype(np.int8)
|
|
24
28
|
dtype_map[yardl.UInt8] = np.dtype(np.uint8)
|
|
@@ -50,7 +54,7 @@ def make_get_dtype_func(
|
|
|
50
54
|
|
|
51
55
|
def get_dtype_impl(
|
|
52
56
|
dtype_map: dict[
|
|
53
|
-
Union[type, GenericAlias],
|
|
57
|
+
Union[type, GenericAlias, Annotated[Any, Any]],
|
|
54
58
|
Union[np.dtype[Any], Callable[[tuple[type, ...]], np.dtype[Any]]],
|
|
55
59
|
],
|
|
56
60
|
t: Union[type, GenericAlias],
|
|
@@ -65,7 +69,8 @@ def make_get_dtype_func(
|
|
|
65
69
|
origin = get_origin(t)
|
|
66
70
|
|
|
67
71
|
if origin == Union or (
|
|
68
|
-
sys.version_info >= (3, 10)
|
|
72
|
+
sys.version_info >= (3, 10)
|
|
73
|
+
and isinstance(t, UnionType) # pyright: ignore[reportUnnecessaryIsInstance]
|
|
69
74
|
):
|
|
70
75
|
return _get_union_dtype(get_args(t))
|
|
71
76
|
|
|
@@ -568,7 +568,7 @@ class StringConverter(JsonConverter[str, np.object_]):
|
|
|
568
568
|
return cast(str, json_object)
|
|
569
569
|
|
|
570
570
|
def from_json_to_numpy(self, json_object: object) -> np.object_:
|
|
571
|
-
return np.object_(json_object)
|
|
571
|
+
return np.object_(json_object) # pyright: ignore [reportReturnType]
|
|
572
572
|
|
|
573
573
|
|
|
574
574
|
string_converter = StringConverter()
|
|
@@ -44,8 +44,8 @@ class BinaryMrdReader(_binary.BinaryProtocolReader, MrdReaderBase):
|
|
|
44
44
|
"""
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
def __init__(self, stream: typing.Union[io.BufferedReader, io.BytesIO, typing.BinaryIO, str]) -> None:
|
|
48
|
-
MrdReaderBase.__init__(self)
|
|
47
|
+
def __init__(self, stream: typing.Union[io.BufferedReader, io.BytesIO, typing.BinaryIO, str], skip_completed_check: bool = False) -> None:
|
|
48
|
+
MrdReaderBase.__init__(self, skip_completed_check)
|
|
49
49
|
_binary.BinaryProtocolReader.__init__(self, stream, MrdReaderBase.schema)
|
|
50
50
|
|
|
51
51
|
def _read_header(self) -> typing.Optional[Header]:
|
|
@@ -76,8 +76,8 @@ class BinaryMrdNoiseCovarianceReader(_binary.BinaryProtocolReader, MrdNoiseCovar
|
|
|
76
76
|
"""
|
|
77
77
|
|
|
78
78
|
|
|
79
|
-
def __init__(self, stream: typing.Union[io.BufferedReader, io.BytesIO, typing.BinaryIO, str]) -> None:
|
|
80
|
-
MrdNoiseCovarianceReaderBase.__init__(self)
|
|
79
|
+
def __init__(self, stream: typing.Union[io.BufferedReader, io.BytesIO, typing.BinaryIO, str], skip_completed_check: bool = False) -> None:
|
|
80
|
+
MrdNoiseCovarianceReaderBase.__init__(self, skip_completed_check)
|
|
81
81
|
_binary.BinaryProtocolReader.__init__(self, stream, MrdNoiseCovarianceReaderBase.schema)
|
|
82
82
|
|
|
83
83
|
def _read_noise_covariance(self) -> NoiseCovariance:
|
|
@@ -103,20 +103,20 @@ class EncodingCountersSerializer(_binary.RecordSerializer[EncodingCounters]):
|
|
|
103
103
|
|
|
104
104
|
class AcquisitionHeaderSerializer(_binary.RecordSerializer[AcquisitionHeader]):
|
|
105
105
|
def __init__(self) -> None:
|
|
106
|
-
super().__init__([("flags", _binary.EnumSerializer(_binary.uint64_serializer, AcquisitionFlags)), ("idx", EncodingCountersSerializer()), ("measurement_uid", _binary.uint32_serializer), ("scan_counter", _binary.OptionalSerializer(_binary.uint32_serializer)), ("
|
|
106
|
+
super().__init__([("flags", _binary.EnumSerializer(_binary.uint64_serializer, AcquisitionFlags)), ("idx", EncodingCountersSerializer()), ("measurement_uid", _binary.uint32_serializer), ("scan_counter", _binary.OptionalSerializer(_binary.uint32_serializer)), ("acquisition_time_stamp_ns", _binary.OptionalSerializer(_binary.uint64_serializer)), ("physiology_time_stamp_ns", _binary.VectorSerializer(_binary.uint64_serializer)), ("channel_order", _binary.VectorSerializer(_binary.uint32_serializer)), ("discard_pre", _binary.OptionalSerializer(_binary.uint32_serializer)), ("discard_post", _binary.OptionalSerializer(_binary.uint32_serializer)), ("center_sample", _binary.OptionalSerializer(_binary.uint32_serializer)), ("encoding_space_ref", _binary.OptionalSerializer(_binary.uint32_serializer)), ("sample_time_ns", _binary.OptionalSerializer(_binary.uint64_serializer)), ("position", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("read_dir", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("phase_dir", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("slice_dir", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("patient_table_position", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("user_int", _binary.VectorSerializer(_binary.int32_serializer)), ("user_float", _binary.VectorSerializer(_binary.float32_serializer))])
|
|
107
107
|
|
|
108
108
|
def write(self, stream: _binary.CodedOutputStream, value: AcquisitionHeader) -> None:
|
|
109
109
|
if isinstance(value, np.void):
|
|
110
110
|
self.write_numpy(stream, value)
|
|
111
111
|
return
|
|
112
|
-
self._write(stream, value.flags, value.idx, value.measurement_uid, value.scan_counter, value.
|
|
112
|
+
self._write(stream, value.flags, value.idx, value.measurement_uid, value.scan_counter, value.acquisition_time_stamp_ns, value.physiology_time_stamp_ns, value.channel_order, value.discard_pre, value.discard_post, value.center_sample, value.encoding_space_ref, value.sample_time_ns, value.position, value.read_dir, value.phase_dir, value.slice_dir, value.patient_table_position, value.user_int, value.user_float)
|
|
113
113
|
|
|
114
114
|
def write_numpy(self, stream: _binary.CodedOutputStream, value: np.void) -> None:
|
|
115
|
-
self._write(stream, value['flags'], value['idx'], value['measurement_uid'], value['scan_counter'], value['
|
|
115
|
+
self._write(stream, value['flags'], value['idx'], value['measurement_uid'], value['scan_counter'], value['acquisition_time_stamp_ns'], value['physiology_time_stamp_ns'], value['channel_order'], value['discard_pre'], value['discard_post'], value['center_sample'], value['encoding_space_ref'], value['sample_time_ns'], value['position'], value['read_dir'], value['phase_dir'], value['slice_dir'], value['patient_table_position'], value['user_int'], value['user_float'])
|
|
116
116
|
|
|
117
117
|
def read(self, stream: _binary.CodedInputStream) -> AcquisitionHeader:
|
|
118
118
|
field_values = self._read(stream)
|
|
119
|
-
return AcquisitionHeader(flags=field_values[0], idx=field_values[1], measurement_uid=field_values[2], scan_counter=field_values[3],
|
|
119
|
+
return AcquisitionHeader(flags=field_values[0], idx=field_values[1], measurement_uid=field_values[2], scan_counter=field_values[3], acquisition_time_stamp_ns=field_values[4], physiology_time_stamp_ns=field_values[5], channel_order=field_values[6], discard_pre=field_values[7], discard_post=field_values[8], center_sample=field_values[9], encoding_space_ref=field_values[10], sample_time_ns=field_values[11], position=field_values[12], read_dir=field_values[13], phase_dir=field_values[14], slice_dir=field_values[15], patient_table_position=field_values[16], user_int=field_values[17], user_float=field_values[18])
|
|
120
120
|
|
|
121
121
|
|
|
122
122
|
class AcquisitionSerializer(_binary.RecordSerializer[Acquisition]):
|
|
@@ -679,20 +679,20 @@ class HeaderSerializer(_binary.RecordSerializer[Header]):
|
|
|
679
679
|
|
|
680
680
|
class ImageHeaderSerializer(_binary.RecordSerializer[ImageHeader]):
|
|
681
681
|
def __init__(self) -> None:
|
|
682
|
-
super().__init__([("flags", _binary.EnumSerializer(_binary.uint64_serializer, ImageFlags)), ("measurement_uid", _binary.uint32_serializer), ("field_of_view", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("position", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("col_dir", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("line_dir", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("slice_dir", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("patient_table_position", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("average", _binary.OptionalSerializer(_binary.uint32_serializer)), ("slice", _binary.OptionalSerializer(_binary.uint32_serializer)), ("contrast", _binary.OptionalSerializer(_binary.uint32_serializer)), ("phase", _binary.OptionalSerializer(_binary.uint32_serializer)), ("repetition", _binary.OptionalSerializer(_binary.uint32_serializer)), ("set", _binary.OptionalSerializer(_binary.uint32_serializer)), ("
|
|
682
|
+
super().__init__([("flags", _binary.EnumSerializer(_binary.uint64_serializer, ImageFlags)), ("measurement_uid", _binary.uint32_serializer), ("field_of_view", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("position", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("col_dir", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("line_dir", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("slice_dir", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("patient_table_position", _binary.FixedNDArraySerializer(_binary.float32_serializer, (3,))), ("average", _binary.OptionalSerializer(_binary.uint32_serializer)), ("slice", _binary.OptionalSerializer(_binary.uint32_serializer)), ("contrast", _binary.OptionalSerializer(_binary.uint32_serializer)), ("phase", _binary.OptionalSerializer(_binary.uint32_serializer)), ("repetition", _binary.OptionalSerializer(_binary.uint32_serializer)), ("set", _binary.OptionalSerializer(_binary.uint32_serializer)), ("acquisition_time_stamp_ns", _binary.OptionalSerializer(_binary.uint64_serializer)), ("physiology_time_stamp_ns", _binary.VectorSerializer(_binary.uint64_serializer)), ("image_type", _binary.EnumSerializer(_binary.int32_serializer, ImageType)), ("image_index", _binary.OptionalSerializer(_binary.uint32_serializer)), ("image_series_index", _binary.OptionalSerializer(_binary.uint32_serializer)), ("user_int", _binary.VectorSerializer(_binary.int32_serializer)), ("user_float", _binary.VectorSerializer(_binary.float32_serializer))])
|
|
683
683
|
|
|
684
684
|
def write(self, stream: _binary.CodedOutputStream, value: ImageHeader) -> None:
|
|
685
685
|
if isinstance(value, np.void):
|
|
686
686
|
self.write_numpy(stream, value)
|
|
687
687
|
return
|
|
688
|
-
self._write(stream, value.flags, value.measurement_uid, value.field_of_view, value.position, value.col_dir, value.line_dir, value.slice_dir, value.patient_table_position, value.average, value.slice, value.contrast, value.phase, value.repetition, value.set, value.
|
|
688
|
+
self._write(stream, value.flags, value.measurement_uid, value.field_of_view, value.position, value.col_dir, value.line_dir, value.slice_dir, value.patient_table_position, value.average, value.slice, value.contrast, value.phase, value.repetition, value.set, value.acquisition_time_stamp_ns, value.physiology_time_stamp_ns, value.image_type, value.image_index, value.image_series_index, value.user_int, value.user_float)
|
|
689
689
|
|
|
690
690
|
def write_numpy(self, stream: _binary.CodedOutputStream, value: np.void) -> None:
|
|
691
|
-
self._write(stream, value['flags'], value['measurement_uid'], value['field_of_view'], value['position'], value['col_dir'], value['line_dir'], value['slice_dir'], value['patient_table_position'], value['average'], value['slice'], value['contrast'], value['phase'], value['repetition'], value['set'], value['
|
|
691
|
+
self._write(stream, value['flags'], value['measurement_uid'], value['field_of_view'], value['position'], value['col_dir'], value['line_dir'], value['slice_dir'], value['patient_table_position'], value['average'], value['slice'], value['contrast'], value['phase'], value['repetition'], value['set'], value['acquisition_time_stamp_ns'], value['physiology_time_stamp_ns'], value['image_type'], value['image_index'], value['image_series_index'], value['user_int'], value['user_float'])
|
|
692
692
|
|
|
693
693
|
def read(self, stream: _binary.CodedInputStream) -> ImageHeader:
|
|
694
694
|
field_values = self._read(stream)
|
|
695
|
-
return ImageHeader(flags=field_values[0], measurement_uid=field_values[1], field_of_view=field_values[2], position=field_values[3], col_dir=field_values[4], line_dir=field_values[5], slice_dir=field_values[6], patient_table_position=field_values[7], average=field_values[8], slice=field_values[9], contrast=field_values[10], phase=field_values[11], repetition=field_values[12], set=field_values[13],
|
|
695
|
+
return ImageHeader(flags=field_values[0], measurement_uid=field_values[1], field_of_view=field_values[2], position=field_values[3], col_dir=field_values[4], line_dir=field_values[5], slice_dir=field_values[6], patient_table_position=field_values[7], average=field_values[8], slice=field_values[9], contrast=field_values[10], phase=field_values[11], repetition=field_values[12], set=field_values[13], acquisition_time_stamp_ns=field_values[14], physiology_time_stamp_ns=field_values[15], image_type=field_values[16], image_index=field_values[17], image_series_index=field_values[18], user_int=field_values[19], user_float=field_values[20])
|
|
696
696
|
|
|
697
697
|
|
|
698
698
|
class ImageSerializer(typing.Generic[T, T_NP], _binary.RecordSerializer[Image[T_NP]]):
|
|
@@ -715,38 +715,38 @@ class ImageSerializer(typing.Generic[T, T_NP], _binary.RecordSerializer[Image[T_
|
|
|
715
715
|
|
|
716
716
|
class NoiseCovarianceSerializer(_binary.RecordSerializer[NoiseCovariance]):
|
|
717
717
|
def __init__(self) -> None:
|
|
718
|
-
super().__init__([("coil_labels", _binary.VectorSerializer(CoilLabelTypeSerializer())), ("receiver_noise_bandwidth", _binary.float32_serializer), ("
|
|
718
|
+
super().__init__([("coil_labels", _binary.VectorSerializer(CoilLabelTypeSerializer())), ("receiver_noise_bandwidth", _binary.float32_serializer), ("noise_dwell_time_ns", _binary.uint64_serializer), ("sample_count", _binary.size_serializer), ("matrix", _binary.NDArraySerializer(_binary.complexfloat32_serializer, 2))])
|
|
719
719
|
|
|
720
720
|
def write(self, stream: _binary.CodedOutputStream, value: NoiseCovariance) -> None:
|
|
721
721
|
if isinstance(value, np.void):
|
|
722
722
|
self.write_numpy(stream, value)
|
|
723
723
|
return
|
|
724
|
-
self._write(stream, value.coil_labels, value.receiver_noise_bandwidth, value.
|
|
724
|
+
self._write(stream, value.coil_labels, value.receiver_noise_bandwidth, value.noise_dwell_time_ns, value.sample_count, value.matrix)
|
|
725
725
|
|
|
726
726
|
def write_numpy(self, stream: _binary.CodedOutputStream, value: np.void) -> None:
|
|
727
|
-
self._write(stream, value['coil_labels'], value['receiver_noise_bandwidth'], value['
|
|
727
|
+
self._write(stream, value['coil_labels'], value['receiver_noise_bandwidth'], value['noise_dwell_time_ns'], value['sample_count'], value['matrix'])
|
|
728
728
|
|
|
729
729
|
def read(self, stream: _binary.CodedInputStream) -> NoiseCovariance:
|
|
730
730
|
field_values = self._read(stream)
|
|
731
|
-
return NoiseCovariance(coil_labels=field_values[0], receiver_noise_bandwidth=field_values[1],
|
|
731
|
+
return NoiseCovariance(coil_labels=field_values[0], receiver_noise_bandwidth=field_values[1], noise_dwell_time_ns=field_values[2], sample_count=field_values[3], matrix=field_values[4])
|
|
732
732
|
|
|
733
733
|
|
|
734
734
|
class WaveformSerializer(typing.Generic[T, T_NP], _binary.RecordSerializer[Waveform[T_NP]]):
|
|
735
735
|
def __init__(self, t_serializer: _binary.TypeSerializer[T, T_NP]) -> None:
|
|
736
|
-
super().__init__([("flags", _binary.uint64_serializer), ("measurement_uid", _binary.uint32_serializer), ("scan_counter", _binary.uint32_serializer), ("
|
|
736
|
+
super().__init__([("flags", _binary.uint64_serializer), ("measurement_uid", _binary.uint32_serializer), ("scan_counter", _binary.uint32_serializer), ("time_stamp_ns", _binary.uint64_serializer), ("sample_time_ns", _binary.uint64_serializer), ("waveform_id", _binary.uint32_serializer), ("data", _binary.NDArraySerializer(t_serializer, 2))])
|
|
737
737
|
|
|
738
738
|
def write(self, stream: _binary.CodedOutputStream, value: Waveform[T_NP]) -> None:
|
|
739
739
|
if isinstance(value, np.void):
|
|
740
740
|
self.write_numpy(stream, value)
|
|
741
741
|
return
|
|
742
|
-
self._write(stream, value.flags, value.measurement_uid, value.scan_counter, value.
|
|
742
|
+
self._write(stream, value.flags, value.measurement_uid, value.scan_counter, value.time_stamp_ns, value.sample_time_ns, value.waveform_id, value.data)
|
|
743
743
|
|
|
744
744
|
def write_numpy(self, stream: _binary.CodedOutputStream, value: np.void) -> None:
|
|
745
|
-
self._write(stream, value['flags'], value['measurement_uid'], value['scan_counter'], value['
|
|
745
|
+
self._write(stream, value['flags'], value['measurement_uid'], value['scan_counter'], value['time_stamp_ns'], value['sample_time_ns'], value['waveform_id'], value['data'])
|
|
746
746
|
|
|
747
747
|
def read(self, stream: _binary.CodedInputStream) -> Waveform[T_NP]:
|
|
748
748
|
field_values = self._read(stream)
|
|
749
|
-
return Waveform[T_NP](flags=field_values[0], measurement_uid=field_values[1], scan_counter=field_values[2],
|
|
749
|
+
return Waveform[T_NP](flags=field_values[0], measurement_uid=field_values[1], scan_counter=field_values[2], time_stamp_ns=field_values[3], sample_time_ns=field_values[4], waveform_id=field_values[5], data=field_values[6])
|
|
750
750
|
|
|
751
751
|
|
|
752
752
|
class AcquisitionBucketSerializer(_binary.RecordSerializer[AcquisitionBucket]):
|
|
@@ -170,14 +170,14 @@ class AcquisitionHeaderConverter(_ndjson.JsonConverter[AcquisitionHeader, np.voi
|
|
|
170
170
|
self._idx_converter = EncodingCountersConverter()
|
|
171
171
|
self._measurement_uid_converter = _ndjson.uint32_converter
|
|
172
172
|
self._scan_counter_converter = _ndjson.OptionalConverter(_ndjson.uint32_converter)
|
|
173
|
-
self.
|
|
174
|
-
self.
|
|
173
|
+
self._acquisition_time_stamp_ns_converter = _ndjson.OptionalConverter(_ndjson.uint64_converter)
|
|
174
|
+
self._physiology_time_stamp_ns_converter = _ndjson.VectorConverter(_ndjson.uint64_converter)
|
|
175
175
|
self._channel_order_converter = _ndjson.VectorConverter(_ndjson.uint32_converter)
|
|
176
176
|
self._discard_pre_converter = _ndjson.OptionalConverter(_ndjson.uint32_converter)
|
|
177
177
|
self._discard_post_converter = _ndjson.OptionalConverter(_ndjson.uint32_converter)
|
|
178
178
|
self._center_sample_converter = _ndjson.OptionalConverter(_ndjson.uint32_converter)
|
|
179
179
|
self._encoding_space_ref_converter = _ndjson.OptionalConverter(_ndjson.uint32_converter)
|
|
180
|
-
self.
|
|
180
|
+
self._sample_time_ns_converter = _ndjson.OptionalConverter(_ndjson.uint64_converter)
|
|
181
181
|
self._position_converter = _ndjson.FixedNDArrayConverter(_ndjson.float32_converter, (3,))
|
|
182
182
|
self._read_dir_converter = _ndjson.FixedNDArrayConverter(_ndjson.float32_converter, (3,))
|
|
183
183
|
self._phase_dir_converter = _ndjson.FixedNDArrayConverter(_ndjson.float32_converter, (3,))
|
|
@@ -190,14 +190,14 @@ class AcquisitionHeaderConverter(_ndjson.JsonConverter[AcquisitionHeader, np.voi
|
|
|
190
190
|
("idx", self._idx_converter.overall_dtype()),
|
|
191
191
|
("measurement_uid", self._measurement_uid_converter.overall_dtype()),
|
|
192
192
|
("scan_counter", self._scan_counter_converter.overall_dtype()),
|
|
193
|
-
("
|
|
194
|
-
("
|
|
193
|
+
("acquisition_time_stamp_ns", self._acquisition_time_stamp_ns_converter.overall_dtype()),
|
|
194
|
+
("physiology_time_stamp_ns", self._physiology_time_stamp_ns_converter.overall_dtype()),
|
|
195
195
|
("channel_order", self._channel_order_converter.overall_dtype()),
|
|
196
196
|
("discard_pre", self._discard_pre_converter.overall_dtype()),
|
|
197
197
|
("discard_post", self._discard_post_converter.overall_dtype()),
|
|
198
198
|
("center_sample", self._center_sample_converter.overall_dtype()),
|
|
199
199
|
("encoding_space_ref", self._encoding_space_ref_converter.overall_dtype()),
|
|
200
|
-
("
|
|
200
|
+
("sample_time_ns", self._sample_time_ns_converter.overall_dtype()),
|
|
201
201
|
("position", self._position_converter.overall_dtype()),
|
|
202
202
|
("read_dir", self._read_dir_converter.overall_dtype()),
|
|
203
203
|
("phase_dir", self._phase_dir_converter.overall_dtype()),
|
|
@@ -217,9 +217,9 @@ class AcquisitionHeaderConverter(_ndjson.JsonConverter[AcquisitionHeader, np.voi
|
|
|
217
217
|
json_object["measurementUid"] = self._measurement_uid_converter.to_json(value.measurement_uid)
|
|
218
218
|
if value.scan_counter is not None:
|
|
219
219
|
json_object["scanCounter"] = self._scan_counter_converter.to_json(value.scan_counter)
|
|
220
|
-
if value.
|
|
221
|
-
json_object["
|
|
222
|
-
json_object["
|
|
220
|
+
if value.acquisition_time_stamp_ns is not None:
|
|
221
|
+
json_object["acquisitionTimeStampNs"] = self._acquisition_time_stamp_ns_converter.to_json(value.acquisition_time_stamp_ns)
|
|
222
|
+
json_object["physiologyTimeStampNs"] = self._physiology_time_stamp_ns_converter.to_json(value.physiology_time_stamp_ns)
|
|
223
223
|
json_object["channelOrder"] = self._channel_order_converter.to_json(value.channel_order)
|
|
224
224
|
if value.discard_pre is not None:
|
|
225
225
|
json_object["discardPre"] = self._discard_pre_converter.to_json(value.discard_pre)
|
|
@@ -229,8 +229,8 @@ class AcquisitionHeaderConverter(_ndjson.JsonConverter[AcquisitionHeader, np.voi
|
|
|
229
229
|
json_object["centerSample"] = self._center_sample_converter.to_json(value.center_sample)
|
|
230
230
|
if value.encoding_space_ref is not None:
|
|
231
231
|
json_object["encodingSpaceRef"] = self._encoding_space_ref_converter.to_json(value.encoding_space_ref)
|
|
232
|
-
if value.
|
|
233
|
-
json_object["
|
|
232
|
+
if value.sample_time_ns is not None:
|
|
233
|
+
json_object["sampleTimeNs"] = self._sample_time_ns_converter.to_json(value.sample_time_ns)
|
|
234
234
|
json_object["position"] = self._position_converter.to_json(value.position)
|
|
235
235
|
json_object["readDir"] = self._read_dir_converter.to_json(value.read_dir)
|
|
236
236
|
json_object["phaseDir"] = self._phase_dir_converter.to_json(value.phase_dir)
|
|
@@ -250,9 +250,9 @@ class AcquisitionHeaderConverter(_ndjson.JsonConverter[AcquisitionHeader, np.voi
|
|
|
250
250
|
json_object["measurementUid"] = self._measurement_uid_converter.numpy_to_json(value["measurement_uid"])
|
|
251
251
|
if (field_val := value["scan_counter"]) is not None:
|
|
252
252
|
json_object["scanCounter"] = self._scan_counter_converter.numpy_to_json(field_val)
|
|
253
|
-
if (field_val := value["
|
|
254
|
-
json_object["
|
|
255
|
-
json_object["
|
|
253
|
+
if (field_val := value["acquisition_time_stamp_ns"]) is not None:
|
|
254
|
+
json_object["acquisitionTimeStampNs"] = self._acquisition_time_stamp_ns_converter.numpy_to_json(field_val)
|
|
255
|
+
json_object["physiologyTimeStampNs"] = self._physiology_time_stamp_ns_converter.numpy_to_json(value["physiology_time_stamp_ns"])
|
|
256
256
|
json_object["channelOrder"] = self._channel_order_converter.numpy_to_json(value["channel_order"])
|
|
257
257
|
if (field_val := value["discard_pre"]) is not None:
|
|
258
258
|
json_object["discardPre"] = self._discard_pre_converter.numpy_to_json(field_val)
|
|
@@ -262,8 +262,8 @@ class AcquisitionHeaderConverter(_ndjson.JsonConverter[AcquisitionHeader, np.voi
|
|
|
262
262
|
json_object["centerSample"] = self._center_sample_converter.numpy_to_json(field_val)
|
|
263
263
|
if (field_val := value["encoding_space_ref"]) is not None:
|
|
264
264
|
json_object["encodingSpaceRef"] = self._encoding_space_ref_converter.numpy_to_json(field_val)
|
|
265
|
-
if (field_val := value["
|
|
266
|
-
json_object["
|
|
265
|
+
if (field_val := value["sample_time_ns"]) is not None:
|
|
266
|
+
json_object["sampleTimeNs"] = self._sample_time_ns_converter.numpy_to_json(field_val)
|
|
267
267
|
json_object["position"] = self._position_converter.numpy_to_json(value["position"])
|
|
268
268
|
json_object["readDir"] = self._read_dir_converter.numpy_to_json(value["read_dir"])
|
|
269
269
|
json_object["phaseDir"] = self._phase_dir_converter.numpy_to_json(value["phase_dir"])
|
|
@@ -281,14 +281,14 @@ class AcquisitionHeaderConverter(_ndjson.JsonConverter[AcquisitionHeader, np.voi
|
|
|
281
281
|
idx=self._idx_converter.from_json(json_object["idx"],),
|
|
282
282
|
measurement_uid=self._measurement_uid_converter.from_json(json_object["measurementUid"],),
|
|
283
283
|
scan_counter=self._scan_counter_converter.from_json(json_object.get("scanCounter")),
|
|
284
|
-
|
|
285
|
-
|
|
284
|
+
acquisition_time_stamp_ns=self._acquisition_time_stamp_ns_converter.from_json(json_object.get("acquisitionTimeStampNs")),
|
|
285
|
+
physiology_time_stamp_ns=self._physiology_time_stamp_ns_converter.from_json(json_object["physiologyTimeStampNs"],),
|
|
286
286
|
channel_order=self._channel_order_converter.from_json(json_object["channelOrder"],),
|
|
287
287
|
discard_pre=self._discard_pre_converter.from_json(json_object.get("discardPre")),
|
|
288
288
|
discard_post=self._discard_post_converter.from_json(json_object.get("discardPost")),
|
|
289
289
|
center_sample=self._center_sample_converter.from_json(json_object.get("centerSample")),
|
|
290
290
|
encoding_space_ref=self._encoding_space_ref_converter.from_json(json_object.get("encodingSpaceRef")),
|
|
291
|
-
|
|
291
|
+
sample_time_ns=self._sample_time_ns_converter.from_json(json_object.get("sampleTimeNs")),
|
|
292
292
|
position=self._position_converter.from_json(json_object["position"],),
|
|
293
293
|
read_dir=self._read_dir_converter.from_json(json_object["readDir"],),
|
|
294
294
|
phase_dir=self._phase_dir_converter.from_json(json_object["phaseDir"],),
|
|
@@ -306,14 +306,14 @@ class AcquisitionHeaderConverter(_ndjson.JsonConverter[AcquisitionHeader, np.voi
|
|
|
306
306
|
self._idx_converter.from_json_to_numpy(json_object["idx"]),
|
|
307
307
|
self._measurement_uid_converter.from_json_to_numpy(json_object["measurementUid"]),
|
|
308
308
|
self._scan_counter_converter.from_json_to_numpy(json_object.get("scanCounter")),
|
|
309
|
-
self.
|
|
310
|
-
self.
|
|
309
|
+
self._acquisition_time_stamp_ns_converter.from_json_to_numpy(json_object.get("acquisitionTimeStampNs")),
|
|
310
|
+
self._physiology_time_stamp_ns_converter.from_json_to_numpy(json_object["physiologyTimeStampNs"]),
|
|
311
311
|
self._channel_order_converter.from_json_to_numpy(json_object["channelOrder"]),
|
|
312
312
|
self._discard_pre_converter.from_json_to_numpy(json_object.get("discardPre")),
|
|
313
313
|
self._discard_post_converter.from_json_to_numpy(json_object.get("discardPost")),
|
|
314
314
|
self._center_sample_converter.from_json_to_numpy(json_object.get("centerSample")),
|
|
315
315
|
self._encoding_space_ref_converter.from_json_to_numpy(json_object.get("encodingSpaceRef")),
|
|
316
|
-
self.
|
|
316
|
+
self._sample_time_ns_converter.from_json_to_numpy(json_object.get("sampleTimeNs")),
|
|
317
317
|
self._position_converter.from_json_to_numpy(json_object["position"]),
|
|
318
318
|
self._read_dir_converter.from_json_to_numpy(json_object["readDir"]),
|
|
319
319
|
self._phase_dir_converter.from_json_to_numpy(json_object["phaseDir"]),
|
|
@@ -2425,8 +2425,8 @@ class ImageHeaderConverter(_ndjson.JsonConverter[ImageHeader, np.void]):
|
|
|
2425
2425
|
self._phase_converter = _ndjson.OptionalConverter(_ndjson.uint32_converter)
|
|
2426
2426
|
self._repetition_converter = _ndjson.OptionalConverter(_ndjson.uint32_converter)
|
|
2427
2427
|
self._set_converter = _ndjson.OptionalConverter(_ndjson.uint32_converter)
|
|
2428
|
-
self.
|
|
2429
|
-
self.
|
|
2428
|
+
self._acquisition_time_stamp_ns_converter = _ndjson.OptionalConverter(_ndjson.uint64_converter)
|
|
2429
|
+
self._physiology_time_stamp_ns_converter = _ndjson.VectorConverter(_ndjson.uint64_converter)
|
|
2430
2430
|
self._image_type_converter = _ndjson.EnumConverter(ImageType, np.int32, image_type_name_to_value_map, image_type_value_to_name_map)
|
|
2431
2431
|
self._image_index_converter = _ndjson.OptionalConverter(_ndjson.uint32_converter)
|
|
2432
2432
|
self._image_series_index_converter = _ndjson.OptionalConverter(_ndjson.uint32_converter)
|
|
@@ -2447,8 +2447,8 @@ class ImageHeaderConverter(_ndjson.JsonConverter[ImageHeader, np.void]):
|
|
|
2447
2447
|
("phase", self._phase_converter.overall_dtype()),
|
|
2448
2448
|
("repetition", self._repetition_converter.overall_dtype()),
|
|
2449
2449
|
("set", self._set_converter.overall_dtype()),
|
|
2450
|
-
("
|
|
2451
|
-
("
|
|
2450
|
+
("acquisition_time_stamp_ns", self._acquisition_time_stamp_ns_converter.overall_dtype()),
|
|
2451
|
+
("physiology_time_stamp_ns", self._physiology_time_stamp_ns_converter.overall_dtype()),
|
|
2452
2452
|
("image_type", self._image_type_converter.overall_dtype()),
|
|
2453
2453
|
("image_index", self._image_index_converter.overall_dtype()),
|
|
2454
2454
|
("image_series_index", self._image_series_index_converter.overall_dtype()),
|
|
@@ -2481,9 +2481,9 @@ class ImageHeaderConverter(_ndjson.JsonConverter[ImageHeader, np.void]):
|
|
|
2481
2481
|
json_object["repetition"] = self._repetition_converter.to_json(value.repetition)
|
|
2482
2482
|
if value.set is not None:
|
|
2483
2483
|
json_object["set"] = self._set_converter.to_json(value.set)
|
|
2484
|
-
if value.
|
|
2485
|
-
json_object["
|
|
2486
|
-
json_object["
|
|
2484
|
+
if value.acquisition_time_stamp_ns is not None:
|
|
2485
|
+
json_object["acquisitionTimeStampNs"] = self._acquisition_time_stamp_ns_converter.to_json(value.acquisition_time_stamp_ns)
|
|
2486
|
+
json_object["physiologyTimeStampNs"] = self._physiology_time_stamp_ns_converter.to_json(value.physiology_time_stamp_ns)
|
|
2487
2487
|
json_object["imageType"] = self._image_type_converter.to_json(value.image_type)
|
|
2488
2488
|
if value.image_index is not None:
|
|
2489
2489
|
json_object["imageIndex"] = self._image_index_converter.to_json(value.image_index)
|
|
@@ -2518,9 +2518,9 @@ class ImageHeaderConverter(_ndjson.JsonConverter[ImageHeader, np.void]):
|
|
|
2518
2518
|
json_object["repetition"] = self._repetition_converter.numpy_to_json(field_val)
|
|
2519
2519
|
if (field_val := value["set"]) is not None:
|
|
2520
2520
|
json_object["set"] = self._set_converter.numpy_to_json(field_val)
|
|
2521
|
-
if (field_val := value["
|
|
2522
|
-
json_object["
|
|
2523
|
-
json_object["
|
|
2521
|
+
if (field_val := value["acquisition_time_stamp_ns"]) is not None:
|
|
2522
|
+
json_object["acquisitionTimeStampNs"] = self._acquisition_time_stamp_ns_converter.numpy_to_json(field_val)
|
|
2523
|
+
json_object["physiologyTimeStampNs"] = self._physiology_time_stamp_ns_converter.numpy_to_json(value["physiology_time_stamp_ns"])
|
|
2524
2524
|
json_object["imageType"] = self._image_type_converter.numpy_to_json(value["image_type"])
|
|
2525
2525
|
if (field_val := value["image_index"]) is not None:
|
|
2526
2526
|
json_object["imageIndex"] = self._image_index_converter.numpy_to_json(field_val)
|
|
@@ -2548,8 +2548,8 @@ class ImageHeaderConverter(_ndjson.JsonConverter[ImageHeader, np.void]):
|
|
|
2548
2548
|
phase=self._phase_converter.from_json(json_object.get("phase")),
|
|
2549
2549
|
repetition=self._repetition_converter.from_json(json_object.get("repetition")),
|
|
2550
2550
|
set=self._set_converter.from_json(json_object.get("set")),
|
|
2551
|
-
|
|
2552
|
-
|
|
2551
|
+
acquisition_time_stamp_ns=self._acquisition_time_stamp_ns_converter.from_json(json_object.get("acquisitionTimeStampNs")),
|
|
2552
|
+
physiology_time_stamp_ns=self._physiology_time_stamp_ns_converter.from_json(json_object["physiologyTimeStampNs"],),
|
|
2553
2553
|
image_type=self._image_type_converter.from_json(json_object["imageType"],),
|
|
2554
2554
|
image_index=self._image_index_converter.from_json(json_object.get("imageIndex")),
|
|
2555
2555
|
image_series_index=self._image_series_index_converter.from_json(json_object.get("imageSeriesIndex")),
|
|
@@ -2575,8 +2575,8 @@ class ImageHeaderConverter(_ndjson.JsonConverter[ImageHeader, np.void]):
|
|
|
2575
2575
|
self._phase_converter.from_json_to_numpy(json_object.get("phase")),
|
|
2576
2576
|
self._repetition_converter.from_json_to_numpy(json_object.get("repetition")),
|
|
2577
2577
|
self._set_converter.from_json_to_numpy(json_object.get("set")),
|
|
2578
|
-
self.
|
|
2579
|
-
self.
|
|
2578
|
+
self._acquisition_time_stamp_ns_converter.from_json_to_numpy(json_object.get("acquisitionTimeStampNs")),
|
|
2579
|
+
self._physiology_time_stamp_ns_converter.from_json_to_numpy(json_object["physiologyTimeStampNs"]),
|
|
2580
2580
|
self._image_type_converter.from_json_to_numpy(json_object["imageType"]),
|
|
2581
2581
|
self._image_index_converter.from_json_to_numpy(json_object.get("imageIndex")),
|
|
2582
2582
|
self._image_series_index_converter.from_json_to_numpy(json_object.get("imageSeriesIndex")),
|
|
@@ -2639,13 +2639,13 @@ class NoiseCovarianceConverter(_ndjson.JsonConverter[NoiseCovariance, np.void]):
|
|
|
2639
2639
|
def __init__(self) -> None:
|
|
2640
2640
|
self._coil_labels_converter = _ndjson.VectorConverter(CoilLabelTypeConverter())
|
|
2641
2641
|
self._receiver_noise_bandwidth_converter = _ndjson.float32_converter
|
|
2642
|
-
self.
|
|
2642
|
+
self._noise_dwell_time_ns_converter = _ndjson.uint64_converter
|
|
2643
2643
|
self._sample_count_converter = _ndjson.size_converter
|
|
2644
2644
|
self._matrix_converter = _ndjson.NDArrayConverter(_ndjson.complexfloat32_converter, 2)
|
|
2645
2645
|
super().__init__(np.dtype([
|
|
2646
2646
|
("coil_labels", self._coil_labels_converter.overall_dtype()),
|
|
2647
2647
|
("receiver_noise_bandwidth", self._receiver_noise_bandwidth_converter.overall_dtype()),
|
|
2648
|
-
("
|
|
2648
|
+
("noise_dwell_time_ns", self._noise_dwell_time_ns_converter.overall_dtype()),
|
|
2649
2649
|
("sample_count", self._sample_count_converter.overall_dtype()),
|
|
2650
2650
|
("matrix", self._matrix_converter.overall_dtype()),
|
|
2651
2651
|
]))
|
|
@@ -2657,7 +2657,7 @@ class NoiseCovarianceConverter(_ndjson.JsonConverter[NoiseCovariance, np.void]):
|
|
|
2657
2657
|
|
|
2658
2658
|
json_object["coilLabels"] = self._coil_labels_converter.to_json(value.coil_labels)
|
|
2659
2659
|
json_object["receiverNoiseBandwidth"] = self._receiver_noise_bandwidth_converter.to_json(value.receiver_noise_bandwidth)
|
|
2660
|
-
json_object["
|
|
2660
|
+
json_object["noiseDwellTimeNs"] = self._noise_dwell_time_ns_converter.to_json(value.noise_dwell_time_ns)
|
|
2661
2661
|
json_object["sampleCount"] = self._sample_count_converter.to_json(value.sample_count)
|
|
2662
2662
|
json_object["matrix"] = self._matrix_converter.to_json(value.matrix)
|
|
2663
2663
|
return json_object
|
|
@@ -2669,7 +2669,7 @@ class NoiseCovarianceConverter(_ndjson.JsonConverter[NoiseCovariance, np.void]):
|
|
|
2669
2669
|
|
|
2670
2670
|
json_object["coilLabels"] = self._coil_labels_converter.numpy_to_json(value["coil_labels"])
|
|
2671
2671
|
json_object["receiverNoiseBandwidth"] = self._receiver_noise_bandwidth_converter.numpy_to_json(value["receiver_noise_bandwidth"])
|
|
2672
|
-
json_object["
|
|
2672
|
+
json_object["noiseDwellTimeNs"] = self._noise_dwell_time_ns_converter.numpy_to_json(value["noise_dwell_time_ns"])
|
|
2673
2673
|
json_object["sampleCount"] = self._sample_count_converter.numpy_to_json(value["sample_count"])
|
|
2674
2674
|
json_object["matrix"] = self._matrix_converter.numpy_to_json(value["matrix"])
|
|
2675
2675
|
return json_object
|
|
@@ -2680,7 +2680,7 @@ class NoiseCovarianceConverter(_ndjson.JsonConverter[NoiseCovariance, np.void]):
|
|
|
2680
2680
|
return NoiseCovariance(
|
|
2681
2681
|
coil_labels=self._coil_labels_converter.from_json(json_object["coilLabels"],),
|
|
2682
2682
|
receiver_noise_bandwidth=self._receiver_noise_bandwidth_converter.from_json(json_object["receiverNoiseBandwidth"],),
|
|
2683
|
-
|
|
2683
|
+
noise_dwell_time_ns=self._noise_dwell_time_ns_converter.from_json(json_object["noiseDwellTimeNs"],),
|
|
2684
2684
|
sample_count=self._sample_count_converter.from_json(json_object["sampleCount"],),
|
|
2685
2685
|
matrix=self._matrix_converter.from_json(json_object["matrix"],),
|
|
2686
2686
|
)
|
|
@@ -2691,7 +2691,7 @@ class NoiseCovarianceConverter(_ndjson.JsonConverter[NoiseCovariance, np.void]):
|
|
|
2691
2691
|
return (
|
|
2692
2692
|
self._coil_labels_converter.from_json_to_numpy(json_object["coilLabels"]),
|
|
2693
2693
|
self._receiver_noise_bandwidth_converter.from_json_to_numpy(json_object["receiverNoiseBandwidth"]),
|
|
2694
|
-
self.
|
|
2694
|
+
self._noise_dwell_time_ns_converter.from_json_to_numpy(json_object["noiseDwellTimeNs"]),
|
|
2695
2695
|
self._sample_count_converter.from_json_to_numpy(json_object["sampleCount"]),
|
|
2696
2696
|
self._matrix_converter.from_json_to_numpy(json_object["matrix"]),
|
|
2697
2697
|
) # type:ignore
|
|
@@ -2702,16 +2702,16 @@ class WaveformConverter(typing.Generic[T, T_NP], _ndjson.JsonConverter[Waveform[
|
|
|
2702
2702
|
self._flags_converter = _ndjson.uint64_converter
|
|
2703
2703
|
self._measurement_uid_converter = _ndjson.uint32_converter
|
|
2704
2704
|
self._scan_counter_converter = _ndjson.uint32_converter
|
|
2705
|
-
self.
|
|
2706
|
-
self.
|
|
2705
|
+
self._time_stamp_ns_converter = _ndjson.uint64_converter
|
|
2706
|
+
self._sample_time_ns_converter = _ndjson.uint64_converter
|
|
2707
2707
|
self._waveform_id_converter = _ndjson.uint32_converter
|
|
2708
2708
|
self._data_converter = _ndjson.NDArrayConverter(t_converter, 2)
|
|
2709
2709
|
super().__init__(np.dtype([
|
|
2710
2710
|
("flags", self._flags_converter.overall_dtype()),
|
|
2711
2711
|
("measurement_uid", self._measurement_uid_converter.overall_dtype()),
|
|
2712
2712
|
("scan_counter", self._scan_counter_converter.overall_dtype()),
|
|
2713
|
-
("
|
|
2714
|
-
("
|
|
2713
|
+
("time_stamp_ns", self._time_stamp_ns_converter.overall_dtype()),
|
|
2714
|
+
("sample_time_ns", self._sample_time_ns_converter.overall_dtype()),
|
|
2715
2715
|
("waveform_id", self._waveform_id_converter.overall_dtype()),
|
|
2716
2716
|
("data", self._data_converter.overall_dtype()),
|
|
2717
2717
|
]))
|
|
@@ -2724,8 +2724,8 @@ class WaveformConverter(typing.Generic[T, T_NP], _ndjson.JsonConverter[Waveform[
|
|
|
2724
2724
|
json_object["flags"] = self._flags_converter.to_json(value.flags)
|
|
2725
2725
|
json_object["measurementUid"] = self._measurement_uid_converter.to_json(value.measurement_uid)
|
|
2726
2726
|
json_object["scanCounter"] = self._scan_counter_converter.to_json(value.scan_counter)
|
|
2727
|
-
json_object["
|
|
2728
|
-
json_object["
|
|
2727
|
+
json_object["timeStampNs"] = self._time_stamp_ns_converter.to_json(value.time_stamp_ns)
|
|
2728
|
+
json_object["sampleTimeNs"] = self._sample_time_ns_converter.to_json(value.sample_time_ns)
|
|
2729
2729
|
json_object["waveformId"] = self._waveform_id_converter.to_json(value.waveform_id)
|
|
2730
2730
|
json_object["data"] = self._data_converter.to_json(value.data)
|
|
2731
2731
|
return json_object
|
|
@@ -2738,8 +2738,8 @@ class WaveformConverter(typing.Generic[T, T_NP], _ndjson.JsonConverter[Waveform[
|
|
|
2738
2738
|
json_object["flags"] = self._flags_converter.numpy_to_json(value["flags"])
|
|
2739
2739
|
json_object["measurementUid"] = self._measurement_uid_converter.numpy_to_json(value["measurement_uid"])
|
|
2740
2740
|
json_object["scanCounter"] = self._scan_counter_converter.numpy_to_json(value["scan_counter"])
|
|
2741
|
-
json_object["
|
|
2742
|
-
json_object["
|
|
2741
|
+
json_object["timeStampNs"] = self._time_stamp_ns_converter.numpy_to_json(value["time_stamp_ns"])
|
|
2742
|
+
json_object["sampleTimeNs"] = self._sample_time_ns_converter.numpy_to_json(value["sample_time_ns"])
|
|
2743
2743
|
json_object["waveformId"] = self._waveform_id_converter.numpy_to_json(value["waveform_id"])
|
|
2744
2744
|
json_object["data"] = self._data_converter.numpy_to_json(value["data"])
|
|
2745
2745
|
return json_object
|
|
@@ -2751,8 +2751,8 @@ class WaveformConverter(typing.Generic[T, T_NP], _ndjson.JsonConverter[Waveform[
|
|
|
2751
2751
|
flags=self._flags_converter.from_json(json_object["flags"],),
|
|
2752
2752
|
measurement_uid=self._measurement_uid_converter.from_json(json_object["measurementUid"],),
|
|
2753
2753
|
scan_counter=self._scan_counter_converter.from_json(json_object["scanCounter"],),
|
|
2754
|
-
|
|
2755
|
-
|
|
2754
|
+
time_stamp_ns=self._time_stamp_ns_converter.from_json(json_object["timeStampNs"],),
|
|
2755
|
+
sample_time_ns=self._sample_time_ns_converter.from_json(json_object["sampleTimeNs"],),
|
|
2756
2756
|
waveform_id=self._waveform_id_converter.from_json(json_object["waveformId"],),
|
|
2757
2757
|
data=self._data_converter.from_json(json_object["data"],),
|
|
2758
2758
|
)
|
|
@@ -2764,8 +2764,8 @@ class WaveformConverter(typing.Generic[T, T_NP], _ndjson.JsonConverter[Waveform[
|
|
|
2764
2764
|
self._flags_converter.from_json_to_numpy(json_object["flags"]),
|
|
2765
2765
|
self._measurement_uid_converter.from_json_to_numpy(json_object["measurementUid"]),
|
|
2766
2766
|
self._scan_counter_converter.from_json_to_numpy(json_object["scanCounter"]),
|
|
2767
|
-
self.
|
|
2768
|
-
self.
|
|
2767
|
+
self._time_stamp_ns_converter.from_json_to_numpy(json_object["timeStampNs"]),
|
|
2768
|
+
self._sample_time_ns_converter.from_json_to_numpy(json_object["sampleTimeNs"]),
|
|
2769
2769
|
self._waveform_id_converter.from_json_to_numpy(json_object["waveformId"]),
|
|
2770
2770
|
self._data_converter.from_json_to_numpy(json_object["data"]),
|
|
2771
2771
|
) # type:ignore
|
|
@@ -3179,8 +3179,8 @@ class NDJsonMrdReader(_ndjson.NDJsonProtocolReader, MrdReaderBase):
|
|
|
3179
3179
|
"""
|
|
3180
3180
|
|
|
3181
3181
|
|
|
3182
|
-
def __init__(self, stream: typing.Union[io.BufferedReader, typing.TextIO, str]) -> None:
|
|
3183
|
-
MrdReaderBase.__init__(self)
|
|
3182
|
+
def __init__(self, stream: typing.Union[io.BufferedReader, typing.TextIO, str], skip_completed_check: bool = False) -> None:
|
|
3183
|
+
MrdReaderBase.__init__(self, skip_completed_check)
|
|
3184
3184
|
_ndjson.NDJsonProtocolReader.__init__(self, stream, MrdReaderBase.schema)
|
|
3185
3185
|
|
|
3186
3186
|
def _read_header(self) -> typing.Optional[Header]:
|
|
@@ -3217,8 +3217,8 @@ class NDJsonMrdNoiseCovarianceReader(_ndjson.NDJsonProtocolReader, MrdNoiseCovar
|
|
|
3217
3217
|
"""
|
|
3218
3218
|
|
|
3219
3219
|
|
|
3220
|
-
def __init__(self, stream: typing.Union[io.BufferedReader, typing.TextIO, str]) -> None:
|
|
3221
|
-
MrdNoiseCovarianceReaderBase.__init__(self)
|
|
3220
|
+
def __init__(self, stream: typing.Union[io.BufferedReader, typing.TextIO, str], skip_completed_check: bool = False) -> None:
|
|
3221
|
+
MrdNoiseCovarianceReaderBase.__init__(self, skip_completed_check)
|
|
3222
3222
|
_ndjson.NDJsonProtocolReader.__init__(self, stream, MrdNoiseCovarianceReaderBase.schema)
|
|
3223
3223
|
|
|
3224
3224
|
def _read_noise_covariance(self) -> NoiseCovariance:
|