128 lines
4.2 KiB
C++
128 lines
4.2 KiB
C++
// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
#include "JFJochViewerImageStatistics.h"
|
|
#include <QFormLayout>
|
|
|
|
JFJochViewerImageStatistics::JFJochViewerImageStatistics(JFJochReader &in_reader, QWidget *parent)
|
|
: QWidget(parent), reader(in_reader) {
|
|
QFormLayout* layout = new QFormLayout(this);
|
|
|
|
dataset_name = new QLabel(this);
|
|
layout->addRow(new QLabel("Dataset:"), dataset_name);
|
|
|
|
detector_name = new QLabel(this);
|
|
layout->addRow(new QLabel("Detector:"), detector_name);
|
|
|
|
error_pixels = new QLabel(this);
|
|
layout->addRow(new QLabel("Error pixels:"), error_pixels);
|
|
|
|
sat_pixels = new QLabel(this);
|
|
layout->addRow(new QLabel("Sat. pixels:"), sat_pixels);
|
|
|
|
valid_values = new QLabel(this);
|
|
layout->addRow(new QLabel("Valid values:"), valid_values);
|
|
|
|
spots = new QLabel(this);
|
|
layout->addRow(new QLabel("Spots:"), spots);
|
|
|
|
bkg_estimate = new QLabel(this);
|
|
layout->addRow(new QLabel("Background:"), bkg_estimate);
|
|
|
|
indexed = new QLabel(this);
|
|
layout->addRow(new QLabel("Indexing:"), indexed);
|
|
|
|
roi_sum = new QLabel(this);
|
|
layout->addRow(new QLabel("ROI sum:"), roi_sum);
|
|
|
|
roi_mean = new QLabel(this);
|
|
layout->addRow(new QLabel("ROI mean:"), roi_mean);
|
|
|
|
roi_stddev = new QLabel(this);
|
|
layout->addRow(new QLabel("ROI st. dev.:"), roi_stddev);
|
|
|
|
roi_max = new QLabel(this);
|
|
layout->addRow(new QLabel("ROI max:"), roi_max);
|
|
|
|
}
|
|
|
|
void JFJochViewerImageStatistics::noImage() {
|
|
dataset_name->setText("");
|
|
detector_name->setText("");
|
|
error_pixels->setText("");
|
|
sat_pixels->setText("");
|
|
valid_values->setText("");
|
|
spots->setText("");
|
|
bkg_estimate->setText("");
|
|
indexed->setText("");
|
|
roi_sum->setText("");
|
|
roi_mean->setText("");
|
|
roi_stddev->setText("");
|
|
roi_max->setText("");
|
|
}
|
|
|
|
void JFJochViewerImageStatistics::loadImage() {
|
|
auto image = reader.CopyImage();
|
|
QString text;
|
|
|
|
text = QString("<b>%1</b>").arg(QString::fromStdString(image->dataset->name));
|
|
dataset_name->setText(text);
|
|
|
|
text = QString("<b>%1</b>").arg(QString::fromStdString(image->dataset->detector_name));
|
|
detector_name->setText(text);
|
|
|
|
text = QString("<b>%1</b>").arg(image->error_pixel.size());
|
|
error_pixels->setText(text);
|
|
|
|
text = QString("<b>%1</b>").arg(image->saturated_pixel.size());
|
|
sat_pixels->setText(text);
|
|
|
|
text = QString("<b>%1</b>").arg(image->spots.size());
|
|
spots->setText(text);
|
|
|
|
text = QString("<b>%1</b> - <b>%2</b>")
|
|
.arg(image->valid_pixel.begin()->first)
|
|
.arg(image->valid_pixel.rbegin()->first);
|
|
valid_values->setText(text);
|
|
|
|
if (image->dataset->bkg_estimate.size() > image->number) {
|
|
text = QString("<b>%1</b>").arg(image->dataset->bkg_estimate[image->number]);
|
|
bkg_estimate->setText(text);
|
|
} else {
|
|
bkg_estimate->setText("N/A");
|
|
}
|
|
|
|
if (image->dataset->indexing_result.size() > image->number) {
|
|
if (image->dataset->indexing_result[image->number] != 0)
|
|
text = QString("<span style=\"color: green;\"><b>Lattice found</b></span>");
|
|
else
|
|
text = QString("<span style=\"color: red;\"><b>No lattice</b></span>");
|
|
|
|
indexed->setText(text);
|
|
} else {
|
|
indexed->setText("N/A");
|
|
}
|
|
|
|
if (image->roi && image->roi->pixels > 0) {
|
|
text = QString("<b>%1</b>").arg(image->roi->sum);
|
|
roi_sum->setText(text);
|
|
|
|
auto roi_npixel = static_cast<double>(image->roi->pixels);
|
|
double roi_mean_val = static_cast<double>(image->roi->sum) / roi_npixel;
|
|
text = QString("<b>%1</b>").arg(QString::number(roi_mean_val, 'f', 3));
|
|
roi_mean->setText(text);
|
|
|
|
double variance = static_cast<double>(image->roi->sum_square) / roi_npixel - roi_mean_val * roi_mean_val;
|
|
text = QString("<b>%1</b>").arg(QString::number(sqrt(variance), 'f', 3));
|
|
roi_stddev->setText(text);
|
|
|
|
text = QString("<b>%1</b>").arg(image->roi->max_count);
|
|
roi_max->setText(text);
|
|
} else {
|
|
roi_sum->setText("N/A");
|
|
roi_mean->setText("N/A");
|
|
roi_stddev->setText("N/A");
|
|
roi_max->setText("N/A");
|
|
}
|
|
}
|