Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
V
vviewer
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Eric Lacosse
vviewer
Commits
54ffb77a
Commit
54ffb77a
authored
6 years ago
by
Johannes Stelzer
Browse files
Options
Downloads
Patches
Plain Diff
fixed nifti headers if entry does not exist in vista
parent
2ec03166
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
vviewer/VistaLoad.py
+44
-33
44 additions, 33 deletions
vviewer/VistaLoad.py
with
44 additions
and
33 deletions
vviewer/VistaLoad.py
+
44
−
33
View file @
54ffb77a
...
...
@@ -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
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment