jfjoch_viewer: Grid scan 2D image has also 1/d^2 for resolution estimation plot
All checks were successful
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 12m3s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m57s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 12m58s
Build Packages / Generate python client (push) Successful in 16s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m10s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (ubuntu2204) (push) Successful in 13m14s
Build Packages / build:rpm (rocky8) (push) Successful in 13m24s
Build Packages / Build documentation (push) Successful in 33s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m6s
Build Packages / build:rpm (rocky9) (push) Successful in 14m15s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 6m58s
Build Packages / Unit tests (push) Successful in 50m2s
All checks were successful
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 12m3s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m57s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 12m58s
Build Packages / Generate python client (push) Successful in 16s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m10s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (ubuntu2204) (push) Successful in 13m14s
Build Packages / build:rpm (rocky8) (push) Successful in 13m24s
Build Packages / Build documentation (push) Successful in 33s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m6s
Build Packages / build:rpm (rocky9) (push) Successful in 14m15s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 6m58s
Build Packages / Unit tests (push) Successful in 50m2s
This commit is contained in:
@@ -107,6 +107,7 @@ void JFJochViewerDatasetInfo::UpdatePlot() {
|
||||
if (image)
|
||||
image_number = image->ImageData().number;
|
||||
|
||||
bool one_over_d2 = false;
|
||||
std::vector<float> data;
|
||||
if (val == 0)
|
||||
data = dataset->bkg_estimate;
|
||||
@@ -122,15 +123,16 @@ void JFJochViewerDatasetInfo::UpdatePlot() {
|
||||
data = dataset->indexing_result;
|
||||
else if (val == 6)
|
||||
data = dataset->profile_radius;
|
||||
else if (val == 7)
|
||||
else if (val == 7) {
|
||||
data = dataset->resolution_estimate;
|
||||
else if (val == 8)
|
||||
one_over_d2 = true;
|
||||
} else if (val == 8)
|
||||
data = dataset->b_factor;
|
||||
|
||||
chart_view->loadValues(data, image_number, val == 7);
|
||||
chart_view->loadValues(data, image_number, one_over_d2);
|
||||
if (dataset->experiment.GetGridScan()) {
|
||||
stack->setCurrentWidget(grid_scan_image);
|
||||
grid_scan_image->loadData(data, dataset->experiment.GetGridScan().value());
|
||||
grid_scan_image->loadData(data, dataset->experiment.GetGridScan().value(), one_over_d2);
|
||||
grid_button->setEnabled(true);
|
||||
grid_button->setChecked(true);
|
||||
} else {
|
||||
|
||||
@@ -242,14 +242,14 @@ void JFJochChartView::mouseMoveEvent(QMouseEvent *event) {
|
||||
if (m_yOneOverD) {
|
||||
if (std::isfinite(yv) && yv > 0.0) {
|
||||
const double d = 1.0 / std::sqrt(yv);
|
||||
text = QString("image = %1, d = %2 Å")
|
||||
text = QString("image = %1 d = %2 Å")
|
||||
.arg(idx)
|
||||
.arg(d, 0, 'f', 2);
|
||||
} else {
|
||||
text = QString("image = %1, no resolution estimate").arg(idx);
|
||||
}
|
||||
} else {
|
||||
text = QString("image = %1, value = %2")
|
||||
text = QString("image = %1 value = %2")
|
||||
.arg(idx)
|
||||
.arg(yv, 0, 'g', 6);
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ void JFJochGridScanImage::clear() {
|
||||
CalcROI();
|
||||
}
|
||||
|
||||
void JFJochGridScanImage::loadData(const std::vector<float> &data, const GridScanSettings &settings) {
|
||||
void JFJochGridScanImage::loadData(const std::vector<float> &data, const GridScanSettings &settings, bool in_one_over_d2) {
|
||||
if (data.empty()) {
|
||||
clear();
|
||||
return;
|
||||
@@ -30,6 +30,13 @@ void JFJochGridScanImage::loadData(const std::vector<float> &data, const GridSca
|
||||
|
||||
image_index = settings.Rearrange(indices, -1);
|
||||
|
||||
one_over_d2 = in_one_over_d2;
|
||||
if (one_over_d2) {
|
||||
for (int i = 0; i < image_fp.size(); i++)
|
||||
if (!std::isnan(image_fp[i]))
|
||||
image_fp[i] = 1.0f / (image_fp[i] * image_fp[i]);
|
||||
}
|
||||
|
||||
float minv = std::numeric_limits<float>::infinity();
|
||||
float maxv = -std::numeric_limits<float>::infinity();
|
||||
for (float v : image_fp) {
|
||||
@@ -75,12 +82,28 @@ void JFJochGridScanImage::mouseHover(QMouseEvent *event) {
|
||||
if (event->modifiers() & Qt::ShiftModifier)
|
||||
emit imageSelected(image_id);
|
||||
|
||||
emit writeStatusBar(QString("Image %1 y %2 y %3 value %4")
|
||||
.arg(image_id)
|
||||
.arg(x)
|
||||
.arg(y)
|
||||
.arg(QString::number(image_fp[idx], 'f', 3)),
|
||||
6000);
|
||||
if (one_over_d2) {
|
||||
if (std::isnan(image_fp[idx]))
|
||||
emit writeStatusBar(QString("Image %1 x %2 y %3 no resolution estimation")
|
||||
.arg(image_id)
|
||||
.arg(x)
|
||||
.arg(y),
|
||||
6000);
|
||||
else
|
||||
emit writeStatusBar(QString("Image %1 x %2 y %3 d = %4 Å")
|
||||
.arg(image_id)
|
||||
.arg(x)
|
||||
.arg(y)
|
||||
.arg(QString::number(1 / std::sqrt(image_fp[idx]), 'f', 2)),
|
||||
6000);
|
||||
} else {
|
||||
emit writeStatusBar(QString("Image %1 x %2 y %3 value %4")
|
||||
.arg(image_id)
|
||||
.arg(x)
|
||||
.arg(y)
|
||||
.arg(QString::number(image_fp[idx], 'f', 3)),
|
||||
6000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ class JFJochGridScanImage : public JFJochImage {
|
||||
std::vector<int64_t> image_index;
|
||||
int64_t current_image_W = -1;
|
||||
int64_t current_image_H = -1;
|
||||
bool one_over_d2 = false;
|
||||
|
||||
void mouseHover(QMouseEvent *event) override;
|
||||
void mouseDoubleClickEvent(QMouseEvent *event) override;
|
||||
@@ -27,7 +28,7 @@ signals:
|
||||
public:
|
||||
JFJochGridScanImage(QWidget *parent = nullptr);
|
||||
public slots:
|
||||
void loadData(const std::vector<float> &data, const GridScanSettings &settings);
|
||||
void loadData(const std::vector<float> &data, const GridScanSettings &settings, bool one_over_d2);
|
||||
void setImage(int64_t val);
|
||||
void clear();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user