Add deep learning resolution estimation model from Stanford

This commit is contained in:
2024-02-08 20:15:29 +01:00
parent 1b4ab88f54
commit 8dcecb9685
49 changed files with 650 additions and 194 deletions

View File

@@ -33,12 +33,16 @@ HDF5DataFile::~HDF5DataFile() {
if (data_file) {
HDF5Group group_exp(*data_file, "/entry/jungfrau");
group_exp.NXClass("NXcollection");
group_exp.SaveVector("info", jf_info);
group_exp.SaveVector("timestamp", timestamp);
group_exp.SaveVector("storage_cell", storage_cell);
group_exp.SaveVector("exptime", exptime);
group_exp.SaveVector("receiver_aq_dev_delay", receiver_aq_dev_delay);
data_file->SaveVector("/entry/result/strong_pixel_count", strong_pixel_count);
group_exp.SaveVector("receiverAqDevDelay", receiver_aq_dev_delay);
data_file->SaveVector("/entry/result/strongPixelCount", strong_pixel_count);
if (!resolution_estimation.empty())
data_file->SaveVector("/entry/result/resolutionEstimation", resolution_estimation);
}
}
@@ -58,21 +62,18 @@ void HDF5DataFile::CreateFile() {
data_set_indexed_lattice = std::make_unique<HDF5DataSet>(*data_file, "/entry/result/latticeIndexed");
if (!rad_int_bin_to_q.empty())
data_set_az_int = std::make_unique<HDF5DataSet>(*data_file, "/entry/result/azimIntegration");
jf_info.resize(1);
receiver_aq_dev_delay.resize(1);
timestamp.resize(1);
storage_cell.resize(1);
exptime.resize(1);
strong_pixel_count.resize(1);
}
void HDF5DataFile::Write(const DataMessage &msg, uint64_t image_number) {
std::lock_guard<std::mutex> lock(hdf5_mutex);
if (!data_file)
CreateFile();
bool new_file = false;
if (image_number > max_image_number) {
if (!data_file) {
CreateFile();
new_file = true;
}
if (new_file || (static_cast<int64_t>(image_number) > max_image_number)) {
max_image_number = image_number;
data_set->SetExtent({max_image_number+1, ypixel, xpixel});
data_set_spot_x->SetExtent({max_image_number+1, max_spots});
@@ -93,6 +94,9 @@ void HDF5DataFile::Write(const DataMessage &msg, uint64_t image_number) {
timestamp.resize(max_image_number + 1);
exptime.resize(max_image_number + 1);
storage_cell.resize(max_image_number + 1);
if (msg.resolution_estimation)
resolution_estimation.resize(max_image_number + 1);
}
nimages++;
@@ -128,6 +132,9 @@ void HDF5DataFile::Write(const DataMessage &msg, uint64_t image_number) {
storage_cell[image_number] = msg.storage_cell;
exptime[image_number] = msg.exptime;
if (msg.resolution_estimation)
resolution_estimation[image_number] = msg.resolution_estimation.value();
if (!msg.az_int_profile.empty() && (msg.az_int_profile.size() == rad_int_bin_to_q.size()))
data_set_az_int->WriteVec(msg.az_int_profile, {image_number, 0}, {1, rad_int_bin_to_q.size()});