def test_load_write_LPS_file(self): # Load the RAS and LPS version of the standard. trk_RAS = TrkFile.load(DATA['standard_trk_fname'], lazy_load=False) trk_LPS = TrkFile.load(DATA['standard_LPS_trk_fname'], lazy_load=False) assert_tractogram_equal(trk_LPS.tractogram, trk_RAS.tractogram) # Write back the standard. trk_file = BytesIO() trk = TrkFile(trk_LPS.tractogram, trk_LPS.header) trk.save(trk_file) trk_file.seek(0, os.SEEK_SET) new_trk = TrkFile.load(trk_file) assert_arr_dict_equal(new_trk.header, trk.header) assert_tractogram_equal(new_trk.tractogram, trk.tractogram) new_trk_orig = TrkFile.load(DATA['standard_LPS_trk_fname']) assert_tractogram_equal(new_trk.tractogram, new_trk_orig.tractogram) trk_file.seek(0, os.SEEK_SET) assert_equal(trk_file.read(), open(DATA['standard_LPS_trk_fname'], 'rb').read()) # Test writing a file where the header is missing the # Field.VOXEL_ORDER. trk_file = BytesIO() # For TRK file format, the default voxel order is LPS. header = copy.deepcopy(trk_LPS.header) header[Field.VOXEL_ORDER] = b"" trk = TrkFile(trk_LPS.tractogram, header) trk.save(trk_file) trk_file.seek(0, os.SEEK_SET) new_trk = TrkFile.load(trk_file) assert_arr_dict_equal(new_trk.header, trk_LPS.header) assert_tractogram_equal(new_trk.tractogram, trk.tractogram) new_trk_orig = TrkFile.load(DATA['standard_LPS_trk_fname']) assert_tractogram_equal(new_trk.tractogram, new_trk_orig.tractogram) trk_file.seek(0, os.SEEK_SET) assert_equal(trk_file.read(), open(DATA['standard_LPS_trk_fname'], 'rb').read())
def test_write_complex_file(self): # With scalars tractogram = Tractogram(DATA['streamlines'], data_per_point=DATA['data_per_point'], affine_to_rasmm=np.eye(4)) trk_file = BytesIO() trk = TrkFile(tractogram) trk.save(trk_file) trk_file.seek(0, os.SEEK_SET) new_trk = TrkFile.load(trk_file, lazy_load=False) assert_tractogram_equal(new_trk.tractogram, tractogram) # With properties data_per_streamline = DATA['data_per_streamline'] tractogram = Tractogram(DATA['streamlines'], data_per_streamline=data_per_streamline, affine_to_rasmm=np.eye(4)) trk = TrkFile(tractogram) trk_file = BytesIO() trk.save(trk_file) trk_file.seek(0, os.SEEK_SET) new_trk = TrkFile.load(trk_file, lazy_load=False) assert_tractogram_equal(new_trk.tractogram, tractogram) # With scalars and properties data_per_streamline = DATA['data_per_streamline'] tractogram = Tractogram(DATA['streamlines'], data_per_point=DATA['data_per_point'], data_per_streamline=data_per_streamline, affine_to_rasmm=np.eye(4)) trk_file = BytesIO() trk = TrkFile(tractogram) trk.save(trk_file) trk_file.seek(0, os.SEEK_SET) new_trk = TrkFile.load(trk_file, lazy_load=False) assert_tractogram_equal(new_trk.tractogram, tractogram) new_trk_orig = TrkFile.load(DATA['complex_trk_fname']) assert_tractogram_equal(new_trk.tractogram, new_trk_orig.tractogram) trk_file.seek(0, os.SEEK_SET) assert_equal(trk_file.read(), open(DATA['complex_trk_fname'], 'rb').read())
def test_write_empty_file(self): tractogram = Tractogram(affine_to_rasmm=np.eye(4)) trk_file = BytesIO() trk = TrkFile(tractogram) trk.save(trk_file) trk_file.seek(0, os.SEEK_SET) new_trk = TrkFile.load(trk_file) assert_tractogram_equal(new_trk.tractogram, tractogram) new_trk_orig = TrkFile.load(DATA['empty_trk_fname']) assert_tractogram_equal(new_trk.tractogram, new_trk_orig.tractogram) trk_file.seek(0, os.SEEK_SET) assert_equal(trk_file.read(), open(DATA['empty_trk_fname'], 'rb').read())