[us-commits] [ehb54/ultrascan3] 0c1fcd: perceiver: allow a tabulated vbar to be overridden...

emre brookes noreply at github.com
Wed Aug 12 07:53:15 MDT 2026


  Branch: refs/heads/ehb54-issue-980
  Home:   https://github.com/ehb54/ultrascan3
  Commit: 0c1fcd9179ba31a2df164eb1bb7c14af3c7b1f19
      https://github.com/ehb54/ultrascan3/commit/0c1fcd9179ba31a2df164eb1bb7c14af3c7b1f19
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-10 (Mon, 10 Aug 2026)

  Changed paths:
    M us_somo/develop/perceiver/tests/protein_psv.cpp

  Log Message:
  -----------
  perceiver: allow a tabulated vbar to be overridden, to test candidate values

Mattia asked which of the three competing arginine values fares better. An argv
token RES=vbar now replaces that residue's vbar in the [table] column only; the
D&Z columns are computed from coordinates and stay untouched, so the run asks
exactly one question -- which tabulated value best predicts measured protein psv.

Result over 7 proteins, mean |error| of [table]:
    ARG 0.698  (somo.residue)      0.84%
    ARG 0.7686 (Rocco recalc)      1.37%
    ARG 0.809  (D&Z increments)    1.67%
Monotonic: every step up is worse. The incumbent value wins and should stay.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>


  Commit: 80159a145019f75db9608c30f77b1b4a74fa9606
      https://github.com/ehb54/ultrascan3/commit/80159a145019f75db9608c30f77b1b4a74fa9606
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-10 (Mon, 10 Aug 2026)

  Changed paths:
    M us_somo/develop/perceiver/tests/protein_psv.cpp

  Log Message:
  -----------
  perceiver: show per-residue D&Z spread and a sequence-only cross-check

Mattia's point: psv is a composition property, so an experimental structure may
be unnecessary -- a sequence-correct model (AF2) would do, and then verifying the
protein's SOURCE and processed form matters more than the coordinates.

Measured rather than assumed. Per-residue D&Z psv across 7 proteins:
  ALA SER TRP MET HIS ARG  SD exactly 0.000 -- fully context-independent
  most others                SD 0.1-1.0%
  CYS 2.21%, TYR 1.23%, LYS 1.00%  -- real chemistry, not noise: free thiol vs
  disulfide for CYS, termini for LYS. Sequence-only averages over these.

Recomputing every protein from composition alone, using corpus-mean per-residue
values, against the full structure-based calculation:
  mean |diff| 0.076%, worst +0.116%
An order of magnitude below the effect being measured (table 0.84% vs D&Z 3.07%).

So structures are not the bottleneck after all: a correct sequence suffices, and
the binding constraint moves to source/isoform/processing verification.

Caveat: the per-residue means come from these same proteins, so the check is
mildly circular; the six zero-SD residues are exempt by construction.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>


  Commit: c2290b2405b9902ebfc422c684ce3db21e4bab41
      https://github.com/ehb54/ultrascan3/commit/c2290b2405b9902ebfc422c684ce3db21e4bab41
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-10 (Mon, 10 Aug 2026)

  Changed paths:
    A us_somo/develop/perceiver/data/psv/candidates.fasta
    M us_somo/develop/perceiver/tests/protein_psv.cpp

  Log Message:
  -----------
  perceiver: score proteins from UniProt mature sequences, no structures needed

Follows the sequence-only validation: composition reproduces the structural answer
to 0.076%, so any protein with a known MATURE sequence can join the validation set.
PROTEIN_PSV_FASTA=<file> reads records of '>label measured_psv' + one-letter sequence.

The processed form comes from UniProt MOLECULE_PROCESSING rather than guesswork,
which matters because the tables measure different forms of the same gene product:
  pepsinogen    = PROPEP + CHAIN (activation peptide RETAINED), P00791 16..385
  papain        = CHAIN only, propeptide removed,               P00784 134..345
  carboxypep A  = CHAIN only, 94-residue activation peptide off, P00730 111..419
  chymotrypsinogen A = full zymogen 1..245
  a-chymotrypsin     = chains A+B+C, dipeptides 14-15/147-148 excised, 241 residues

Eight new proteins, table column vs measured:
  catalase -0.04, pepsinogen -0.06, a-chymotrypsin +0.05, chymotrypsinogen +0.18,
  calmodulin +0.93, papain +1.05, carboxypeptidase A -1.51, a-lactalbumin +4.02
Excluding a-lactalbumin: bias +0.09%, mean |err| 0.55% -- better than the
structure-based set. Combined 14 proteins: bias +0.46%, mean |err| 0.69%.

Two things worth noting. The chymotrypsinogen/a-chymotrypsin pair differ by four
excised residues out of 245; measured +0.30%, calculated +0.18% -- the method
resolves it, and in the right direction. And a-lactalbumin, the one bad case, is
the entry Table 6 annotates '~12% carbohydrate content'; a carbohydrate correction
explains roughly half the 4% and it should stay excluded.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>


  Commit: 45c7a165c46eac6c86500795ccaf86169ebdfbd8
      https://github.com/ehb54/ultrascan3/commit/45c7a165c46eac6c86500795ccaf86169ebdfbd8
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-12 (Wed, 12 Aug 2026)

  Changed paths:
    M us_somo/develop/src/us_hydrodyn_perceive.cpp
    M us_somo/develop/src/us_hydrodyn_perceive_dialog.cpp

  Log Message:
  -----------
  perceiver: white dialog background, and one review line per atom

Two of three items from Mattia's Linux GUI testing (2026-08-10).

Background: the dialog is mostly close reading -- a generated table entry and a
list of flags -- and SOMO's global frame grey is hard going, more so on Linux
where it renders darker. Only this frame's background changes; every label here
calls AUTFBACK and paints its own, and the global palette is untouched.

Review list: two independent streams feed it, perception ambiguity notes and the
psv/volume/hydration reviews, both keyed "NAME (HYB)". Emitted raw, an atom with
one of each appeared twice, so citrate showed six entries for three atoms and read
as flagging far more waters than it does. Now grouped by atom, first-appearance
order, notes joined:

  before                                          after
  O2 (O2H1): carboxyl -OH                         O2 (O2H1): carboxyl -OH; carboxylate at pH 7, 5 waters
  O4 (O2H1): carboxylate O (symmetric...)         O4 (O2H1): carboxylate O (symmetric...); carboxylate at pH 7, 5 waters
  O6 (O2H1): carboxylate O (symmetric...)         O6 (O2H1): carboxylate O (symmetric...); carboxylate at pH 7, 5 waters
  O2 (O2H1): carboxylate at pH 7, 5 waters
  O4 (O2H1): carboxylate at pH 7, 5 waters
  O6 (O2H1): carboxylate at pH 7, 5 waters

The third item -- hydration on the wrong oxygen -- is a real inconsistency but
needs a convention decision, so it is not touched here.

Tests unchanged: unit 86/0, psv 60/0, hydration 37/0, regression 97.894% exact.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>


  Commit: cd3273186cd71d1e13df7e48c645aa592a704e9b
      https://github.com/ehb54/ultrascan3/commit/cd3273186cd71d1e13df7e48c645aa592a704e9b
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-12 (Wed, 12 Aug 2026)

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

  Log Message:
  -----------
  perceiver: pin the dialog foreground too, not just the background

Mattia: the font colour came out different on Linux and macOS.

Cause: PALET_LABEL and PALET_FRAME construct a whole QPalette from a single
configured colour, and Qt derives the remaining roles itself. That derivation is
not identical across Qt versions and platforms, so the text colour drifted.

perceive_palette() now names every role this dialog relies on -- Window, Base,
AlternateBase, WindowText, Text, ButtonText -- and is applied to the frame, all
labels, the info line, the checkbox and both read-only text views. Nothing is
derived, so both platforms render the same.

Push buttons deliberately keep PALET_PUSHB: they are controls users recognise by
their SOMO styling, and they are not the surface being read.

libus_somo builds clean.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>


  Commit: cf0adf435b6dbfef0b6f699a42947e0162aa5270
      https://github.com/ehb54/ultrascan3/commit/cf0adf435b6dbfef0b6f699a42947e0162aa5270
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-12 (Wed, 12 Aug 2026)

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

  Log Message:
  -----------
  perceiver: make the review list's length visible, and fix the flagged count

Mattia, testing on Linux: "I didn't get from the actual perceiver that there were
more lines to be scrolled, likely the grey bkg fooled me. It should be evident".

Three things were hiding it:
 - the box had no frame, so on the old grey it blended into the dialog. White needs
   the border more than grey did: both text views are now StyledPanel|Sunken.
 - no scrollbar until you tried to scroll. Both views now keep a vertical scrollbar
   permanently, so a list longer than its box says so without being discovered.
 - the summary quoted tent_.flagged, which counts only atoms the PERCEPTION step
   found ambiguous, while the box also carries psv, volume and hydration notes. The
   two disagreed -- a "0 atom(s) flagged" line could sit above a box with entries in
   it. The REVIEW lines are now extracted once, before the summary, and the same
   count feeds both; the label reads "Flagged for review - N item(s), scroll for all".
   Wording moves from "atom(s)" to "item(s)", which is what they are.

Also AUTFBACK on the two text views and the checkbox. Per ehb54, SOMO needs it
per-field for backgrounds to render consistently, and those three were given a
palette without it.

libus_somo builds clean.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>


Compare: https://github.com/ehb54/ultrascan3/compare/c18f890853e4...cf0adf435b6d

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