rugnux --af-model: tNCS half-vector moves and P1's first copy decided on the evidence that can tell them
Completes c6912e2a0 (whose message was a placeholder). What the two commits do:
- tNCS by half a lattice vector v: copies v apart weaken the reflections with h.v half-integral, and a
placement moved by (v + o)/2 (o an origin shift of the group) fits the strong ones exactly as well.
The candidate the choice falls on is compared with every such move of itself (rigid body refined,
packing) by R over the weakened reflections only; a move better by 0.01 is taken instead, and where
the two best are within 0.01 the merge is UNDECIDED.
- With tNCS, the group the merge was made in, searched to fewer copies than the chosen group, keeps
the merge UNDECIDED (not for its enantiomorph, which the hand check decides): its first copy alone
can sit at half the vector, and no placement of the chosen group, which may sit there itself, rules
it out.
- P1: the first copy sits at the origin, which no function of its position can single out (the
translation function is flat), so one copy stands out where its rotation-function Z reaches 8; the
null then judges it as before.
Checked against the deposited coordinates (placement comparison, symmetry/origin/setting matched):
two half-vector-shifted placements that had been decided (a SPACE_GROUP in the wrong setting, an
AGREES off by a/4) are UNDECIDED; two UNDECIDED tNCS sets are now AGREES with confirmed placements;
the nine confirmed tNCS placements and the ENANTIOMORPH stay; a P1 single copy with a perfect-match
prediction is placed (confirmed), a wrong PAE-domain placement in P1 (RF Z 6.4) is not.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EizBKhTqrAYago9KJG3dA3
This commit is contained in:
@@ -2599,9 +2599,9 @@ MolecularReplacementResult search_model(const SearchModel &model, const std::vec
|
||||
// are as many as the cell most probably holds: beside content the search has not found, a copy's
|
||||
// likelihood over random positions of its own is no measure of the placement. In P1 the first copy sits
|
||||
// at the origin, which is arbitrary there and which no function of its position can single out: one copy
|
||||
// is judged by its orientation alone, against the null.
|
||||
// stands out by its orientation alone, where the rotation function's Z-score reaches the same 8.
|
||||
else if (!(cand.tf_z >= TF_Z_PLACED || (cand.llg_z >= TF_Z_PLACED && cand.copies >= cand.copies_likely)
|
||||
|| (gops.order() == 1 && cand.copies == 1)))
|
||||
|| (gops.order() == 1 && cand.copies == 1 && cand.rf_z >= TF_Z_PLACED)))
|
||||
cand.verdict = "NOT_PLACED";
|
||||
else
|
||||
cand.verdict = "PLACED";
|
||||
|
||||
Reference in New Issue
Block a user