Source code for pytomography.io.PET.prd.ndjson
# This file was generated by the "yardl" tool. DO NOT EDIT.
# pyright: reportUnusedClass=false
# pyright: reportUnusedImport=false
# pyright: reportUnknownArgumentType=false
# pyright: reportUnknownMemberType=false
# pyright: reportUnknownVariableType=false
import collections.abc
import io
import typing
import numpy as np
import numpy.typing as npt
from .types import *
from .protocols import *
from . import _ndjson
from . import yardl_types as yardl
[docs]class _CoincidenceEventConverter(_ndjson.JsonConverter[CoincidenceEvent, np.void]):
def __init__(self) -> None:
self._detector_1_id_converter = _ndjson.uint32_converter
self._detector_2_id_converter = _ndjson.uint32_converter
self._tof_idx_converter = _ndjson.uint32_converter
self._energy_1_idx_converter = _ndjson.uint32_converter
self._energy_2_idx_converter = _ndjson.uint32_converter
super().__init__(np.dtype([
("detector_1_id", self._detector_1_id_converter.overall_dtype()),
("detector_2_id", self._detector_2_id_converter.overall_dtype()),
("tof_idx", self._tof_idx_converter.overall_dtype()),
("energy_1_idx", self._energy_1_idx_converter.overall_dtype()),
("energy_2_idx", self._energy_2_idx_converter.overall_dtype()),
]))
[docs] def to_json(self, value: CoincidenceEvent) -> object:
if not isinstance(value, CoincidenceEvent): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'CoincidenceEvent' instance")
json_object = {}
json_object["detector1Id"] = self._detector_1_id_converter.to_json(value.detector_1_id)
json_object["detector2Id"] = self._detector_2_id_converter.to_json(value.detector_2_id)
json_object["tofIdx"] = self._tof_idx_converter.to_json(value.tof_idx)
json_object["energy1Idx"] = self._energy_1_idx_converter.to_json(value.energy_1_idx)
json_object["energy2Idx"] = self._energy_2_idx_converter.to_json(value.energy_2_idx)
return json_object
[docs] def numpy_to_json(self, value: np.void) -> object:
if not isinstance(value, np.void): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'np.void' instance")
json_object = {}
json_object["detector1Id"] = self._detector_1_id_converter.numpy_to_json(value["detector_1_id"])
json_object["detector2Id"] = self._detector_2_id_converter.numpy_to_json(value["detector_2_id"])
json_object["tofIdx"] = self._tof_idx_converter.numpy_to_json(value["tof_idx"])
json_object["energy1Idx"] = self._energy_1_idx_converter.numpy_to_json(value["energy_1_idx"])
json_object["energy2Idx"] = self._energy_2_idx_converter.numpy_to_json(value["energy_2_idx"])
return json_object
[docs] def from_json(self, json_object: object) -> CoincidenceEvent:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return CoincidenceEvent(
detector_1_id=self._detector_1_id_converter.from_json(json_object["detector1Id"],),
detector_2_id=self._detector_2_id_converter.from_json(json_object["detector2Id"],),
tof_idx=self._tof_idx_converter.from_json(json_object["tofIdx"],),
energy_1_idx=self._energy_1_idx_converter.from_json(json_object["energy1Idx"],),
energy_2_idx=self._energy_2_idx_converter.from_json(json_object["energy2Idx"],),
)
[docs] def from_json_to_numpy(self, json_object: object) -> np.void:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return (
self._detector_1_id_converter.from_json_to_numpy(json_object["detector1Id"]),
self._detector_2_id_converter.from_json_to_numpy(json_object["detector2Id"]),
self._tof_idx_converter.from_json_to_numpy(json_object["tofIdx"]),
self._energy_1_idx_converter.from_json_to_numpy(json_object["energy1Idx"]),
self._energy_2_idx_converter.from_json_to_numpy(json_object["energy2Idx"]),
) # type:ignore
[docs]class _SubjectConverter(_ndjson.JsonConverter[Subject, np.void]):
def __init__(self) -> None:
self._name_converter = _ndjson.OptionalConverter(_ndjson.string_converter)
self._id_converter = _ndjson.string_converter
super().__init__(np.dtype([
("name", self._name_converter.overall_dtype()),
("id", self._id_converter.overall_dtype()),
]))
[docs] def to_json(self, value: Subject) -> object:
if not isinstance(value, Subject): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'Subject' instance")
json_object = {}
if value.name is not None:
json_object["name"] = self._name_converter.to_json(value.name)
json_object["id"] = self._id_converter.to_json(value.id)
return json_object
[docs] def numpy_to_json(self, value: np.void) -> object:
if not isinstance(value, np.void): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'np.void' instance")
json_object = {}
if (field_val := value["name"]) is not None:
json_object["name"] = self._name_converter.numpy_to_json(field_val)
json_object["id"] = self._id_converter.numpy_to_json(value["id"])
return json_object
[docs] def from_json(self, json_object: object) -> Subject:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return Subject(
name=self._name_converter.from_json(json_object.get("name")),
id=self._id_converter.from_json(json_object["id"],),
)
[docs] def from_json_to_numpy(self, json_object: object) -> np.void:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return (
self._name_converter.from_json_to_numpy(json_object.get("name")),
self._id_converter.from_json_to_numpy(json_object["id"]),
) # type:ignore
[docs]class _InstitutionConverter(_ndjson.JsonConverter[Institution, np.void]):
def __init__(self) -> None:
self._name_converter = _ndjson.string_converter
self._address_converter = _ndjson.string_converter
super().__init__(np.dtype([
("name", self._name_converter.overall_dtype()),
("address", self._address_converter.overall_dtype()),
]))
[docs] def to_json(self, value: Institution) -> object:
if not isinstance(value, Institution): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'Institution' instance")
json_object = {}
json_object["name"] = self._name_converter.to_json(value.name)
json_object["address"] = self._address_converter.to_json(value.address)
return json_object
[docs] def numpy_to_json(self, value: np.void) -> object:
if not isinstance(value, np.void): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'np.void' instance")
json_object = {}
json_object["name"] = self._name_converter.numpy_to_json(value["name"])
json_object["address"] = self._address_converter.numpy_to_json(value["address"])
return json_object
[docs] def from_json(self, json_object: object) -> Institution:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return Institution(
name=self._name_converter.from_json(json_object["name"],),
address=self._address_converter.from_json(json_object["address"],),
)
[docs] def from_json_to_numpy(self, json_object: object) -> np.void:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return (
self._name_converter.from_json_to_numpy(json_object["name"]),
self._address_converter.from_json_to_numpy(json_object["address"]),
) # type:ignore
[docs]class _ExamInformationConverter(_ndjson.JsonConverter[ExamInformation, np.void]):
def __init__(self) -> None:
self._subject_converter = _SubjectConverter()
self._institution_converter = _InstitutionConverter()
self._protocol_converter = _ndjson.OptionalConverter(_ndjson.string_converter)
self._start_of_acquisition_converter = _ndjson.OptionalConverter(_ndjson.datetime_converter)
super().__init__(np.dtype([
("subject", self._subject_converter.overall_dtype()),
("institution", self._institution_converter.overall_dtype()),
("protocol", self._protocol_converter.overall_dtype()),
("start_of_acquisition", self._start_of_acquisition_converter.overall_dtype()),
]))
[docs] def to_json(self, value: ExamInformation) -> object:
if not isinstance(value, ExamInformation): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'ExamInformation' instance")
json_object = {}
json_object["subject"] = self._subject_converter.to_json(value.subject)
json_object["institution"] = self._institution_converter.to_json(value.institution)
if value.protocol is not None:
json_object["protocol"] = self._protocol_converter.to_json(value.protocol)
if value.start_of_acquisition is not None:
json_object["startOfAcquisition"] = self._start_of_acquisition_converter.to_json(value.start_of_acquisition)
return json_object
[docs] def numpy_to_json(self, value: np.void) -> object:
if not isinstance(value, np.void): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'np.void' instance")
json_object = {}
json_object["subject"] = self._subject_converter.numpy_to_json(value["subject"])
json_object["institution"] = self._institution_converter.numpy_to_json(value["institution"])
if (field_val := value["protocol"]) is not None:
json_object["protocol"] = self._protocol_converter.numpy_to_json(field_val)
if (field_val := value["start_of_acquisition"]) is not None:
json_object["startOfAcquisition"] = self._start_of_acquisition_converter.numpy_to_json(field_val)
return json_object
[docs] def from_json(self, json_object: object) -> ExamInformation:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return ExamInformation(
subject=self._subject_converter.from_json(json_object["subject"],),
institution=self._institution_converter.from_json(json_object["institution"],),
protocol=self._protocol_converter.from_json(json_object.get("protocol")),
start_of_acquisition=self._start_of_acquisition_converter.from_json(json_object.get("startOfAcquisition")),
)
[docs] def from_json_to_numpy(self, json_object: object) -> np.void:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return (
self._subject_converter.from_json_to_numpy(json_object["subject"]),
self._institution_converter.from_json_to_numpy(json_object["institution"]),
self._protocol_converter.from_json_to_numpy(json_object.get("protocol")),
self._start_of_acquisition_converter.from_json_to_numpy(json_object.get("startOfAcquisition")),
) # type:ignore
[docs]class _DetectorConverter(_ndjson.JsonConverter[Detector, np.void]):
def __init__(self) -> None:
self._id_converter = _ndjson.uint32_converter
self._x_converter = _ndjson.float32_converter
self._y_converter = _ndjson.float32_converter
self._z_converter = _ndjson.float32_converter
super().__init__(np.dtype([
("id", self._id_converter.overall_dtype()),
("x", self._x_converter.overall_dtype()),
("y", self._y_converter.overall_dtype()),
("z", self._z_converter.overall_dtype()),
]))
[docs] def to_json(self, value: Detector) -> object:
if not isinstance(value, Detector): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'Detector' instance")
json_object = {}
json_object["id"] = self._id_converter.to_json(value.id)
json_object["x"] = self._x_converter.to_json(value.x)
json_object["y"] = self._y_converter.to_json(value.y)
json_object["z"] = self._z_converter.to_json(value.z)
return json_object
[docs] def numpy_to_json(self, value: np.void) -> object:
if not isinstance(value, np.void): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'np.void' instance")
json_object = {}
json_object["id"] = self._id_converter.numpy_to_json(value["id"])
json_object["x"] = self._x_converter.numpy_to_json(value["x"])
json_object["y"] = self._y_converter.numpy_to_json(value["y"])
json_object["z"] = self._z_converter.numpy_to_json(value["z"])
return json_object
[docs] def from_json(self, json_object: object) -> Detector:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return Detector(
id=self._id_converter.from_json(json_object["id"],),
x=self._x_converter.from_json(json_object["x"],),
y=self._y_converter.from_json(json_object["y"],),
z=self._z_converter.from_json(json_object["z"],),
)
[docs] def from_json_to_numpy(self, json_object: object) -> np.void:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return (
self._id_converter.from_json_to_numpy(json_object["id"]),
self._x_converter.from_json_to_numpy(json_object["x"]),
self._y_converter.from_json_to_numpy(json_object["y"]),
self._z_converter.from_json_to_numpy(json_object["z"]),
) # type:ignore
[docs]class _ScannerInformationConverter(_ndjson.JsonConverter[ScannerInformation, np.void]):
def __init__(self) -> None:
self._model_name_converter = _ndjson.OptionalConverter(_ndjson.string_converter)
self._detectors_converter = _ndjson.VectorConverter(_DetectorConverter())
self._tof_bin_edges_converter = _ndjson.NDArrayConverter(_ndjson.float32_converter, 1)
self._tof_resolution_converter = _ndjson.float32_converter
self._energy_bin_edges_converter = _ndjson.NDArrayConverter(_ndjson.float32_converter, 1)
self._energy_resolution_at_511_converter = _ndjson.float32_converter
self._listmode_time_block_duration_converter = _ndjson.uint32_converter
super().__init__(np.dtype([
("model_name", self._model_name_converter.overall_dtype()),
("detectors", self._detectors_converter.overall_dtype()),
("tof_bin_edges", self._tof_bin_edges_converter.overall_dtype()),
("tof_resolution", self._tof_resolution_converter.overall_dtype()),
("energy_bin_edges", self._energy_bin_edges_converter.overall_dtype()),
("energy_resolution_at_511", self._energy_resolution_at_511_converter.overall_dtype()),
("listmode_time_block_duration", self._listmode_time_block_duration_converter.overall_dtype()),
]))
[docs] def to_json(self, value: ScannerInformation) -> object:
if not isinstance(value, ScannerInformation): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'ScannerInformation' instance")
json_object = {}
if value.model_name is not None:
json_object["modelName"] = self._model_name_converter.to_json(value.model_name)
json_object["detectors"] = self._detectors_converter.to_json(value.detectors)
json_object["tofBinEdges"] = self._tof_bin_edges_converter.to_json(value.tof_bin_edges)
json_object["tofResolution"] = self._tof_resolution_converter.to_json(value.tof_resolution)
json_object["energyBinEdges"] = self._energy_bin_edges_converter.to_json(value.energy_bin_edges)
json_object["energyResolutionAt511"] = self._energy_resolution_at_511_converter.to_json(value.energy_resolution_at_511)
json_object["listmodeTimeBlockDuration"] = self._listmode_time_block_duration_converter.to_json(value.listmode_time_block_duration)
return json_object
[docs] def numpy_to_json(self, value: np.void) -> object:
if not isinstance(value, np.void): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'np.void' instance")
json_object = {}
if (field_val := value["model_name"]) is not None:
json_object["modelName"] = self._model_name_converter.numpy_to_json(field_val)
json_object["detectors"] = self._detectors_converter.numpy_to_json(value["detectors"])
json_object["tofBinEdges"] = self._tof_bin_edges_converter.numpy_to_json(value["tof_bin_edges"])
json_object["tofResolution"] = self._tof_resolution_converter.numpy_to_json(value["tof_resolution"])
json_object["energyBinEdges"] = self._energy_bin_edges_converter.numpy_to_json(value["energy_bin_edges"])
json_object["energyResolutionAt511"] = self._energy_resolution_at_511_converter.numpy_to_json(value["energy_resolution_at_511"])
json_object["listmodeTimeBlockDuration"] = self._listmode_time_block_duration_converter.numpy_to_json(value["listmode_time_block_duration"])
return json_object
[docs] def from_json(self, json_object: object) -> ScannerInformation:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return ScannerInformation(
model_name=self._model_name_converter.from_json(json_object.get("modelName")),
detectors=self._detectors_converter.from_json(json_object["detectors"],),
tof_bin_edges=self._tof_bin_edges_converter.from_json(json_object["tofBinEdges"],),
tof_resolution=self._tof_resolution_converter.from_json(json_object["tofResolution"],),
energy_bin_edges=self._energy_bin_edges_converter.from_json(json_object["energyBinEdges"],),
energy_resolution_at_511=self._energy_resolution_at_511_converter.from_json(json_object["energyResolutionAt511"],),
listmode_time_block_duration=self._listmode_time_block_duration_converter.from_json(json_object["listmodeTimeBlockDuration"],),
)
[docs] def from_json_to_numpy(self, json_object: object) -> np.void:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return (
self._model_name_converter.from_json_to_numpy(json_object.get("modelName")),
self._detectors_converter.from_json_to_numpy(json_object["detectors"]),
self._tof_bin_edges_converter.from_json_to_numpy(json_object["tofBinEdges"]),
self._tof_resolution_converter.from_json_to_numpy(json_object["tofResolution"]),
self._energy_bin_edges_converter.from_json_to_numpy(json_object["energyBinEdges"]),
self._energy_resolution_at_511_converter.from_json_to_numpy(json_object["energyResolutionAt511"]),
self._listmode_time_block_duration_converter.from_json_to_numpy(json_object["listmodeTimeBlockDuration"]),
) # type:ignore
[docs]class _HeaderConverter(_ndjson.JsonConverter[Header, np.void]):
def __init__(self) -> None:
self._scanner_converter = _ScannerInformationConverter()
self._exam_converter = _ndjson.OptionalConverter(_ExamInformationConverter())
super().__init__(np.dtype([
("scanner", self._scanner_converter.overall_dtype()),
("exam", self._exam_converter.overall_dtype()),
]))
[docs] def to_json(self, value: Header) -> object:
if not isinstance(value, Header): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'Header' instance")
json_object = {}
json_object["scanner"] = self._scanner_converter.to_json(value.scanner)
if value.exam is not None:
json_object["exam"] = self._exam_converter.to_json(value.exam)
return json_object
[docs] def numpy_to_json(self, value: np.void) -> object:
if not isinstance(value, np.void): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'np.void' instance")
json_object = {}
json_object["scanner"] = self._scanner_converter.numpy_to_json(value["scanner"])
if (field_val := value["exam"]) is not None:
json_object["exam"] = self._exam_converter.numpy_to_json(field_val)
return json_object
[docs] def from_json(self, json_object: object) -> Header:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return Header(
scanner=self._scanner_converter.from_json(json_object["scanner"],),
exam=self._exam_converter.from_json(json_object.get("exam")),
)
[docs] def from_json_to_numpy(self, json_object: object) -> np.void:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return (
self._scanner_converter.from_json_to_numpy(json_object["scanner"]),
self._exam_converter.from_json_to_numpy(json_object.get("exam")),
) # type:ignore
[docs]class _TimeBlockConverter(_ndjson.JsonConverter[TimeBlock, np.void]):
def __init__(self) -> None:
self._id_converter = _ndjson.uint32_converter
self._prompt_events_converter = _ndjson.VectorConverter(_CoincidenceEventConverter())
self._delayed_events_converter = _ndjson.OptionalConverter(_ndjson.VectorConverter(_CoincidenceEventConverter()))
super().__init__(np.dtype([
("id", self._id_converter.overall_dtype()),
("prompt_events", self._prompt_events_converter.overall_dtype()),
("delayed_events", self._delayed_events_converter.overall_dtype()),
]))
[docs] def to_json(self, value: TimeBlock) -> object:
if not isinstance(value, TimeBlock): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'TimeBlock' instance")
json_object = {}
json_object["id"] = self._id_converter.to_json(value.id)
json_object["promptEvents"] = self._prompt_events_converter.to_json(value.prompt_events)
if value.delayed_events is not None:
json_object["delayedEvents"] = self._delayed_events_converter.to_json(value.delayed_events)
return json_object
[docs] def numpy_to_json(self, value: np.void) -> object:
if not isinstance(value, np.void): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'np.void' instance")
json_object = {}
json_object["id"] = self._id_converter.numpy_to_json(value["id"])
json_object["promptEvents"] = self._prompt_events_converter.numpy_to_json(value["prompt_events"])
if (field_val := value["delayed_events"]) is not None:
json_object["delayedEvents"] = self._delayed_events_converter.numpy_to_json(field_val)
return json_object
[docs] def from_json(self, json_object: object) -> TimeBlock:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return TimeBlock(
id=self._id_converter.from_json(json_object["id"],),
prompt_events=self._prompt_events_converter.from_json(json_object["promptEvents"],),
delayed_events=self._delayed_events_converter.from_json(json_object.get("delayedEvents")),
)
[docs] def from_json_to_numpy(self, json_object: object) -> np.void:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return (
self._id_converter.from_json_to_numpy(json_object["id"]),
self._prompt_events_converter.from_json_to_numpy(json_object["promptEvents"]),
self._delayed_events_converter.from_json_to_numpy(json_object.get("delayedEvents")),
) # type:ignore
[docs]class _TimeIntervalConverter(_ndjson.JsonConverter[TimeInterval, np.void]):
def __init__(self) -> None:
self._start_converter = _ndjson.uint32_converter
self._stop_converter = _ndjson.uint32_converter
super().__init__(np.dtype([
("start", self._start_converter.overall_dtype()),
("stop", self._stop_converter.overall_dtype()),
]))
[docs] def to_json(self, value: TimeInterval) -> object:
if not isinstance(value, TimeInterval): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'TimeInterval' instance")
json_object = {}
json_object["start"] = self._start_converter.to_json(value.start)
json_object["stop"] = self._stop_converter.to_json(value.stop)
return json_object
[docs] def numpy_to_json(self, value: np.void) -> object:
if not isinstance(value, np.void): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'np.void' instance")
json_object = {}
json_object["start"] = self._start_converter.numpy_to_json(value["start"])
json_object["stop"] = self._stop_converter.numpy_to_json(value["stop"])
return json_object
[docs] def from_json(self, json_object: object) -> TimeInterval:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return TimeInterval(
start=self._start_converter.from_json(json_object["start"],),
stop=self._stop_converter.from_json(json_object["stop"],),
)
[docs] def from_json_to_numpy(self, json_object: object) -> np.void:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return (
self._start_converter.from_json_to_numpy(json_object["start"]),
self._stop_converter.from_json_to_numpy(json_object["stop"]),
) # type:ignore
[docs]class _TimeFrameInformationConverter(_ndjson.JsonConverter[TimeFrameInformation, np.void]):
def __init__(self) -> None:
self._time_frames_converter = _ndjson.VectorConverter(_TimeIntervalConverter())
super().__init__(np.dtype([
("time_frames", self._time_frames_converter.overall_dtype()),
]))
[docs] def to_json(self, value: TimeFrameInformation) -> object:
if not isinstance(value, TimeFrameInformation): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'TimeFrameInformation' instance")
json_object = {}
json_object["timeFrames"] = self._time_frames_converter.to_json(value.time_frames)
return json_object
[docs] def numpy_to_json(self, value: np.void) -> object:
if not isinstance(value, np.void): # pyright: ignore [reportUnnecessaryIsInstance]
raise TypeError("Expected 'np.void' instance")
json_object = {}
json_object["timeFrames"] = self._time_frames_converter.numpy_to_json(value["time_frames"])
return json_object
[docs] def from_json(self, json_object: object) -> TimeFrameInformation:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return TimeFrameInformation(
time_frames=self._time_frames_converter.from_json(json_object["timeFrames"],),
)
[docs] def from_json_to_numpy(self, json_object: object) -> np.void:
if not isinstance(json_object, dict):
raise TypeError("Expected 'dict' instance")
return (
self._time_frames_converter.from_json_to_numpy(json_object["timeFrames"]),
) # type:ignore
[docs]class NDJsonPrdExperimentWriter(_ndjson.NDJsonProtocolWriter, PrdExperimentWriterBase):
"""NDJson writer for the PrdExperiment protocol."""
def __init__(self, stream: typing.Union[typing.TextIO, str]) -> None:
PrdExperimentWriterBase.__init__(self)
_ndjson.NDJsonProtocolWriter.__init__(self, stream, PrdExperimentWriterBase.schema)
[docs] def _write_header(self, value: Header) -> None:
converter = _HeaderConverter()
json_value = converter.to_json(value)
self._write_json_line({"header": json_value})
[docs] def _write_time_blocks(self, value: collections.abc.Iterable[TimeBlock]) -> None:
converter = _TimeBlockConverter()
for item in value:
json_item = converter.to_json(item)
self._write_json_line({"timeBlocks": json_item})
[docs]class NDJsonPrdExperimentReader(_ndjson.NDJsonProtocolReader, PrdExperimentReaderBase):
"""NDJson writer for the PrdExperiment protocol."""
def __init__(self, stream: typing.Union[io.BufferedReader, typing.TextIO, str]) -> None:
PrdExperimentReaderBase.__init__(self)
_ndjson.NDJsonProtocolReader.__init__(self, stream, PrdExperimentReaderBase.schema)
[docs] def _read_header(self) -> Header:
json_object = self._read_json_line("header", True)
converter = _HeaderConverter()
return converter.from_json(json_object)
[docs] def _read_time_blocks(self) -> collections.abc.Iterable[TimeBlock]:
converter = _TimeBlockConverter()
while (json_object := self._read_json_line("timeBlocks", False)) is not _ndjson.MISSING_SENTINEL:
yield converter.from_json(json_object)