From 78ff0e696e2f67e4f04ef2da49a5dcea5ff8c15d Mon Sep 17 00:00:00 2001 From: Malte Kuhlmann <malte-kuhlmann@web.de> Date: Wed, 16 Nov 2016 22:50:13 +0100 Subject: [PATCH] fixed the frame number problems for functional images. --- vviewer/Image4D.py | 5 +++-- vviewer/vviewer.py | 38 +++++++++++++++++++------------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/vviewer/Image4D.py b/vviewer/Image4D.py index aba596a..62fb327 100644 --- a/vviewer/Image4D.py +++ b/vviewer/Image4D.py @@ -75,7 +75,8 @@ class Image4D(Image): self.image = img self.image_res = img.get_data()[:,:,:,self.frame] - self.time_dim = img.get_data().shape[3]-1 # set beginning from zero. + self.time_dim = img.get_data().shape[3] # set beginning from zero. + print(self.time_dim) self.extremum[0] = img.get_data().min() self.extremum[1] = img.get_data().max() @@ -107,10 +108,10 @@ class Image4D(Image): return self.image_res.shape[0:3] def getTimeDim(self): - """ Return index of time beginning from zero. """ return self.time_dim def getFrame(self): + """ Return index of time beginning from zero. """ return self.frame def setFrame(self, new_frame=0): diff --git a/vviewer/vviewer.py b/vviewer/vviewer.py index f72b4c5..ac357cd 100755 --- a/vviewer/vviewer.py +++ b/vviewer/vviewer.py @@ -102,8 +102,8 @@ class vviewer(QtGui.QMainWindow): # within the image. self.img_dims = [0, 0, 0] # 'time_dim' is the number of frames of the time series data. - # For images this is 0. - self.time_dim = 0 + # For images this is 1. + self.time_dim = 1 # 'cursor_coord' is a list for the current cursor position. self.cursor_coord = [0, 0, 0] # 'affine' contains a numpy array for keeping track of what @@ -833,7 +833,7 @@ class vviewer(QtGui.QMainWindow): if img.type_d() == "4D": if img.getTimeDim() > self.time_dim: self.time_dim = img.getTimeDim() - self.frame_sld.setMaximum(self.time_dim) + self.frame_sld.setMaximum(self.time_dim-1) # Images are always inserted at the beginning. self.images.insert(0, img) @@ -942,7 +942,7 @@ class vviewer(QtGui.QMainWindow): if img.type_d() == "4D": if img.getTimeDim() > self.time_dim: self.time_dim = img.getTimeDim() - self.frame_sld.setMaximum(self.time_dim) + self.frame_sld.setMaximum(self.time_dim-1) if img.frame_time == 0: QtGui.QMessageBox.warning( self, "Warning", @@ -1016,7 +1016,7 @@ class vviewer(QtGui.QMainWindow): if img.type_d() == "4D": if img.getTimeDim() > self.time_dim: self.time_dim = img.getTimeDim() - self.frame_sld.setMaximum(self.time_dim) + self.frame_sld.setMaximum(self.time_dim-1) if img.frame_time == 0: QtGui.QMessageBox.warning( self, "Warning", @@ -2385,8 +2385,8 @@ class vviewer(QtGui.QMainWindow): self.enableFuncView() else: self.disableFuncView() - self.frame = 0 #1 - self.time_dim = 0 #1 + self.frame = 0 + self.time_dim = 1 self.setFrameToBox() self.setFrameToSlider() @@ -2420,7 +2420,7 @@ class vviewer(QtGui.QMainWindow): """ Goes to the last frame. """ - self.frame = self.time_dim + self.frame = self.time_dim - 1 self.setSliceStateOn() self.setFrame() self.setFrameToBox() @@ -2431,8 +2431,8 @@ class vviewer(QtGui.QMainWindow): Goes to the next frame. """ self.frame = self.frame+1 - if self.frame > self.time_dim: - self.frame = self.time_dim + if self.frame >= self.time_dim: + self.frame = self.time_dim - 1 else: self.setSliceStateOn() self.setFrame() @@ -2444,8 +2444,8 @@ class vviewer(QtGui.QMainWindow): Goes to the previous frame. """ self.frame = self.frame-1 - if self.frame < 1: - self.frame = 1 + if self.frame < 0: + self.frame = 0 else: self.setSliceStateOn() self.setFrame() @@ -2519,8 +2519,8 @@ class vviewer(QtGui.QMainWindow): """ if self.playstate == True: try: - if self.frame == self.time_dim: - self.frame = 0 + if self.frame == self.time_dim-1: + self.frame = -1 self.nextFrame() finally: self.timer.singleShot(self.playrate, self.playingFunc) @@ -2555,13 +2555,13 @@ class vviewer(QtGui.QMainWindow): # Index for histogram update. index = self.imagelist.currentRow() # Move the frame number within the possible range. - if self.frame > self.time_dim: - self.frame = self.time_dim - if self.frame < 1: - self.frame = 0 #1 + if self.frame >= self.time_dim: + self.frame = self.time_dim - 1 + if self.frame < 0: + self.frame = 0 for i in range(len(self.images)): if self.images[i].type_d() == "4D": - self.images[i].setFrame(self.frame-1) # only set the variable + self.images[i].setFrame(self.frame) # only set the variable if self.playstate or self.slicestate: # resample only slices self.images[i].resample_slice( -- GitLab