Skip to content

Commit 8fce783

Browse files
author
LAKESIDE\LindaT18
committed
image analysis: fix image orientation, roi height, add scalebar; spectra analysis: fix scalebar
1 parent 0c6944e commit 8fce783

File tree

4 files changed

+34
-15
lines changed

4 files changed

+34
-15
lines changed

PythonGUI_apps/FLIM_analysis/FLIM_plot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def plot_intensity_sums(self):
112112
(self.x_step_size,
113113
self.y_step_size))
114114
self.ui.intensity_sums_viewBox.roi.setSize([self.x_scan_size, self.y_step_size]) #line roi
115-
scale = pg.ScaleBar(size=3,suffix='um')
115+
scale = pg.ScaleBar(size=1,suffix='um')
116116
scale.setParentItem(self.ui.intensity_sums_viewBox.view)
117117
scale.anchor((1, 1), (1, 1), offset=(-30, -30))
118118
self.ui.intensity_sums_viewBox.view.sigRangeChanged.connect(lambda: updateDelay(scale, 10))

PythonGUI_apps/Image_analysis/Image_analysis.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
# local modules
1111

1212
pg.mkQApp()
13+
pg.setConfigOption('imageAxisOrder', 'col-major')
1314

1415
base_path = Path(__file__).parent
1516
file_path = (base_path / "image_analysis_gui.ui").resolve()
@@ -18,6 +19,10 @@
1819

1920
WindowTemplate, TemplateBaseClass = pg.Qt.loadUiType(uiFile)
2021

22+
def updateDelay(scale, time):
23+
""" Hack fix for scalebar inaccuracy"""
24+
QtCore.QTimer.singleShot(time, scale.updateBar)
25+
2126
class MainWindow(TemplateBaseClass):
2227

2328
def __init__(self):
@@ -45,10 +50,9 @@ def __init__(self):
4550
self.roi.sigRegionChanged.connect(self.line_profile_update_plot)
4651
self.ui.load_image_pushButton.clicked.connect(self.load_image)
4752
self.ui.custom_pixel_size_checkBox.stateChanged.connect(self.switch_custom_pixel_size)
48-
self.ui.update_scaling_factor_pushButton.clicked.connect(self.update_scaling_factor)
53+
self.ui.update_scaling_factor_pushButton.clicked.connect(self.reload_image)
4954
self.ui.spot_radioButton.toggled.connect(self.update_camera)
5055

51-
self.num_plots = 0
5256
self.show()
5357

5458
def load_image(self):
@@ -58,7 +62,7 @@ def load_image(self):
5862
try:
5963
file = QtWidgets.QFileDialog.getOpenFileName(self, 'Open file', os.getcwd())
6064
self.original_image = Image.open(file[0])
61-
#self.original_image = self.original_image.rotate(-90, expand=True)
65+
self.original_image = self.original_image.rotate(-90, expand=True)
6266
self.resize_to_scaling_factor(self.original_image)
6367
except Exception as err:
6468
print(format(err))
@@ -67,17 +71,25 @@ def resize_to_scaling_factor(self, image):
6771
"""
6872
Handles loading of image according to scaling_factor
6973
"""
74+
self.update_camera() #initialize camera pixel size
75+
self.update_scaling_factor() #initialize scaling_factor
7076
image = image.resize((round(image.size[0]*self.scaling_factor), round(image.size[1]*self.scaling_factor)))
7177
if self.ui.greyscale_checkBox.isChecked():
7278
image = image.convert("L") #convert to greyscale
73-
image_array = np.asarray(image).T #correct numpy array auto-flip
79+
image_array = np.array(image) #correct numpy array auto-flip
80+
7481
width = image_array.shape[0]
7582
height = image_array.shape[1]
7683
try:
7784
x_vals = np.arange(width) #imv x-axis
78-
self.imv.setImage(img=image_array, xvals= x_vals)
85+
self.imv.setImage(image_array, xvals= x_vals)
7986
self.roi.setPos((0,0))
80-
self.roi.setSize([width, height * self.scaling_factor]) #set line roi
87+
self.roi.setSize([width, self.camera_pixel_size])
88+
89+
scale = pg.ScaleBar(size=1,suffix='um')
90+
scale.setParentItem(self.imv.view)
91+
scale.anchor((1, 1), (1, 1), offset=(-30, -30))
92+
self.imv.view.sigRangeChanged.connect(lambda: updateDelay(scale, 10))
8193
self.line_profile_update_plot()
8294
except:
8395
pass
@@ -121,10 +133,13 @@ def update_scaling_factor(self):
121133
Calculate scaling factor
122134
"""
123135
if self.ui.custom_pixel_size_checkBox.isChecked():
124-
self.scaling_factor = self.ui.custom_pixel_size_spinBox.value()
136+
self.camera_pixel_size = self.ui.custom_pixel_size_spinBox.value()
137+
self.scaling_factor = self.camera_pixel_size
125138
else:
126139
self.scaling_factor = self.camera_pixel_size/int(self.ui.magnification_comboBox.currentText())
127140
self.roi.snapSize = self.scaling_factor #roi snaps to multiples of scaling_factor
141+
142+
def reload_image(self):
128143
if hasattr(self, "original_image"):
129144
self.resize_to_scaling_factor(self.original_image) #resize image, sets up roi
130145

PythonGUI_apps/Image_analysis/image_analysis_gui.ui

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
14-
<string>MainWindow</string>
14+
<string>Image Analysis</string>
1515
</property>
1616
<property name="tabShape">
1717
<enum>QTabWidget::Triangular</enum>

PythonGUI_apps/Spectrum_analysis/Spectra_plot_fit.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@
4444

4545
WindowTemplate, TemplateBaseClass = pg.Qt.loadUiType(uiFile)
4646

47+
def updateDelay(scale, time):
48+
""" Hack fix for scalebar inaccuracy"""
49+
QtCore.QTimer.singleShot(time, scale.updateBar)
50+
4751
class MainWindow(TemplateBaseClass):
4852

4953
def __init__(self):
@@ -539,11 +543,12 @@ def plot_fit_scan(self):
539543
scale = pg.ScaleBar(size=2,suffix='um')
540544
scale.setParentItem(self.ui.fit_scan_viewbox.view)
541545
scale.anchor((1, 1), (1, 1), offset=(-30, -30))
546+
self.ui.fit_scan_viewbox.view.sigRangeChanged.connect(lambda: updateDelay(scale, 10))
542547
else:
543548
self.ui.fit_scan_viewbox.setImage(self.img)
544549

545550
self.ui.fit_scan_viewbox.view.invertY(False)
546-
551+
547552
except Exception as e:
548553
self.ui.result_textBrowser2.append(str(e))
549554
pass
@@ -553,20 +558,18 @@ def plot_raw_scan(self):
553558
# TODO test line scan plots
554559

555560
intensities = self.intensities.T #this is only there because of how we are saving the data in the app
556-
557-
intensities = np.reshape(intensities, newshape=(2048,self.numb_x_pixels, self.numb_y_pixels))
558-
559-
self.ui.raw_scan_viewbox.view.invertY(False)
561+
intensities = np.reshape(intensities, newshape=(2048,self.numb_x_pixels, self.numb_y_pixels))
560562
self.ui.raw_scan_viewbox.setImage(intensities, scale=
561563
(self.x_step_size,
562564
self.y_step_size), xvals=self.wavelengths)
563565

564-
565566
#roi_plot = self.ui.raw_scan_viewBox.getRoiPlot()
566567
#roi_plot.plot(data['Wavelengths'], intensities)
568+
self.ui.raw_scan_viewbox.view.invertY(False)
567569
scale = pg.ScaleBar(size=2,suffix='um')
568570
scale.setParentItem(self.ui.raw_scan_viewbox.view)
569571
scale.anchor((1, 1), (1, 1), offset=(-30, -30))
572+
self.ui.raw_scan_viewbox.view.sigRangeChanged.connect(lambda: updateDelay(scale, 10))
570573

571574
except Exception as e:
572575
self.ui.result_textBrowser2.append(str(e))
@@ -588,6 +591,7 @@ def plot_intensity_sums(self):
588591
scale = pg.ScaleBar(size=2,suffix='um')
589592
scale.setParentItem(self.ui.intensity_sums_viewBox.view)
590593
scale.anchor((1, 1), (1, 1), offset=(-30, -30))
594+
self.ui.intensity_sums_viewbox.view.sigRangeChanged.connect(lambda: updateDelay(scale, 10))
591595

592596
except Exception as e:
593597
self.ui.result_textBrowser2.append(str(e))

0 commit comments

Comments
 (0)