Skip to content
Snippets Groups Projects
Commit 54ffb77a authored by Johannes Stelzer's avatar Johannes Stelzer
Browse files

fixed nifti headers if entry does not exist in vista

parent 2ec03166
No related branches found
No related tags found
No related merge requests found
......@@ -56,6 +56,8 @@ import re
#%% AUX
def get_property_str(header_img, str_property, repn_property="int"):
if header_img is None:
return -1
idx_begin = header_img.find(str_property)
if idx_begin == -1:
return -1
......@@ -85,7 +87,7 @@ def get_subheader(header, section_demark):
#%% reader
fp_input = "/home/morty/tmp/test.v"
# fp_input = "/mnt/50tbd/gabriele/median_02.v"
def load_vista(fp_input):
......@@ -206,55 +208,64 @@ def load_vista(fp_input):
#%% re-parse the header to get the complete header information
nii_loaded = nib.Nifti1Image(data, affine=np.eye(4))
mm = get_property_str(header_img, "voxel", "list")
nii_loaded.header.set_zooms(mm)
nii_loaded.header['pixdim'][4] = tr
nii_loaded.header.set_xyzt_units(xyz="mm", t="msec")
if dim == "4D":
mm.append(tdim)
#get s-form code
sform_code = get_property_str(header, "sform_code", "int")
if sform_code != -1:
nii_loaded.header['sform_code'] = sform_code
qform_code = get_property_str(header, "qform_code", "int")
if qform_code != -1:
nii_loaded.header['qform_code'] = qform_code
header_sform = get_subheader(header, "sform: image")
offset_sform = get_property_str(header_sform, "data", "int") + last_idx_header
length_sform = int(get_property_str(header_sform, "length", "int")/4)
sform1D = np.frombuffer(raw, dtype=np.float32, count=length_sform, offset=offset_sform).byteswap()
sform2D = np.reshape(sform1D, (4,4))
offset_sform = get_property_str(header_sform, "data", "int")
if offset_sform != -1:
offset_sform += last_idx_header
length_sform = int(get_property_str(header_sform, "length", "int")/4)
sform1D = np.frombuffer(raw, dtype=np.float32, count=length_sform, offset=offset_sform).byteswap()
sform2D = np.reshape(sform1D, (4,4))
nii_loaded.set_sform(sform2D)
header_dim = get_subheader(header, "dim: bundle")
offset_dim = get_property_str(header_dim, "data", "int") + last_idx_header
length_dim = int(get_property_str(header_dim, "length", "int")/4)
dim1D = np.frombuffer(raw, dtype=np.float32, count=length_dim, offset=offset_dim)
offset_dim = get_property_str(header_dim, "data", "int")
if offset_sform != -1:
offset_sform += last_idx_header
length_dim = int(get_property_str(header_dim, "length", "int")/4)
dim1D = np.frombuffer(raw, dtype=np.float32, count=length_dim, offset=offset_dim)
header_pixdim = get_subheader(header, "pixdim: bundle")
offset_pixdim= get_property_str(header_dim, "data", "int") + last_idx_header
length_pixdim = int(get_property_str(header_dim, "length", "int")/4)
pixdim1D = np.frombuffer(raw, dtype=np.float32, count=length_dim, offset=offset_dim)
offset_pixdim= get_property_str(header_dim, "data", "int")
if offset_sform != -1:
offset_sform += last_idx_header
length_pixdim = int(get_property_str(header_dim, "length", "int")/4)
pixdim1D = np.frombuffer(raw, dtype=np.float32, count=length_dim, offset=offset_dim)
header_qform = get_subheader(header, "qform: bundle")
offset_qform = get_property_str(header_qform, "data", "int") + last_idx_header
length_qform = int(get_property_str(header_qform, "length", "int")/4)
qformdim1D = np.frombuffer(raw, dtype=np.float32, count=length_qform, offset=offset_qform)
# quatern_b quatern_c quatern_d qoffset_x qoffset_y qoffset_z
offset_qform = get_property_str(header_qform, "data", "int")
if offset_sform != -1:
offset_sform += last_idx_header
length_qform = int(get_property_str(header_qform, "length", "int")/4)
qformdim1D = np.frombuffer(raw, dtype=np.float32, count=length_qform, offset=offset_qform)
nii_loaded.header['quatern_b'] = qformdim1D[0]
nii_loaded.header['quatern_c'] = qformdim1D[1]
nii_loaded.header['quatern_d'] = qformdim1D[2]
nii_loaded.header['qoffset_x'] = qformdim1D[3]
nii_loaded.header['qoffset_y'] = qformdim1D[4]
nii_loaded.header['qoffset_z'] = qformdim1D[5]
# quatern_b quatern_c quatern_d qoffset_x qoffset_y qoffset_z
#%% convert to nii object... fill in data and header
nii_loaded = nib.Nifti1Image(data, affine=np.eye(4))
# import pdb; pdb.set_trace()
nii_loaded.header.set_zooms(mm)
nii_loaded.header['pixdim'][4] = tr
nii_loaded.set_sform(sform2D)
nii_loaded.header['qform_code'] = qform_code
nii_loaded.header['qform_code'] = sform_code
nii_loaded.header['quatern_b'] = qformdim1D[0]
nii_loaded.header['quatern_c'] = qformdim1D[1]
nii_loaded.header['quatern_d'] = qformdim1D[2]
nii_loaded.header['qoffset_x'] = qformdim1D[3]
nii_loaded.header['qoffset_y'] = qformdim1D[4]
nii_loaded.header['qoffset_z'] = qformdim1D[5]
nii_loaded.header.set_xyzt_units(xyz="mm", t="msec")
return nii_loaded
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment