Skip to content
Snippets Groups Projects
Commit a5b4b5b4 authored by Paul McCarthy's avatar Paul McCarthy
Browse files

New method on Nifti class, to retrieve strings from nifti headers (moved here

from fsleyes OverlayInfoPanel)
parent 66b1d7ca
No related branches found
No related tags found
No related merge requests found
......@@ -34,6 +34,7 @@ and file names:
import os
import os.path as op
import string
import logging
import six
......@@ -290,6 +291,33 @@ class Nifti(notifier.Notifier):
return origShape, shape, pixdims
def strval(self, key):
"""Returns the specified NIFTI header field, converted to a python
string, correctly null-terminated, and with non-printable characters
removed.
This method is used to sanitise some NIFTI header fields. The default
Python behaviour for converting a sequence of bytes to a string is to
strip all termination characters (bytes with value of ``0x00``) from
the end of the sequence.
This default behaviour does not handle the case where a sequence of
bytes which did contain a long string is subsequently overwritten with
a shorter string - the short string will be terminated, but that
termination character will be followed by the remainder of the
original string.
"""
val = self.header[key]
try: val = bytes(val).partition(b'\0')[0]
except: val = bytes(val)
val = val.decode('ascii')
return ''.join([c for c in val if c in string.printable])
@property
def niftiVersion(self):
"""Returns the NIFTI file version:
......
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