diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 54fcdefa352f5ea5e00a1fde425a01c3ed368d65..e6c9d3934ceb3703dfc188eef03216bedba00d40 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,16 +2,14 @@ This document contains the ``fslpy`` release history in reverse chronological order. -2.4.0 (Wednesday July 24th 2019) --------------------------------- +2.5.0 (Under development) +------------------------- Added ^^^^^ -* New :mod:`.image.roi` module, for exracting an ROI of an image, or expanding - its field-of-view. * New :meth:`.Image.getAffine` method, for retrieving an affine between any of the voxel, FSL, or world coordinate systems. * New :mod:`fsl.transforms` package, which contains classes and functions for @@ -30,8 +28,8 @@ Changed ^^^^^^^ -* The :mod:`.resample_image` script has been updated to support resampling of - images with more than 3 dimensions. +* The :mod:`.vest.looksLikeVestLutFile` function has been made slightly more + lenient. * `h5py <https://www.h5py.org/>`_ has been added to the ``fslpy`` dependencies. @@ -39,11 +37,31 @@ Deprecated ^^^^^^^^^^ -* The :mod:`fsl.utils.transform` module has been deprecated its functions can +* The :mod:`fsl.utils.transform` module has been deprecated; its functions can now be found in the :mod:`fsl.transforms.affine` and :mod:`fsl.transform.flirt` modules. +2.4.0 (Wednesday July 24th 2019) +-------------------------------- + + +Added +^^^^^ + + +* New :mod:`.image.roi` module, for extracting an ROI of an image, or expanding + its field-of-view. + + +Changed +^^^^^^^ + + +* The :mod:`.resample_image` script has been updated to support resampling of + images with more than 3 dimensions. + + 2.3.1 (Friday July 5th 2019) ---------------------------- diff --git a/fsl/data/vest.py b/fsl/data/vest.py index 2c60568801c9dc7ff36fedb614da56f6ab8f7fec..b0b33c73fa41ab045c849d079f52d73d40baccf6 100644 --- a/fsl/data/vest.py +++ b/fsl/data/vest.py @@ -22,7 +22,16 @@ def looksLikeVestLutFile(path): ``False`` otherwise. """ with open(path, 'rt') as f: - return f.readline().strip() == '%!VEST-LUT' + + lines = [] + for i in range(10): + line = f.readline() + if line is None: break + else: lines.append(line.strip()) + + validHeaders = ('%!VEST-LUT', '%BeginInstance', '%%BeginInstance') + + return len(lines) > 0 and lines[0] in validHeaders def loadVestLutFile(path, normalise=True): diff --git a/tests/test_vest.py b/tests/test_vest.py index df74b5b8cf656f3a630d7cd29c2da988ab2b5321..407c502ef633880cfb072581be1a2a47e7a97581 100644 --- a/tests/test_vest.py +++ b/tests/test_vest.py @@ -111,11 +111,37 @@ testfile4Colours = np.array([ testfile5 = """Obviously not a VEST file""" +testfile6 = """%BeginInstance +/SavedInstanceClassName /ClassLUT +/PseudoColourmap [ +<-color{0.0,1.0,5.0}-> +<-color{1.0,2.0,4.0}-> +<-color{2.0,3.0,3.0}-> +] +>> +%%EndInstance +%%EOF +""" + +testfile7 = """%%BeginInstance +/SavedInstanceClassName /ClassLUT +/PseudoColourmap [ +<-color{0.0,1.0,5.0}-> +<-color{1.0,2.0,4.0}-> +<-color{2.0,3.0,3.0}-> +] +>> +%%EndInstance +%%EOF +""" + def _createFiles(testdir): - names = ['testfile1', 'testfile2', 'testfile3', 'testfile4', 'testfile5'] - texts = [ testfile1, testfile2, testfile3, testfile4, testfile5] + names = ['testfile1', 'testfile2', 'testfile3', 'testfile4', 'testfile5', + 'testfile6', 'testfile7'] + texts = [ testfile1, testfile2, testfile3, testfile4, testfile5, + testfile6, testfile7] for name, text in zip(names, texts): filename = op.join(testdir, '{}.txt'.format(name)) @@ -137,6 +163,8 @@ def test_looksLikeVestLutFile(): assert vest.looksLikeVestLutFile(op.join(testdir, 'testfile3.txt')) assert vest.looksLikeVestLutFile(op.join(testdir, 'testfile4.txt')) assert not vest.looksLikeVestLutFile(op.join(testdir, 'testfile5.txt')) + assert vest.looksLikeVestLutFile(op.join(testdir, 'testfile6.txt')) + assert vest.looksLikeVestLutFile(op.join(testdir, 'testfile7.txt')) finally: shutil.rmtree(testdir)