Beispiel #1
0
    def test_invalid_encoding(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Set the encoding to be incorrect
            header['encoding'] = 'fake'

            with self.assertRaisesRegex(nrrd.NRRDError, 'Unsupported encoding: "fake"'):
                nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
Beispiel #2
0
    def test_missing_required_field(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Delete required field
            del header['type']

            with self.assertRaisesRegex(nrrd.NRRDError, 'Header is missing required field: "type".'):
                nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
Beispiel #3
0
    def test_invalid_endian(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Set endianness to fake value
            header['endian'] = 'fake'

            with self.assertRaisesRegex(nrrd.NRRDError, 'Invalid endian value in header: "fake"'):
                nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
Beispiel #4
0
    def test_invalid_encoding(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Set the encoding to be incorrect
            header['encoding'] = 'fake'

            with self.assertRaisesRegex(nrrd.NRRDError,
                                        'Unsupported encoding: "fake"'):
                nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
Beispiel #5
0
    def test_missing_endianness(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Delete the endian field from header
            # Since our data is short (itemsize = 2), we should receive an error
            del header['endian']

            with self.assertRaisesRegex(nrrd.NRRDError, 'Header is missing required field: "endian".'):
                nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
Beispiel #6
0
    def test_invalid_lineskip(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Set the line skip to be incorrect
            header['line skip'] = -1

            with self.assertRaisesRegex(nrrd.NRRDError, 'Invalid lineskip, allowed values are greater than or equal to'
                                                        ' 0'):
                nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
Beispiel #7
0
    def test_detached_header_no_filename(self):
        self.expected_header[u'data file'] = os.path.basename(RAW_DATA_FILE_PATH)

        with open(RAW_NHDR_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # No filename is specified for read_data
            with self.assertRaisesRegex(nrrd.NRRDError, 'Filename parameter must be specified when a relative data file'
                                                        ' path is given'):
                nrrd.read_data(header, fh)
Beispiel #8
0
    def test_wrong_sizes(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Make the number of dimensions wrong
            header['dimension'] = 2

            with self.assertRaisesRegex(nrrd.NRRDError, 'Number of elements in sizes does not match dimension. '
                                                        'Dimension: 2, len\\(sizes\\): 3'):
                nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
Beispiel #9
0
    def test_invalid_endian(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Set endianness to fake value
            header['endian'] = 'fake'

            with self.assertRaisesRegex(
                    nrrd.NRRDError, 'Invalid endian value in header: "fake"'):
                nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
Beispiel #10
0
    def test_missing_required_field(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Delete required field
            del header['type']

            with self.assertRaisesRegex(
                    nrrd.NRRDError,
                    'Header is missing required field: "type".'):
                nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
Beispiel #11
0
    def test_wrong_sizes(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Make the number of dimensions wrong
            header['dimension'] = 2

            with self.assertRaisesRegex(
                    nrrd.NRRDError,
                    'Number of elements in sizes does not match dimension. '
                    'Dimension: 2, len\\(sizes\\): 3'):
                nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
Beispiel #12
0
    def test_invalid_lineskip(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Set the line skip to be incorrect
            header['line skip'] = -1

            with self.assertRaisesRegex(
                    nrrd.NRRDError,
                    'Invalid lineskip, allowed values are greater than or equal to'
                    ' 0'):
                nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
Beispiel #13
0
    def test_missing_endianness(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Delete the endian field from header
            # Since our data is short (itemsize = 2), we should receive an error
            del header['endian']

            with self.assertRaisesRegex(
                    nrrd.NRRDError,
                    'Header is missing required field: "endian".'):
                nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
Beispiel #14
0
    def test_detached_header_no_filename(self):
        self.expected_header[u'data file'] = os.path.basename(
            RAW_DATA_FILE_PATH)

        with open(RAW_NHDR_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # No filename is specified for read_data
            with self.assertRaisesRegex(
                    nrrd.NRRDError,
                    'Filename parameter must be specified when a relative data file'
                    ' path is given'):
                nrrd.read_data(header, fh)
Beispiel #15
0
    def read_nrrd(
            self,
            member: ZipMember) -> Tuple[np.ndarray, collections.OrderedDict]:
        """
        Access, load and transform NRRD file member of the MRB file into
        a numpy ndarray and corresponding header metadata.
        Accessed member is specified via string or ZipInfo instance.

        Parameters
        ----------

        member : str or zipfile.ZipInfo
            Internal path or ZipInfo instance pointing to the member.
        
        Returns
        -------

        (data, header) : tuple
            2-Tuple of the raw data and the NRRD file header.
            The raw data is a numpy.ndarray.
        """
        member_fobj = io.BytesIO(self.read(member))
        header = nrrd.read_header(member_fobj)
        data = nrrd.read_data(header, fh=member_fobj)
        return (data, header)
Beispiel #16
0
    def test_big_endian(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Set endianness to big to verify it is doing correctly
            header['endian'] = 'big'

            data = nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
            np.testing.assert_equal(data, self.expected_data.byteswap())
Beispiel #17
0
    def test_big_endian(self):
        with open(RAW_NRRD_FILE_PATH, 'rb') as fh:
            header = nrrd.read_header(fh)
            np.testing.assert_equal(self.expected_header, header)

            # Set endianness to big to verify it is doing correctly
            header['endian'] = 'big'

            data = nrrd.read_data(header, fh, RAW_NRRD_FILE_PATH)
            np.testing.assert_equal(data, self.expected_data.byteswap())
Beispiel #18
0
def _read_mitk_field(archive, fieldpath):
    """ mitk stores a zip archive with one nrrd file per label mask 
    read individual nrrd files into tempfiles, pass to internal nrrd io routines """

    b = archive.read(fieldpath)
    with tempfile.TemporaryFile() as tf:
        tf.write(b)
        tf.seek(0)
        header = nrrd.read_header(tf)
        data = nrrd.read_data(header, tf, None)
        # data = np.transpose(data)
        # mitk stores column-major 3D image....
        # if data.ndim == 3:
        #     data = data[0]
        return data
Beispiel #19
0
        print res


with open(args.file, "rb") as inputnrrd:
    header = nrrd.read_header(inputnrrd)
    headerJson = json.dumps(header)

    service = DVIDNodeService(addr, uid)
    kvname = 'headers'
    if service.create_keyvalue(kvname):
        service.put(kvname, args.file, headerJson)
    else:
        service.put(kvname, args.file, headerJson)
        # we should check if the key is there and warn the user to avoid overwriting when not desired

    data = np.ascontiguousarray(nrrd.read_data(header, inputnrrd, args.file))

    reshaper = []

    for dim in data.shape:
        if dim % 32 != 0:
            newmax = (dim / 32 + 1) * 32
        else:
            newmax = dim
        reshaper += [(0, newmax - dim)]

    data = np.pad(data, reshaper, mode='constant')

    d2 = data.copy()
    data = None
    pdb.set_trace()
Beispiel #20
0
import numpy as np
import nrrd

displacement = nrrd.read_data('Pt109 Displacement Field.nrrd')

print(displacement)

image = nrrd.read('Pt109_TransformedVolumes_1_12 frame1.nrrd')

print(image)


def load(filename):
    log.info('Loading nrrd slice {}'.format(filename))
    with open_file(filename) as fh:
        header = nrrd.read_header(fh)
        return nrrd.read_data(header, fh, filename), header