コード例 #1
0
ファイル: test_filebase.py プロジェクト: jrkerns/pydicom
 def test_getter_is_little_endian(self):
     """Test DicomIO.is_little_endian getter"""
     fp = DicomIO()
     fp.is_little_endian = True
     assert fp.is_little_endian
     fp.is_little_endian = False
     assert not fp.is_little_endian
コード例 #2
0
def _write_dataset(fp: DicomIO, dataset: Dataset,
                   write_like_original: bool) -> None:
    """Write the Data Set to a file-like. Assumes the file meta information,
    if any, has been written.
    """

    # if we want to write with the same endianness and VR handling as
    # the read dataset we want to preserve raw data elements for
    # performance reasons (which is done by get_item);
    # otherwise we use the default converting item getter
    if dataset.is_original_encoding:
        get_item = Dataset.get_item
    else:
        get_item = Dataset.__getitem__  # type: ignore[assignment]

    # WRITE DATASET
    # The transfer syntax used to encode the dataset can't be changed
    #   within the dataset.
    # Write any Command Set elements now as elements must be in tag order
    #   Mixing Command Set with other elements is non-conformant so we
    #   require `write_like_original` to be True
    command_set = get_item(dataset, slice(0x00000000, 0x00010000))
    if command_set and write_like_original:
        fp.is_implicit_VR = True
        fp.is_little_endian = True
        write_dataset(fp, command_set)

    # Set file VR and endianness. MUST BE AFTER writing META INFO (which
    #   requires Explicit VR Little Endian) and COMMAND SET (which requires
    #   Implicit VR Little Endian)
    fp.is_implicit_VR = cast(bool, dataset.is_implicit_VR)
    fp.is_little_endian = cast(bool, dataset.is_little_endian)

    # Write non-Command Set elements now
    write_dataset(fp, get_item(dataset, slice(0x00010000, None)))
コード例 #3
0
 def test_getter_is_little_endian(self):
     """Test DicomIO.is_little_endian getter"""
     fp = DicomIO()
     fp.is_little_endian = True
     assert fp.is_little_endian
     fp.is_little_endian = False
     assert not fp.is_little_endian
コード例 #4
0
ファイル: test_filebase.py プロジェクト: jrkerns/pydicom
    def test_setter_is_little_endian(self):
        """Test DicomIO.is_little_endian setter"""
        fp = DicomIO()
        fp.is_little_endian = True
        assert fp.read_US == fp.read_leUS
        assert fp.read_UL == fp.read_leUL
        assert fp.write_US == fp.write_leUS
        assert fp.write_UL == fp.write_leUL
        assert fp.read_tag == fp.read_le_tag

        fp.is_little_endian = False
        assert fp.read_US == fp.read_beUS
        assert fp.read_UL == fp.read_beUL
        assert fp.write_US == fp.write_beUS
        assert fp.write_UL == fp.write_beUL
        assert fp.read_tag == fp.read_be_tag
コード例 #5
0
    def test_setter_is_little_endian(self):
        """Test DicomIO.is_little_endian setter"""
        fp = DicomIO()
        fp.is_little_endian = True
        assert fp.read_US == fp.read_leUS
        assert fp.read_UL == fp.read_leUL
        assert fp.write_US == fp.write_leUS
        assert fp.write_UL == fp.write_leUL
        assert fp.read_tag == fp.read_le_tag

        fp.is_little_endian = False
        assert fp.read_US == fp.read_beUS
        assert fp.read_UL == fp.read_beUL
        assert fp.write_US == fp.write_beUS
        assert fp.write_UL == fp.write_beUL
        assert fp.read_tag == fp.read_be_tag
コード例 #6
0
def _harmonize_properties(ds: Dataset, fp: DicomIO) -> None:
    """Make sure the properties in the dataset and the file pointer are
    consistent, so the user can set both with the same effect.
    Properties set on the destination file object always have preference.
    """
    # ensure preference of fp over dataset
    if hasattr(fp, 'is_little_endian'):
        ds.is_little_endian = fp.is_little_endian
    if hasattr(fp, 'is_implicit_VR'):
        ds.is_implicit_VR = fp.is_implicit_VR

    # write the properties back to have a consistent state
    fp.is_implicit_VR = cast(bool, ds.is_implicit_VR)
    fp.is_little_endian = cast(bool, ds.is_little_endian)