[us-commits] [ehb54/ultrascan3] 7692f3: perceiver: make an accepted entry actually take ef...

emre brookes noreply at github.com
Sun Aug 9 04:57:53 MDT 2026


  Branch: refs/heads/ehb54-issue-980
  Home:   https://github.com/ehb54/ultrascan3
  Commit: 7692f3f168e5b354537e359ed8be24db7343e821
      https://github.com/ehb54/ultrascan3/commit/7692f3f168e5b354537e359ed8be24db7343e821
  Author: ehb54 <brookes at uthscsa.edu>
  Date:   2026-08-09 (Sun, 09 Aug 2026)

  Changed paths:
    M us_somo/develop/include/us_hydrodyn.h
    M us_somo/develop/include/us_hydrodyn_perceive.h
    M us_somo/develop/perceiver/README.md
    M us_somo/develop/perceiver/examples/perceive.somo
    M us_somo/develop/perceiver/tests/builder.cpp
    M us_somo/develop/src/us_hydrodyn.cpp
    M us_somo/develop/src/us_hydrodyn_perceive.cpp
    M us_somo/develop/src/us_hydrodyn_script.cpp

  Log Message:
  -----------
  perceiver: make an accepted entry actually take effect

Accepting an entry in the review dialog only printed it. The bead builder
still saw a non-coded residue and fell back to a generic averaged bead --
the outcome this feature exists to prevent. Three separate defects, each of
which alone was enough to break it:

1. ASA was emitted as 0. Every SOMO residue loader -- read_residue_file
   (us_hydrodyn_load.cpp:534), US_AddResidue (:1288), US_Saxs_Util (:693) --
   skips a record whose ASA is zero, and skips it SILENTLY. The entry parsed,
   never entered residue_list or multi_residue_map, and the residue went on
   being reported non-coded with nothing to indicate why. All 127 coded
   residues have ASA > 0. Emit 18 A^2/atom, the coded-residue mean, labelled
   a placeholder in the REVIEW block: nothing computes with the tabulated
   residue ASA (it appears only in info dumps), but it may not be zero.
   Properties::asa lets a caller supply a measured value later.

2. The block was not a valid record. The table is strictly positional -- one
   free-text comment line, then header, atoms, beads -- and has no comment
   syntax. The emitted block's ~20 '#' lines were consumed two at a time as
   comment/header pairs, silently creating zero-atom residues named "#".
   Ticking "add to somo.residue" would have written that into the user's own
   table. perceived_table_record() collapses the block to one comment line.

3. Nothing applied the entry. apply_perceived_entries() puts accepted entries
   into a session overlay (<table>.perceived), re-runs read_residue_file on
   it and re-reads the structure, so the atoms rebind. The user's table is
   written only when they tick the box. Novel hybrid rows, previously dropped
   on the floor, are injected into hybrid_to_protons/electrons first, since
   read_residue_file rejects atoms whose hybrid it cannot resolve.

Adds "perceive apply <pdb>" -- the headless equivalent of accepting every
entry -- reporting the non-coded count after the fact. That assertion is what
found (1) and (2); the GUI path had no way to tell "file written" from
"entry in effect". builder.cpp now checks the emitted ASA is positive.

Verified: 1MBO SO4 and 2CMD CIT both apply, 0 types still non-coded, and a
fresh perceive of 1MBO reports every residue already coded. Suites green
(54/35/18/60/5/37/55/21), regression 99.833%.



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