jfjoch_viewer: There is central place for default DiffractionExperiment in both reader classes
This commit is contained in:
@@ -52,8 +52,7 @@ void JFJochHDF5Reader::ReadFile(const std::string& filename) {
|
||||
try {
|
||||
auto dataset = std::make_shared<JFJochReaderDataset>();
|
||||
master_file = std::make_unique<HDF5ReadOnlyFile>(filename);
|
||||
dataset->experiment.DetectIceRings(true);
|
||||
dataset->experiment.IndexingAlgorithm(IndexingAlgorithmEnum::Auto);
|
||||
dataset->experiment = default_experiment;
|
||||
|
||||
std::filesystem::path fsPath(filename);
|
||||
dataset->experiment.FilePrefix(dataset_name(filename));
|
||||
|
||||
@@ -57,8 +57,7 @@ std::shared_ptr<JFJochReaderDataset> JFJochHttpReader::UpdateDataset_i() {
|
||||
return {};
|
||||
|
||||
auto dataset = std::make_shared<JFJochReaderDataset>();
|
||||
dataset->experiment.DetectIceRings(true);
|
||||
dataset->experiment.IndexingAlgorithm(IndexingAlgorithmEnum::Auto);
|
||||
dataset->experiment = default_experiment;
|
||||
|
||||
// JFJochReader is always using int32_t
|
||||
dataset->experiment.BitDepthImage(32);
|
||||
|
||||
@@ -4,6 +4,12 @@
|
||||
#include "JFJochReader.h"
|
||||
#include <future>
|
||||
|
||||
JFJochReader &JFJochReader::Experiment(const DiffractionExperiment &experiment) {
|
||||
std::unique_lock ul(m);
|
||||
default_experiment = experiment;
|
||||
return *this;
|
||||
}
|
||||
|
||||
void JFJochReader::SummationThread(int64_t image0, int64_t n_image, int64_t image_jump, JFJochReaderImage &image) {
|
||||
std::vector<uint8_t> buffer;
|
||||
DataMessage msg;
|
||||
|
||||
@@ -11,14 +11,15 @@
|
||||
#include "../common/JFJochMessages.h"
|
||||
#include "../common/Plot.h"
|
||||
#include "../common/ROIBox.h"
|
||||
#include "../common/DiffractionExperiment.h"
|
||||
#include "JFJochReaderDataset.h"
|
||||
#include "JFJochReaderImage.h"
|
||||
|
||||
class JFJochReader {
|
||||
private:
|
||||
mutable std::mutex m;
|
||||
std::shared_ptr<JFJochReaderDataset> dataset;
|
||||
|
||||
|
||||
virtual bool LoadImage_i(std::shared_ptr<JFJochReaderDataset> &dataset,
|
||||
DataMessage& message,
|
||||
std::vector<uint8_t> &buffer,
|
||||
@@ -32,9 +33,12 @@ private:
|
||||
JFJochReaderImage &image);
|
||||
protected:
|
||||
void SetStartMessage(const std::shared_ptr<JFJochReaderDataset> &val);
|
||||
DiffractionExperiment default_experiment;
|
||||
public:
|
||||
virtual ~JFJochReader() = default;
|
||||
|
||||
JFJochReader& Experiment(const DiffractionExperiment& experiment);
|
||||
|
||||
std::shared_ptr<const JFJochReaderDataset> GetDataset() const;
|
||||
[[nodiscard]] virtual uint64_t GetNumberOfImages() const = 0;
|
||||
|
||||
|
||||
@@ -10,11 +10,12 @@
|
||||
#include <QMutexLocker>
|
||||
|
||||
JFJochImageReadingWorker::JFJochImageReadingWorker(const SpotFindingSettings& settings,
|
||||
const IndexingSettings& in_indexing_settings,
|
||||
QObject *parent) : QObject(parent) {
|
||||
spot_finding_settings = settings;
|
||||
indexing_settings = in_indexing_settings;
|
||||
const DiffractionExperiment& experiment, QObject *parent) : QObject(parent), indexing_settings(experiment.GetIndexingSettings()) {
|
||||
spot_finding_settings = settings;;
|
||||
|
||||
indexing = std::make_unique<IndexerThreadPool>(indexing_settings);
|
||||
http_reader.Experiment(experiment);
|
||||
file_reader.Experiment(experiment);
|
||||
}
|
||||
|
||||
void JFJochImageReadingWorker::LoadFile(const QString &filename, qint64 image_number, qint64 summation) {
|
||||
@@ -38,9 +39,9 @@ void JFJochImageReadingWorker::LoadFile(const QString &filename, qint64 image_nu
|
||||
emit setToolbarMode(JFJochViewerToolbar::ToolbarMode::None);
|
||||
} else {
|
||||
http_mode = false;
|
||||
reader.ReadFile(filename.toStdString());
|
||||
total_images = reader.GetNumberOfImages();
|
||||
dataset = reader.GetDataset();
|
||||
file_reader.ReadFile(filename.toStdString());
|
||||
total_images = file_reader.GetNumberOfImages();
|
||||
dataset = file_reader.GetDataset();
|
||||
emit setToolbarMode(JFJochViewerToolbar::ToolbarMode::None);
|
||||
}
|
||||
current_image.reset();
|
||||
@@ -66,7 +67,7 @@ void JFJochImageReadingWorker::CloseFile() {
|
||||
if (http_mode)
|
||||
http_reader.Close();
|
||||
else
|
||||
reader.Close();
|
||||
file_reader.Close();
|
||||
|
||||
current_image_ptr.reset();
|
||||
current_image.reset();
|
||||
@@ -118,7 +119,7 @@ void JFJochImageReadingWorker::LoadImage_i(int64_t image_number, int64_t summati
|
||||
} else {
|
||||
if (image_number < 0)
|
||||
return;
|
||||
current_image_ptr = reader.LoadImage(image_number, summation);
|
||||
current_image_ptr = file_reader.LoadImage(image_number, summation);
|
||||
}
|
||||
|
||||
if (!current_image_ptr) {
|
||||
@@ -180,8 +181,8 @@ void JFJochImageReadingWorker::UpdateDataset_i(const DiffractionExperiment &expe
|
||||
http_reader.UpdateGeomMetadata(experiment);
|
||||
dataset = http_reader.GetDataset();
|
||||
} else {
|
||||
reader.UpdateGeomMetadata(experiment);
|
||||
dataset = reader.GetDataset();
|
||||
file_reader.UpdateGeomMetadata(experiment);
|
||||
dataset = file_reader.GetDataset();
|
||||
}
|
||||
UpdateAzint_in(dataset.get());
|
||||
emit datasetLoaded(dataset);
|
||||
@@ -204,6 +205,7 @@ void JFJochImageReadingWorker::ReanalyzeImage_i() {
|
||||
auto new_image = std::make_shared<JFJochReaderImage>(*current_image_ptr);
|
||||
auto new_image_dataset = new_image->CreateMutableDataset();
|
||||
|
||||
new_image_dataset->experiment.ImportIndexingSettings(indexing_settings);
|
||||
new_image_dataset->az_int_bin_to_phi = azint_mapping->GetBinToPhi();
|
||||
new_image_dataset->az_int_bin_to_q = azint_mapping->GetBinToQ();
|
||||
new_image_dataset->azimuthal_bins = azint_mapping->GetAzimuthalBinCount();
|
||||
@@ -290,6 +292,7 @@ void JFJochImageReadingWorker::FindCenter() {
|
||||
void JFJochImageReadingWorker::UpdateSpotFindingSettings(const SpotFindingSettings &settings, const IndexingSettings &indexing, bool reanalyze) {
|
||||
QMutexLocker locker(&m);
|
||||
spot_finding_settings = settings;
|
||||
|
||||
// "local" indexing settings
|
||||
indexing_settings.Tolerance(indexing.GetTolerance());
|
||||
indexing_settings.ViableCellMinSpots(indexing.GetViableCellMinSpots());
|
||||
|
||||
@@ -29,7 +29,7 @@ class JFJochImageReadingWorker : public QObject {
|
||||
mutable QMutex m;
|
||||
bool http_mode = false;
|
||||
|
||||
JFJochHDF5Reader reader;
|
||||
JFJochHDF5Reader file_reader;
|
||||
JFJochHttpReader http_reader;
|
||||
|
||||
QString current_file;
|
||||
@@ -63,7 +63,7 @@ signals:
|
||||
void setToolbarMode(JFJochViewerToolbar::ToolbarMode input);
|
||||
void setRings(const QVector<float> &v);
|
||||
public:
|
||||
JFJochImageReadingWorker(const SpotFindingSettings &settings, const IndexingSettings &indexing, QObject *parent = nullptr);
|
||||
JFJochImageReadingWorker(const SpotFindingSettings &settings, const DiffractionExperiment& experiment, QObject *parent = nullptr);
|
||||
~JFJochImageReadingWorker() override = default;
|
||||
public slots:
|
||||
void LoadFile(const QString &filename, qint64 image_number, qint64 summation);
|
||||
|
||||
@@ -32,13 +32,18 @@ JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString
|
||||
resize(1200, 1200);
|
||||
|
||||
SpotFindingSettings spot_finding_settings = DiffractionExperiment::DefaultDataProcessingSettings();
|
||||
IndexingSettings indexing_settings;
|
||||
|
||||
spot_finding_settings.high_resolution_limit = 0.5;
|
||||
spot_finding_settings.indexing = false;
|
||||
|
||||
IndexingSettings indexing_settings;
|
||||
indexing_settings.IndexingThreads(1);
|
||||
indexing_settings.Algorithm(IndexingAlgorithmEnum::Auto);
|
||||
|
||||
DiffractionExperiment experiment;
|
||||
experiment.ImportIndexingSettings(indexing_settings);
|
||||
experiment.DetectIceRings(true);
|
||||
|
||||
auto v_splitter = new QSplitter(this);
|
||||
setCentralWidget(v_splitter);
|
||||
v_splitter->setOrientation(Qt::Vertical);
|
||||
@@ -64,7 +69,7 @@ JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString
|
||||
dataset_info->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
|
||||
v_splitter->addWidget(dataset_info);
|
||||
|
||||
reading_worker = new JFJochImageReadingWorker(spot_finding_settings, indexing_settings);
|
||||
reading_worker = new JFJochImageReadingWorker(spot_finding_settings, experiment);
|
||||
reading_thread = new QThread(this);
|
||||
reading_worker->moveToThread(reading_thread);
|
||||
reading_thread->start();
|
||||
@@ -257,10 +262,6 @@ JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString
|
||||
connect(side_panel, &JFJochViewerSidePanel::highlightIceRings,
|
||||
viewer, &JFJochViewerImage::highlightIceRings);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (!file.isEmpty())
|
||||
LoadFile(file, 0, 1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user