[us-commits] [ehb54/ultrascan3] d67f25: SOMO: robust automatic Guinier range search (autor...

emre brookes noreply at github.com
Thu Sep 24 13:58:11 MDT 2026


  Branch: refs/heads/somo-dev
  Home:   https://github.com/ehb54/ultrascan3
  Commit: d67f2528dc30e4ab2606d603a960bb978c599e9d
      https://github.com/ehb54/ultrascan3/commit/d67f2528dc30e4ab2606d603a960bb978c599e9d
  Author: Emre Brookes <emre.brookes at umontana.edu>
  Date:   2026-09-14 (Mon, 14 Sep 2026)

  Changed paths:
    M us_somo/develop/include/us_saxs_util.h
    A us_somo/develop/include/us_saxs_util_autorg.h
    M us_somo/develop/libus_somo.pro
    A us_somo/develop/src/us_saxs_util_autorg.cpp
    M us_somo/develop/src/us_saxs_util_pm.cpp
    M us_somo/develop/us_saxs_cmds_mpi/us_saxs_cmds_mpi.pro
    M us_somo/develop/us_saxs_cmds_mpi_cuda/us_saxs_cmds_mpi_cuda.pro
    M us_somo/develop/us_saxs_cmds_t/main.cpp
    M us_somo/develop/us_saxs_cmds_t/us_saxs_cmds_t.pro

  Log Message:
  -----------
  SOMO: robust automatic Guinier range search (autorg) core and headless CLI

New US_Saxs_Util::autorg() (us_saxs_util_autorg.cpp) with US_Autorg_Params /
US_Autorg_Result: cleans the curve, bounds the search by a preliminary Rg from
the longest valid low-q window, enumerates every window subject to minpts /
maxpts / q*Rg / Rg limits, slope significance and a minimum q*Rg span, scores
windows by a weighted geometric mean of reduced chi2, quadratic curvature,
q*Rg span, coverage (off by default), consistent-skip start penalty, forward
consistency over the q*Rg <= qrgmax region and consensus with the quality
weighted median Rg, then reports Rg and I(0) with SDs, the window, quality,
a low-q z-score with aggregation / repulsion flags and the Rg spread over the
top windows. Optional outlier rejection. Every parameter is settable.

read_iq_flexible() reads 2 or 3 numeric columns from any text file, skipping
non-numeric header / footer lines, and sorts unsorted q with a warning.

CLI: "us_saxs_cmds_t autorg [--json] [--key value ...] file ..." and the
"autorg" run type of "us_saxs_cmds_t json" (files [...] or inline q / i / e
arrays) returning one JSON object per curve.

Existing guinier_fit* routines are untouched.

Refs ehb54/ultrascan-tickets#1063

Co-Authored-By: Claude Fable 5.1 <noreply at anthropic.com>


  Commit: 84b654830742df5091f45de5622802856083935b
      https://github.com/ehb54/ultrascan3/commit/84b654830742df5091f45de5622802856083935b
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-09-14 (Mon, 14 Sep 2026)

  Changed paths:
    M us_somo/develop/src/us_saxs_util_autorg.cpp

  Log Message:
  -----------
  autorg: keep the q = 0 point for the rg type, emit params as JSON numbers

log( 0 ) times the zero power gave NaN and silently dropped q = 0; the
effective-parameter echo of the json run type now writes unquoted numbers.

Co-Authored-By: Claude Fable 5.1 <noreply at anthropic.com>


  Commit: c8ac15cdfa33c9be9df5f455a48f12f40ed5ec66
      https://github.com/ehb54/ultrascan3/commit/c8ac15cdfa33c9be9df5f455a48f12f40ed5ec66
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-09-14 (Mon, 14 Sep 2026)

  Changed paths:
    M us_somo/develop/include/us_hydrodyn_saxs.h
    M us_somo/develop/include/us_saxs_util_autorg.h
    M us_somo/develop/libus_somo.pro
    A us_somo/develop/src/us_hydrodyn_saxs_autorg.cpp
    M us_somo/develop/src/us_hydrodyn_script.cpp
    M us_somo/develop/src/us_saxs_util_autorg.cpp
    M us_somo/develop/us_saxs_cmds_t/main.cpp
    A us_somo/somo/doc/manual/somo/somo_autorg.html
    M us_somo/somo/doc/manual/somo/somo_saxs_options.html

  Log Message:
  -----------
  autorg: gui_script "sas load_iq" / "sas autorg", CSV output, manual page

sas load_iq <file> [<file> ...] loads curves into the SAS window without
scaling; sas autorg [csv <file>] [key value ...] runs the search on every
loaded curve, echoing the table to stdout and the editor and optionally a
CSV with all result fields. Unknown keys are rejected with the parameter
help. us_saxs_cmds_t autorg gains --csv. New manual page somo_autorg.html
(algorithm, parameters, the three entry points), linked from the Guinier
options page.

Refs ehb54/ultrascan-tickets#1063

Co-Authored-By: Claude Fable 5.1 <noreply at anthropic.com>


  Commit: 782641bd93d878b850131ac74576cee30f949c8f
      https://github.com/ehb54/ultrascan3/commit/782641bd93d878b850131ac74576cee30f949c8f
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-09-14 (Mon, 14 Sep 2026)

  Changed paths:
    A us_somo/develop/test/autorg/README.md
    A us_somo/develop/test/autorg/compare.pl
    A us_somo/develop/test/autorg/gen_synthetic.pl

  Log Message:
  -----------
  autorg: synthetic validation harness (generator + comparison table)

Co-Authored-By: Claude Fable 5.1 <noreply at anthropic.com>


  Commit: 35bdd14542b8c63d79b11fd0b72b63ce1d9a2853
      https://github.com/ehb54/ultrascan3/commit/35bdd14542b8c63d79b11fd0b72b63ce1d9a2853
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-09-15 (Tue, 15 Sep 2026)

  Changed paths:
    M us_somo/develop/include/us_hydrodyn_sas_options_guinier.h
    M us_somo/develop/include/us_hydrodyn_saxs.h
    M us_somo/develop/include/us_saxs_util.h
    R us_somo/develop/include/us_saxs_util_autorg.h
    A us_somo/develop/include/us_saxs_util_guinier_search.h
    M us_somo/develop/libus_somo.pro
    M us_somo/develop/src/us_hydrodyn_sas_options_guinier.cpp
    R us_somo/develop/src/us_hydrodyn_saxs_autorg.cpp
    M us_somo/develop/src/us_hydrodyn_saxs_guinier.cpp
    A us_somo/develop/src/us_hydrodyn_saxs_guinier_search.cpp
    M us_somo/develop/src/us_hydrodyn_script.cpp
    M us_somo/develop/src/us_hydrodyn_settings.cpp
    R us_somo/develop/src/us_saxs_util_autorg.cpp
    A us_somo/develop/src/us_saxs_util_guinier_search.cpp
    M us_somo/develop/src/us_saxs_util_pm.cpp
    R us_somo/develop/test/autorg/README.md
    R us_somo/develop/test/autorg/compare.pl
    R us_somo/develop/test/autorg/gen_synthetic.pl
    A us_somo/develop/test/guinier_search/README.md
    A us_somo/develop/test/guinier_search/compare.pl
    A us_somo/develop/test/guinier_search/gen_synthetic.pl
    M us_somo/develop/us_saxs_cmds_mpi/us_saxs_cmds_mpi.pro
    M us_somo/develop/us_saxs_cmds_mpi_cuda/us_saxs_cmds_mpi_cuda.pro
    M us_somo/develop/us_saxs_cmds_t/main.cpp
    M us_somo/develop/us_saxs_cmds_t/us_saxs_cmds_t.pro
    R us_somo/somo/doc/manual/somo/somo_autorg.html
    A us_somo/somo/doc/manual/somo/somo_guinier_search.html
    M us_somo/somo/doc/manual/somo/somo_saxs_options.html

  Log Message:
  -----------
  Rename autorg to guinier_search; Guinier options checkbox for the robust search; sas guinier

"autorg" is ATSAS's name; the US-SOMO routine is now guinier_search everywhere:
us_saxs_cmds_t guinier_search, the guinier_search json run type, gui_script
"sas guinier_search", US_Guinier_Search_Params / _Result, the source files,
the manual page somo_guinier_search.html and the test directory. ATSAS's
autorg keeps its name where it is compared against.

Guinier options window: new checkbox "Robust automatic Guinier range search"
(gparams guinier_robust_search, default off, mutually exclusive with "Search
for best Guinier range", the q*R limit mode and outlier rejection) routes
Process Guinier, Process CS Guinier and Process TV Guinier through the new
search with the q limits, point limits, q*R limit and SD weighting of that
window; the quality, window count and low-q diagnostics go to the message
area and the csv header records "Robust automatic range fitting used".

gui_script "sas guinier [rg|cs|tv]" presses those buttons; under gui_script
the Guinier reports are also echoed to stdout.

Refs ehb54/ultrascan-tickets#1063

Co-Authored-By: Claude Fable 5.1 <noreply at anthropic.com>


  Commit: 5cd42eab072ad4f1652c8e9d4d21135102d62513
      https://github.com/ehb54/ultrascan3/commit/5cd42eab072ad4f1652c8e9d4d21135102d62513
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-09-17 (Thu, 17 Sep 2026)

  Changed paths:
    M us_somo/develop/include/us_saxs_util_guinier_search.h
    M us_somo/develop/src/us_saxs_util_guinier_search.cpp
    M us_somo/somo/doc/manual/somo/somo_guinier_search.html

  Log Message:
  -----------
  guinier_search: maxrelsd parameter to exclude points with SD/I above a fraction

Off by default: such points carry little weight in the SD-weighted fit
(on a real extrapolated curve, dropping the first 9 noisy points moved Rg
by 0.1 A). Exposed on every interface for users who expect the leading
noisy points to be discarded as ATSAS does; the warning reports how many
excluded points fall below the end of the fitted range.

Co-Authored-By: Claude Fable 5.1 <noreply at anthropic.com>


  Commit: 53ef02097005ec8f0c6a5385dbf6fccba4a6e598
      https://github.com/ehb54/ultrascan3/commit/53ef02097005ec8f0c6a5385dbf6fccba4a6e598
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-09-24 (Thu, 24 Sep 2026)

  Changed paths:
    M us_somo/develop/include/us_saxs_util_guinier_search.h
    M us_somo/develop/src/us_saxs_util_guinier_search.cpp
    M us_somo/somo/doc/manual/somo/somo_guinier_search.html

  Log Message:
  -----------
  guinier_search: fixed mode fits exactly the qmin..qmax range with the same diagnostics

Co-Authored-By: Claude Fable 5.1 <noreply at anthropic.com>


  Commit: d71273e85c2b7613e53c65a272bac080e0cc6018
      https://github.com/ehb54/ultrascan3/commit/d71273e85c2b7613e53c65a272bac080e0cc6018
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-09-24 (Thu, 24 Sep 2026)

  Changed paths:
    M us_somo/develop/src/us_saxs_util_guinier_search.cpp
    M us_somo/somo/doc/manual/somo/somo_guinier_search.html

  Log Message:
  -----------
  guinier_search: in fixed mode an explicit qrgmax trims the end of the requested range

Co-Authored-By: Claude Fable 5.1 <noreply at anthropic.com>


  Commit: 8f80d70b6f083d4f73da9d8ce613cceb82c1f80c
      https://github.com/ehb54/ultrascan3/commit/8f80d70b6f083d4f73da9d8ce613cceb82c1f80c
  Author: emre brookes <ehb54 at users.noreply.github.com>
  Date:   2026-09-24 (Thu, 24 Sep 2026)

  Changed paths:
    M us_somo/develop/include/us_hydrodyn_sas_options_guinier.h
    M us_somo/develop/include/us_hydrodyn_saxs.h
    M us_somo/develop/include/us_saxs_util.h
    A us_somo/develop/include/us_saxs_util_guinier_search.h
    M us_somo/develop/libus_somo.pro
    M us_somo/develop/src/us_hydrodyn_sas_options_guinier.cpp
    M us_somo/develop/src/us_hydrodyn_saxs_guinier.cpp
    A us_somo/develop/src/us_hydrodyn_saxs_guinier_search.cpp
    M us_somo/develop/src/us_hydrodyn_script.cpp
    M us_somo/develop/src/us_hydrodyn_settings.cpp
    A us_somo/develop/src/us_saxs_util_guinier_search.cpp
    M us_somo/develop/src/us_saxs_util_pm.cpp
    A us_somo/develop/test/guinier_search/README.md
    A us_somo/develop/test/guinier_search/compare.pl
    A us_somo/develop/test/guinier_search/gen_synthetic.pl
    M us_somo/develop/us_saxs_cmds_mpi/us_saxs_cmds_mpi.pro
    M us_somo/develop/us_saxs_cmds_mpi_cuda/us_saxs_cmds_mpi_cuda.pro
    M us_somo/develop/us_saxs_cmds_t/main.cpp
    M us_somo/develop/us_saxs_cmds_t/us_saxs_cmds_t.pro
    A us_somo/somo/doc/manual/somo/somo_guinier_search.html
    M us_somo/somo/doc/manual/somo/somo_saxs_options.html

  Log Message:
  -----------
  Merge pull request #560 from ehb54/ehb54-issue-1063

SOMO: robust automatic Guinier range search (guinier_search) with CLI, JSON, gui_script and Guinier-options access


Compare: https://github.com/ehb54/ultrascan3/compare/65288d8f5056...8f80d70b6f08

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