Tail: the cell e.s.d.s and the unmerged MTZ table beside the refinement; the refined difference and anomalous maps side by side
The cell e.s.d.s and the unmerged MTZ read only the integrated observations and the group, both final once the model has been read, and the refinement reads neither: both now start before the refinement instead of after it. In MakeMaps the difference map is made on its own thread while the anomalous map is made. Outputs identical (MTZ data, CIF/HKL/INS, refined model, maps, blobs, report minus provenance) on the thaumatin and cytochrome C live runs. Live path without the unmerged MTZ (as the broker runs it), step Refinement: thaumatin 2.76 -> 2.40 s, cytochrome C 1.99 -> 1.93 s. With the unmerged MTZ (CLI), Refinement + Writing files: 3.21 -> 2.67 s and 3.33 -> 2.80 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015CeEGgpKdfkCTJb3YNMJcu
This commit is contained in:
1 parent
067f3a7d7b
commit
7c49fefb54
2 files changed
+39
-24
No files matched your search
@@ -5,6 +5,7 @@
|
||||
|
||||
#include <algorithm>
|
||||
#include <chrono>
|
||||
#include <future>
|
||||
#include <map>
|
||||
#include <optional>
|
||||
#include <cmath>
|
||||
@@ -856,9 +857,12 @@ void MakeMaps(Context &ctx, const std::vector<MergedReflection> &merged, double
|
||||
diff.v.push_back({ctx.refl.hkl[m], std::polar(static_cast<float>(delfwt), static_cast<float>(phi))});
|
||||
}
|
||||
result.maps = maps;
|
||||
const std::array<int, 3> size = gemmi::get_size_for_hkl(diff, {{0, 0, 0}}, 3.0);
|
||||
result.difference_map = std::make_shared<gemmi::Grid<float>>(MapFromFPhi(gemmi::get_f_phi_on_grid<float>(diff, size, true)));
|
||||
result.difference_map_rms = gemmi::calculate_data_statistics(result.difference_map->data).rms;
|
||||
// The difference map beside the anomalous one below: neither reads the other.
|
||||
std::future<void> difference_map = std::async(std::launch::async, [&diff, &result] {
|
||||
const std::array<int, 3> size = gemmi::get_size_for_hkl(diff, {{0, 0, 0}}, 3.0);
|
||||
result.difference_map = std::make_shared<gemmi::Grid<float>>(MapFromFPhi(gemmi::get_f_phi_on_grid<float>(diff, size, true)));
|
||||
result.difference_map_rms = gemmi::calculate_data_statistics(result.difference_map->data).rms;
|
||||
});
|
||||
|
||||
// The anomalous difference map: F(+) - F(-) on the model's phase turned back by 90 degrees, read on the +
|
||||
// rows of an anomalous merge only (as model validation reads it).
|
||||
@@ -890,6 +894,7 @@ void MakeMaps(Context &ctx, const std::vector<MergedReflection> &merged, double
|
||||
result.anomalous_map_rms = gemmi::calculate_data_statistics(result.anomalous_map->data).rms;
|
||||
}
|
||||
}
|
||||
difference_map.get();
|
||||
}
|
||||
|
||||
// The engine for the model as it is now: on the GPU where it is wanted and takes the case within its budget,
|
||||
|
||||
Reference in new issue
Block a user