[us-commits] [ehb54/ultrascan3] 711170: SAXS extrap-to-c0: faithful almerge hybrid (extrap...
emre brookes
noreply at github.com
Sat Jul 11 16:32:13 MDT 2026
Branch: refs/heads/ehb54-issue-920
Home: https://github.com/ehb54/ultrascan3
Commit: 71117052b048a7cb811e64ce91f1b73034a14eb3
https://github.com/ehb54/ultrascan3/commit/71117052b048a7cb811e64ce91f1b73034a14eb3
Author: ehb54 <brookes at uthscsa.edu>
Date: 2026-07-11 (Sat, 11 Jul 2026)
Changed paths:
M us_somo/develop/include/us_hydrodyn_saxs_iqq_extrap_c0_regplot.h
M us_somo/develop/include/us_saxs_util.h
M us_somo/develop/src/us_hydrodyn_saxs_iqq_extrap_c0.cpp
M us_somo/develop/src/us_hydrodyn_saxs_iqq_extrap_c0_regplot.cpp
M us_somo/develop/src/us_saxs_util_iqq.cpp
M us_somo/somo/doc/manual/somo/somo_saxs_extrap_c0.html
Log Message:
-----------
SAXS extrap-to-c0: faithful almerge hybrid (extrapolate low-q + copy ref)
Primus mode now follows the actual ATSAS almerge algorithm (Petoukhov
2012 Eq 1; Franke 2017) rather than the prior "merge everywhere", which
was only coincidentally right for weakly-interacting data and lost the
structure-factor removal for strongly-interacting samples.
Algorithm:
- scale each curve to the reference (highest-conc) by c_ref/c_i;
- at each q, weighted-linear-fit the scaled intensity vs concentration
-> c=0 intercept = infinite-dilution intensity;
- find the merging point where the extrapolation and the reference differ
only by noise, via a CORMAP longest-run p-value test;
- below the merging point use the extrapolation, at/above it copy the
reference curve (I and sd) verbatim.
A concentration scale (c_ref/c_i) is used rather than a data-driven
least-squares scale: on a simulated strong-concentration-dependence
series the LS scale is corrupted by the low-q structure factor and
recovers only ~85% of the known dilute limit, vs ~99% with c_ref/c_i.
The low-q extrapolation + high-q reference copy also eliminates the
negative-intensity / huge-error-bar artefact of the earlier per-q-all
extrapolation.
New: US_Saxs_Util::compute_p_value() -- pairwise CORMAP longest-run
p-value (numerically stable; matches saxsafold SAS::compute_p_value,
which was tested to match SOMO's cormap). Self-contained in us_saxs_util
so the SOMO-SAS module needs no HPLC/KIN window. Merge alpha is exposed
via the saxs_extrap_c0_pvalue_alpha gparam (default 0.01).
Regression pop-up: shows the per-q linear fit and, in Primus mode, marks
whether the current q's output is the extrapolated intercept or taken
from the reference. Manual updated.
Co-Authored-By: Claude Fable 5 <noreply at anthropic.com>
To unsubscribe from these emails, change your notification settings at https://github.com/ehb54/ultrascan3/settings/notifications
More information about the us-commits
mailing list