Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GUI: Analysis tab #143

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions aydin/analysis/demo/demo_fsc.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
# flake8: noqa
# import pytest
import pytest
import matplotlib.pyplot as plt
from numpy.random.mtrand import normal

from aydin.analysis.fsc import fsc
from aydin.io.datasets import camera, normalise
from aydin.util.log.log import lprint, Log
from aydin.util.log.log import Log


def demo_fsc(display: bool = True):
Expand Down
10 changes: 10 additions & 0 deletions aydin/gui/_qt/custom_widgets/matplotlib_widget.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg
from matplotlib.figure import Figure


class MatplotlibWidget(FigureCanvasQTAgg):

def __init__(self, parent=None, width=5, height=4, dpi=100):
fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = fig.add_subplot(111)
super(MatplotlibWidget, self).__init__(fig)
2 changes: 2 additions & 0 deletions aydin/gui/main_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
from aydin.gui._qt.custom_widgets.program_flow_diagram import QProgramFlowDiagramWidget
from aydin.gui._qt.job_runners.denoise_job_runner import DenoiseJobRunner
from aydin.gui.tabs.data_model import DataModel
from aydin.gui.tabs.qt.analysis import AnalysisTab
from aydin.gui.tabs.qt.dimensions import DimensionsTab
from aydin.gui.tabs.qt.denoise import DenoiseTab
from aydin.gui.tabs.qt.files import FilesTab
Expand Down Expand Up @@ -66,6 +67,7 @@ def __init__(self, parent, threadpool, status_bar):
"Denoising Crop": DenoisingCroppingTab(self),
"Pre/Post-Processing": ProcessingTab(self),
"Denoise": DenoiseTab(self),
"Analysis": AnalysisTab(self),
}

self.data_model = DataModel(self)
Expand Down
68 changes: 68 additions & 0 deletions aydin/gui/tabs/qt/analysis.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
from napari._qt.qt_viewer import QtViewer
from napari.components import ViewerModel
from qtpy.QtCore import Qt
from qtpy.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel

from aydin.gui._qt.custom_widgets.horizontal_line_break_widget import (
QHorizontalLineBreakWidget,
)
from aydin.gui._qt.custom_widgets.matplotlib_widget import MatplotlibWidget


class AnalysisTab(QWidget):
"""
Analysis Tab
"""

def __init__(self, parent):
super(QWidget, self).__init__(parent)
self.parent = parent

self.tab_layout = QVBoxLayout()

# Blind spots
self.blind_spot_label = QLabel("blind spots: []")
self.tab_layout.addWidget(self.blind_spot_label)

self.tab_layout.addWidget(QHorizontalLineBreakWidget(self))

# SNR estimate
self.snr_estimate_label = QLabel("snr_estimate: ")
self.tab_layout.addWidget(self.snr_estimate_label)

self.tab_layout.addWidget(QHorizontalLineBreakWidget(self))

# Resolution estimate
self.resolution_estimate_label = QLabel("frequency resolution estimate: ")
self.tab_layout.addWidget(self.resolution_estimate_label)

self.tab_layout.addWidget(QHorizontalLineBreakWidget(self))

# FSC section
self.fsc_label = QLabel("Fourier Shell Correlations: ")
self.tab_layout.addWidget(self.fsc_label)

self.matplotlib_widget = MatplotlibWidget(self, width=5, height=40, dpi=100)

self.tab_layout.addWidget(self.matplotlib_widget)

self.tab_layout.addWidget(QHorizontalLineBreakWidget(self))

# Noise Floor section
self.noise_floor_label = QLabel("calculated noise floor: ")
self.tab_layout.addWidget(self.noise_floor_label)

self.noise_floor_viewers_layout = QHBoxLayout()

self.viewer_model1 = ViewerModel()
self.viewer_qt1 = QtViewer(self.viewer_model1, show_welcome_screen=False)
self.noise_floor_viewers_layout.addWidget(self.viewer_qt1)

self.viewer_model2 = ViewerModel()
self.viewer_qt2 = QtViewer(self.viewer_model2, show_welcome_screen=False)
self.noise_floor_viewers_layout.addWidget(self.viewer_qt2)

self.tab_layout.addLayout(self.noise_floor_viewers_layout)

self.tab_layout.setAlignment(Qt.AlignTop)
self.setLayout(self.tab_layout)