Clean-up
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 14m43s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 16m6s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 16m10s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 17m19s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 17m18s
Build Packages / build:rpm (rocky8) (push) Successful in 17m54s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 18m7s
Build Packages / XDS test (durin plugin) (push) Successful in 10m21s
Build Packages / Generate python client (push) Successful in 38s
Build Packages / Build documentation (push) Successful in 1m0s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2204) (push) Successful in 13m23s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 13m33s
Build Packages / XDS test (neggia plugin) (push) Successful in 11m40s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 12m17s
Build Packages / build:rpm (rocky9) (push) Successful in 16m19s
Build Packages / DIALS test (push) Successful in 15m46s
Build Packages / Unit tests (push) Successful in 1h9m26s

This commit is contained in:
2026-05-11 13:25:02 +02:00
parent 0cf801c2d2
commit b1fe201047
2 changed files with 25 additions and 9 deletions
+1 -1
View File
@@ -293,7 +293,7 @@ MergeResult MergeReflections(const std::vector<std::vector<Reflection> > &observ
void MergeStatistics::Print(Logger &logger) const {
logger.Info("");
logger.Info(" {:>8s} {:>8s} {:>8s} {:>8s}", "d_min", "N_obs", "N_uniq", "<I/sig>");
logger.Info(" {:->8s} {:->8s} {:->8s} {:->8s}", "", "", "", "", "", "");
logger.Info(" {:->8s} {:->8s} {:->8s} {:->8s}", "", "", "", "");
for (const auto &sh: shells) {
if (sh.unique_reflections == 0)
continue;
+24 -8
View File
@@ -58,11 +58,11 @@ namespace {
return false;
const T half_wedge = wedge[0] / T(2.0);
const T arg_plus = T(delta_phi_deg + half_wedge) * T(c1) / mosaicity[0];
const T arg_minus = T(delta_phi_deg - half_wedge) * T(c1) / mosaicity[0];
const T arg_plus = (T(delta_phi_deg) + half_wedge) * T(c1) / mosaicity[0];
const T arg_minus = (T(delta_phi_deg) - half_wedge) * T(c1) / mosaicity[0];
const T partiality = (ceres::erf(arg_plus) - ceres::erf(arg_minus)) / T(2.0);
const T B_term = ceres::exp(B[0] * T(b_resolution_coeff));
residual[0] = (G[0] * partiality * B_term * T(lp) * Itrue - T(Iobs)) * T(weight);
residual[0] = (G[0] * partiality * B_term * T(lp) * T(Itrue) - T(Iobs)) * T(weight);
return true;
}
@@ -126,7 +126,10 @@ ScaleOnTheFlyResult ScaleOnTheFly::Scale(std::vector<Reflection> &reflections, s
};
if (model == PartialityModel::Rotation) {
result.mos = mosaicity_deg.value_or(s.GetDefaultMosaicity());
if (mosaicity_deg && std::isfinite(*mosaicity_deg) && *mosaicity_deg > 0.0)
result.mos = *mosaicity_deg;
else
result.mos = s.GetDefaultMosaicity();
result.wedge = rot_wedge_deg.value_or(0.0);
} else {
result.mos = NAN;
@@ -189,7 +192,7 @@ ScaleOnTheFlyResult ScaleOnTheFly::Scale(std::vector<Reflection> &reflections, s
}
if (model == PartialityModel::Rotation) {
if (s.GetRefineWedge()) {
if (refine_rot_wedge) {
problem.SetParameterLowerBound(&result.wedge, 0, s.GetMinWedge());
problem.SetParameterUpperBound(&result.wedge, 0, s.GetMaxWedge());
} else {
@@ -223,7 +226,14 @@ ScaleOnTheFlyResult ScaleOnTheFly::Scale(std::vector<Reflection> &reflections, s
// For fixed partiality there is no need to change anything
break;
}
r.scaling_correction = static_cast<float>(r.rlp / (B_term * r.partiality * result.G));
const double denom = B_term * r.partiality * result.G;
if (std::isfinite(r.rlp) &&
std::isfinite(denom) &&
denom > 0.0) {
r.scaling_correction = static_cast<float>(r.rlp / denom);
} else {
r.scaling_correction = NAN;
}
}
auto end = std::chrono::steady_clock::now();
@@ -242,7 +252,10 @@ ScalingResult ScaleOnTheFly::Scale(std::vector<std::vector<Reflection> > &reflec
if (nthreads <= 1) {
for (int i = 0; i < reflections.size(); i++) {
std::optional<double> mos_val;
if (model == PartialityModel::Rotation && mosaicity.size() > i)
if (model == PartialityModel::Rotation
&& mosaicity.size() > i
&& std::isfinite(mosaicity[i])
&& mosaicity[i] > 0.0)
mos_val = mosaicity[i];
auto local_result = Scale(reflections[i], mos_val);
@@ -262,7 +275,10 @@ ScalingResult ScaleOnTheFly::Scale(std::vector<std::vector<Reflection> > &reflec
size_t i = curr_image.fetch_add(1);
while (i < reflections.size()) {
std::optional<double> mos_val;
if (model == PartialityModel::Rotation && mosaicity.size() > i)
if (model == PartialityModel::Rotation
&& mosaicity.size() > i
&& std::isfinite(mosaicity[i])
&& mosaicity[i] > 0.0)
mos_val = mosaicity[i];
auto local_result = Scale(reflections[i], mos_val);