From aa6f5f001783e0c85f78cd7b282ddefb3482b434 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Tue, 14 Apr 2026 16:04:53 +0200 Subject: [PATCH] Minor fixes to viewer/reader logic --- reader/JFJochHDF5Reader.cpp | 13 +++++-------- viewer/widgets/JFJochViewerROIResult.cpp | 9 +++++++-- viewer/widgets/JFJochViewerSidePanelChart.cpp | 9 +++++---- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/reader/JFJochHDF5Reader.cpp b/reader/JFJochHDF5Reader.cpp index ebf1c542..937320bc 100644 --- a/reader/JFJochHDF5Reader.cpp +++ b/reader/JFJochHDF5Reader.cpp @@ -80,9 +80,9 @@ void JFJochHDF5Reader::ReadVector(std::vector &v, std::string removeSuffix(const std::string& s, const std::string& suffix) { - if (s.rfind(suffix) == s.size() - suffix.size()) { + if (s.ends_with(suffix)) return s.substr(0, s.size() - suffix.size()); - } + return s; } @@ -106,7 +106,6 @@ void JFJochHDF5Reader::ReadFile(const std::string& filename) { dataset->arm_date = master_file->GetString("/entry/start_time"); - std::filesystem::path fsPath(filename); dataset->experiment.FilePrefix(dataset_name(filename)); // JFJochReader is always using int32_t @@ -130,8 +129,11 @@ void JFJochHDF5Reader::ReadFile(const std::string& filename) { images_per_file = number_of_images; + if (master_file->Exists("/entry/instrument/detector/detectorSpecific/data_collection_efficiency_image")) dataset->efficiency = master_file->ReadVector( "/entry/instrument/detector/detectorSpecific/data_collection_efficiency_image"); + else + dataset->efficiency = std::vector(number_of_images, 1.0); if (master_file->Exists("/entry/roi")) dataset->roi = master_file->FindLeafs("/entry/roi"); @@ -322,8 +324,6 @@ void JFJochHDF5Reader::ReadFile(const std::string& filename) { dataset->experiment.PoniRot1_rad(master_file->GetOptFloat("/entry/instrument/detector/transformations/rot1").value_or(0.0)); dataset->experiment.PoniRot2_rad(master_file->GetOptFloat("/entry/instrument/detector/transformations/rot2").value_or(0.0)); dataset->experiment.PoniRot3_rad(master_file->GetOptFloat("/entry/instrument/detector/transformations/rot3").value_or(0.0)); - if (master_file->Exists("/entry/instrument/source")) - dataset->experiment.RingCurrent_mA(master_file->GetOptFloat("/entry/instrument/source/current")); dataset->experiment.SampleTemperature_K(master_file->GetOptFloat("/entry/sample/temperature")); dataset->experiment.BeamX_pxl(master_file->GetFloat("/entry/instrument/detector/beam_center_x")); @@ -765,9 +765,6 @@ std::optional JFJochHDF5Reader::ReadAxis(HDF5Object *file, const double start = angle[0]; double incr = angle[1] - angle[0]; - HDF5DataSet dataset_end(*file, dname + "_end"); - std::vector angle_end; - if (dataset.ReadAttrStr("transformation_type") != "rotation") return {}; diff --git a/viewer/widgets/JFJochViewerROIResult.cpp b/viewer/widgets/JFJochViewerROIResult.cpp index 9c91297d..d5f766e4 100644 --- a/viewer/widgets/JFJochViewerROIResult.cpp +++ b/viewer/widgets/JFJochViewerROIResult.cpp @@ -47,8 +47,13 @@ void JFJochViewerROIResult::SetROIResult(ROIMessage roi) { roi_max->setText(QString("Max %1").arg(roi.max_count)); roi_npixel->setText(QString("Valid %1").arg(roi.pixels)); roi_masked->setText(QString("Masked %1").arg(roi.pixels_masked)); - roi_x->setText(QString("x: %1").arg(static_cast(roi.x_weighted) / roi.sum)); - roi_y->setText(QString("y: %1").arg(static_cast(roi.y_weighted) / roi.sum)); + if (roi.sum == 0) { + roi_x->setText(QString("x: N/A")); + roi_y->setText(QString("y: N/A")); + } else { + roi_x->setText(QString("x: %1").arg(static_cast(roi.x_weighted) / roi.sum)); + roi_y->setText(QString("y: %1").arg(static_cast(roi.y_weighted) / roi.sum)); + } label_1->setText(QString("Pixel count")); label_2->setText(QString("Center of mass")); } else { diff --git a/viewer/widgets/JFJochViewerSidePanelChart.cpp b/viewer/widgets/JFJochViewerSidePanelChart.cpp index 6e1ccb36..ed3cea47 100644 --- a/viewer/widgets/JFJochViewerSidePanelChart.cpp +++ b/viewer/widgets/JFJochViewerSidePanelChart.cpp @@ -24,6 +24,10 @@ JFJochViewerSidePanelChart::JFJochViewerSidePanelChart(QWidget *parent) : QWidge layout->addWidget(azint_plot); // index 0 setLayout(layout); + connect(azint_plot, &JFJochSimpleChartView::writeStatusBar, + [&](QString string, int timeout_ms) { + emit writeStatusBar(string, timeout_ms); + }); } void JFJochViewerSidePanelChart::comboBoxSelected(int val) { @@ -73,10 +77,7 @@ void JFJochViewerSidePanelChart::redrawPlot() { break; } } - connect(azint_plot, &JFJochSimpleChartView::writeStatusBar, - [&](QString string, int timeout_ms) { - emit writeStatusBar(string, timeout_ms); - }); + } void JFJochViewerSidePanelChart::loadImage(std::shared_ptr in_image) {