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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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())
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
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()
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