rugnux: advice on the next collection keeps the two geometry rules only
Build Packages / Create release (push) Successful in 8s
Build Packages / Build documentation (push) Successful in 48s
Build Packages / build:portable:macos-arm64:nocuda (push) Successful in 5m24s
Build Packages / build:rugnux:linux-aarch64:cuda (push) Successful in 11m16s
Build Packages / build:portable:linux-x86_64:nocuda (push) Successful in 18m59s
Build Packages / build:portable:linux-x86_64:cuda (push) Successful in 23m24s
Build Packages / build:portable:windows-x86_64:nocuda (push) Successful in 24m58s
Build Packages / build:jfjoch:ubuntu2204:nocuda (push) Successful in 26m59s
Build Packages / build:portable:windows-x86_64:cuda (push) Successful in 28m57s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 30m44s
Build Packages / build:jfjoch:rocky8:nocuda (push) Successful in 32m15s
Build Packages / build:jfjoch:rocky9:nocuda (push) Successful in 33m19s
Build Packages / build:jfjoch:ubuntu2404:nocuda (push) Successful in 28m24s
Build Packages / Generate python client (push) Successful in 33s
Build Packages / build:jfjoch:rocky8:cuda-sls9 (push) Successful in 31m10s
Build Packages / build:jfjoch:rocky9:cuda-sls9 (push) Successful in 34m28s
Build Packages / build:jfjoch:ubuntu2204:cuda (push) Successful in 26m30s
Build Packages / build:jfjoch:rocky9:cuda (push) Successful in 33m44s
Build Packages / build:jfjoch:rocky8:cuda (push) Successful in 33m9s
Build Packages / build:jfjoch:ubuntu2404:cuda (push) Successful in 31m30s
Build Packages / Unit tests (push) Successful in 1h47m14s
Build Packages / Validation Battery (push) Failing after 1h21m28s
Build Packages / Create release (push) Successful in 8s
Build Packages / Build documentation (push) Successful in 48s
Build Packages / build:portable:macos-arm64:nocuda (push) Successful in 5m24s
Build Packages / build:rugnux:linux-aarch64:cuda (push) Successful in 11m16s
Build Packages / build:portable:linux-x86_64:nocuda (push) Successful in 18m59s
Build Packages / build:portable:linux-x86_64:cuda (push) Successful in 23m24s
Build Packages / build:portable:windows-x86_64:nocuda (push) Successful in 24m58s
Build Packages / build:jfjoch:ubuntu2204:nocuda (push) Successful in 26m59s
Build Packages / build:portable:windows-x86_64:cuda (push) Successful in 28m57s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 30m44s
Build Packages / build:jfjoch:rocky8:nocuda (push) Successful in 32m15s
Build Packages / build:jfjoch:rocky9:nocuda (push) Successful in 33m19s
Build Packages / build:jfjoch:ubuntu2404:nocuda (push) Successful in 28m24s
Build Packages / Generate python client (push) Successful in 33s
Build Packages / build:jfjoch:rocky8:cuda-sls9 (push) Successful in 31m10s
Build Packages / build:jfjoch:rocky9:cuda-sls9 (push) Successful in 34m28s
Build Packages / build:jfjoch:ubuntu2204:cuda (push) Successful in 26m30s
Build Packages / build:jfjoch:rocky9:cuda (push) Successful in 33m44s
Build Packages / build:jfjoch:rocky8:cuda (push) Successful in 33m9s
Build Packages / build:jfjoch:ubuntu2404:cuda (push) Successful in 31m30s
Build Packages / Unit tests (push) Successful in 1h47m14s
Build Packages / Validation Battery (push) Failing after 1h21m28s
The dose rule (REDUCE_DOSE) is left out of the merge: it reads a threshold on the relative B, and the truncated-sweep witness found it wrong on one fired set in four. The two coverage rules are exact geometry and their forecasts matched the measured gains on every set checked. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HVeDQsU5a8AJUdJPgWevAK
This commit is contained in:
1 parent
d53e9a8fdd
commit
340e02072a
3 files changed
+1
-33
No files matched your search
@@ -482,10 +482,7 @@ comparison is local in resolution, where xtriage's is a z-score of a shell again
|
||||
|
||||
**Advice on the next collection** - the rotation a sweep needs and the blind region about the spindle
|
||||
that a second, tilted sweep recovers are the data-collection geometry set out by Z. Dauter,
|
||||
"Data-collection strategies" (1999), Acta Cryst. D55, 1703-1717 (DOI not verified here). Reading the dose
|
||||
a sweep was past its optimum by from its relative B rests on B growing linearly with dose, as measured by
|
||||
S. Kmetko, N. S. Husseini, M. Naides, Y. Kalinin and R. E. Thorne, "Quantifying X-ray radiation damage in
|
||||
protein crystals at cryogenic temperatures" (2006), Acta Cryst. D62, 1030-1038 (DOI not verified here).
|
||||
"Data-collection strategies" (1999), Acta Cryst. D55, 1703-1717 (DOI not verified here).
|
||||
|
||||
### Physical corrections and calibration
|
||||
|
||||
|
||||
@@ -357,15 +357,6 @@ sweeps only: a joint merge of several sweeps gets none.
|
||||
the first that leaves under 1 % of the reciprocal space to the signal limit blind to both sweeps. It
|
||||
counts no symmetry, so it is enough for any point group, and it is the same in every direction of
|
||||
tilt (kappa, chi, or a re-mount).
|
||||
- **`REDUCE_DOSE`** - the sweep was damage-limited. Counting against background, with the relative B
|
||||
growing linearly with dose, the merged I/sigma at resolution d grows with dose as
|
||||
(1 - exp(-x)) / sqrt(x), x = dB / (2 d^2), which peaks at dB = 2.5 d^2. Advised when
|
||||
`RADIATION_DAMAGE_RELATIVE_B=` reached three times that at `FITTED_RESOLUTION=`, where the same curve
|
||||
has lost a fifth of the I/sigma at d; **`ADVICE_REDUCE_DOSE_FACTOR=`** is the ratio, the factor that
|
||||
brings the whole sweep to the optimum (attenuation, a shorter exposure, or the dose spread over more
|
||||
crystal). It is relative only: no absolute dose is modelled. Checked on the battery by merging only the
|
||||
first 1/factor of each sweep: where the rule fires, that part resolves as far as the whole sweep on
|
||||
most sets, while on undamaged sweeps a third of the data loses resolution.
|
||||
|
||||
## Several sweeps merged as one
|
||||
|
||||
|
||||
@@ -3027,26 +3027,6 @@ ReportDocument BuildReportDocument(const std::string &output_prefix,
|
||||
"{:.1f}% of the unique reflections, which no length of sweep about this spindle measures",
|
||||
tilt, 100.0 * *result.spindle_lost_unique_fraction));
|
||||
}
|
||||
// Dose: the relative B grew well past the dose at which the merged I/sigma at the fitted
|
||||
// resolution d is largest. Counting against background, with B growing linearly in dose,
|
||||
// I/sigma accumulated to a dose goes as (1 - exp(-x)) / sqrt(x) with x = dB / (2 d^2), which
|
||||
// peaks at x = 1.26, i.e. dB = 2.5 d^2. Advised at three times that, where the same curve
|
||||
// has lost a fifth of I/sigma at d; the factor brings the whole sweep to the optimum.
|
||||
// B linear in dose: Kmetko et al. (2006) Acta Cryst. D62, 1030-1038
|
||||
const double db = result.merge_statistics.radiation_damage_delta_b;
|
||||
if (fitted_resolution && std::isfinite(db)) {
|
||||
const double factor = db / (2.5 * *fitted_resolution * *fitted_resolution);
|
||||
if (factor >= 3.0) {
|
||||
Add(s, KeyReal("ADVICE_REDUCE_DOSE_FACTOR", factor, "{:.1f}"));
|
||||
const auto t = experiment.GetAttenuatorTransmission();
|
||||
advice.emplace_back("REDUCE_DOSE", fmt::format(
|
||||
"reduce the dose per degree {:.1f}x{}, or spread it over more crystal: the relative B "
|
||||
"grew by {:.0f} A^2 over the sweep, {:.1f}x the 2.5 d^2 at which the I/sigma at the "
|
||||
"{:.2f} A limit stops growing with dose",
|
||||
factor, t ? fmt::format(" (transmission {:.3g} -> {:.2g})", *t, *t / factor) : "",
|
||||
db, factor, *fitted_resolution));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ---- anisotropy
|
||||
|
||||
Reference in new issue
Block a user