v1.0.0-rc.82

This commit is contained in:
2025-09-22 19:49:39 +02:00
parent c218661553
commit c0bd8e1215
156 changed files with 259 additions and 228 deletions
+28 -50
View File
@@ -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,16 +39,18 @@ 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();
current_summation = 1;
current_file = filename;
}
UpdateAzint_in(dataset.get());
curr_experiment = dataset->experiment;
curr_experiment.ImportIndexingSettings(indexing_settings);
UpdateAzint_i(dataset.get());
emit datasetLoaded(dataset);
auto end = std::chrono::high_resolution_clock::now();
@@ -66,7 +69,7 @@ void JFJochImageReadingWorker::CloseFile() {
if (http_mode)
http_reader.Close();
else
reader.Close();
file_reader.Close();
current_image_ptr.reset();
current_image.reset();
@@ -84,19 +87,17 @@ void JFJochImageReadingWorker::LoadImage(int64_t image_number, int64_t summation
LoadImage_i(image_number, summation);
}
void JFJochImageReadingWorker::AnalyzeImage_i() {
void JFJochImageReadingWorker::CalcROI_i() {
if (current_image_ptr) {
if (roi)
current_image_ptr->CalcROI(roi.get());
}
}
void JFJochImageReadingWorker::UpdateAzint_in(const JFJochReaderDataset *dataset) {
void JFJochImageReadingWorker::UpdateAzint_i(const JFJochReaderDataset *dataset) {
if (dataset) {
azint_mapping = std::make_unique<AzimuthalIntegration>(dataset->experiment,
dataset->pixel_mask);
image_analysis = std::make_unique<ImageAnalysisCPU>(dataset->experiment,
*azint_mapping, dataset->pixel_mask);
azint_mapping = std::make_unique<AzimuthalIntegration>(curr_experiment, dataset->pixel_mask);
image_analysis = std::make_unique<ImageAnalysisCPU>(curr_experiment, *azint_mapping, dataset->pixel_mask);
image_analysis->SetIndexer(indexing.get());
}
}
@@ -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) {
@@ -131,7 +132,7 @@ void JFJochImageReadingWorker::LoadImage_i(int64_t image_number, int64_t summati
auto end = std::chrono::high_resolution_clock::now();
AnalyzeImage_i();
CalcROI_i();
auto end_analysis = std::chrono::high_resolution_clock::now();
@@ -180,14 +181,17 @@ 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());
curr_experiment = dataset->experiment;
curr_experiment.ImportIndexingSettings(indexing_settings);
UpdateAzint_i(dataset.get());
emit datasetLoaded(dataset);
current_image_ptr = std::make_shared<JFJochReaderImage>(current_image_ptr->ImageData(), dataset);
AnalyzeImage_i();
CalcROI_i();
emit imageLoaded(current_image_ptr);
}
@@ -204,6 +208,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();
@@ -226,35 +231,6 @@ void JFJochImageReadingWorker::Analyze() {
ReanalyzeImage_i();
}
void JFJochImageReadingWorker::FindSpots() {
QMutexLocker locker(&m);
if (!current_image_ptr || !azint_mapping)
return;
ImageSpotFinder finder(*azint_mapping);
std::shared_ptr<JFJochReaderImage> new_image = std::make_shared<JFJochReaderImage>(*current_image_ptr);
auto spots = finder.Run(new_image->Image().data(), spot_finding_settings);
std::vector<SpotToSave> spots_out;
auto geom = new_image->Dataset().experiment.GetDiffractionGeometry();
for (const auto &spot: spots)
spots_out.push_back(spot.Export(geom));
CountSpots(new_image->ImageData(), spots_out, spot_finding_settings.cutoff_spot_count_low_res);
new_image->ImageData().spots.clear();
FilterSpotsByCount(spots_out, 1000);
MarkIceRings(spots_out, 0.02);
new_image->ImageData().spots = spots_out;
current_image_ptr = new_image;
emit imageLoaded(new_image);
}
void JFJochImageReadingWorker::FindCenter() {
QMutexLocker locker(&m);
if (!current_image_ptr)
@@ -290,11 +266,13 @@ 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());
indexing_settings.IndexIceRings(indexing.GetIndexIceRings());
indexing_settings.UnitCellDistTolerance(indexing.GetUnitCellDistTolerance());
curr_experiment.ImportIndexingSettings(indexing_settings);
if (reanalyze)
ReanalyzeImage_i();