Pull Request №769 RosettaCommons/rosetta/main ← RosettaCommons/rosetta/federico_batched_mover
Merge: 369e400415dd5c585f80dcf7b647147ee520e8ba←6b923229bb4644766bf0da4f44c41e695418493e
Addition of a BatchedMultiplePoseMover class that allows passing all poses together into apply rather than one by one
----------------
Merge commit message:
Add BatchedMultiplePoseMover, a mover given every pose of the previous step
ParsedProtocol hands the previous mover only to MultiplePoseMover, and
set_previous_mover is neither virtual nor readable, so a mover cannot learn
where its poses come from. A mover deriving from BatchedMultiplePoseMover is
given the pose passed to apply() followed by everything drained from the
previous step, through a public setter and getter.
The pull is a separate method from get_additional_output(), so a subclass can
override that freely to emit its own results. Draining goes through whichever
mover actually ran before, so an intervening MultiplePoseMover is pulled
through and its filters are applied to every pose first.
Pull Request №765 RosettaCommons/rosetta/main ← eyal-scala-bio/rosetta/fix-add-csts-ca-only-default
Merge: 369e400415dd5c585f80dcf7b647147ee520e8ba←8902e183d03c4572a2e08512e3edc6d364e66db4
Restore CA_only default for AddConstraintsToCurrentConformationMover in RosettaScripts
----------------
Merge commit message:
Start atom selection from the CA_only default in parse_my_tag
Per review: start from CA_ONLY, as the header and documentation say, and
switch to ALL only when CA_only="false". The "only one of" check becomes a
single upfront count, so the option blocks no longer depend on each other.
Also test explicit CA_only="true".
Pull Request №765 RosettaCommons/rosetta/main ← eyal-scala-bio/rosetta/fix-add-csts-ca-only-default
Merge: 369e400415dd5c585f80dcf7b647147ee520e8ba←4f8a1ecce042a50c915e982b79a3f42275fd506f
Restore CA_only default for AddConstraintsToCurrentConformationMover in RosettaScripts
----------------
Merge commit message:
Start atom selection from the CA_only default in parse_my_tag
Per review: start from CA_ONLY, as the header and documentation say, and
switch to ALL only when CA_only="false". The "only one of" check becomes a
single upfront count, so the option blocks no longer depend on each other.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rosetta Benchmark 5 days Tests for this revision was automatically canceled because newer set of tests for pull-request №765 was submitted!
Pull Request №765 RosettaCommons/rosetta/main ← eyal-scala-bio/rosetta/fix-add-csts-ca-only-default
Merge: 369e400415dd5c585f80dcf7b647147ee520e8ba←bd31a637bc43ed59abe65349b3c34d06b6b44975
Restore CA_only default for AddConstraintsToCurrentConformationMover in RosettaScripts
----------------
Merge commit message:
Restore CA_only default for AddConstraintsToCurrentConformationMover in XML
The sc_tip_only change (ed038c21cd) made parse_my_tag start from
AtomSelector::ALL and always call set_atom_selector(), so an XML tag without
CA_only/bb_only/sc_tip_only constrained all heavy atoms instead of the
documented (and C++-default) CA_only=true. Fall back to CA_ONLY unless
CA_only="false" or another subset is requested, and add a parse_my_tag
unit test.
Rosetta Benchmark 5 days Tests for this revision was automatically canceled because newer set of tests for pull-request №765 was submitted!
Pull Request №753 RosettaCommons/rosetta/main ← roccomoretti/rosetta/bindcraft_python_test
Merge: 0c38201cdcd83a9217d947a1604b4317f71c6831←0c9a491a1929ffe9b0e05b8f2e1ef4f2add09e8c
Add a PyRosetta unit test for BindCraft
----------------
Merge commit message:
Wider range
Pull Request №753 RosettaCommons/rosetta/main ← roccomoretti/rosetta/bindcraft_python_test
Merge: 0c38201cdcd83a9217d947a1604b4317f71c6831←3daef87c1301273493ea1f59a2c4283324954677
Add a PyRosetta unit test for BindCraft
----------------
Merge commit message:
More range fixes.
Pull Request №764 RosettaCommons/rosetta/main ← lyskov-ai/rosetta/fix/copy-ctor-drops-members
Merge: 0c38201cdcd83a9217d947a1604b4317f71c6831←e0b1cb2f6565c1d2336c2838b655f0e6bc05e7b7
Copy missing data members in hand-written copy ctors / assignment operators
----------------
Merge commit message:
Copy missing data members in hand-written copy ctors / assignment operators
A sweep of hand-written copy constructors and copy-assignment operators
turned up 30 classes that copy most of their data members but silently
skip one or two. In each case the skipped member is configuration that
the object is expected to carry with it, not a cache or scratch state,
so the copy (usually produced by clone()) behaves differently from the
original.
Several of the skipped members have no default member initializer, so
the copy left them indeterminate rather than merely stale --
MembraneInfo::membrane_core_, BestHotspotCstMover::cb_force_constant_,
SSElementLengthFilter::threshold_, RRComparer*::absolute_threshold_,
RotamerRecovery::ignore_unrecognized_res_, CircularPermutation::ignore_chain_,
MPDockingMover::jump_num_ and SizeInSegmentsRequirement::size_.
BondedResidueSelector's copy constructor needed more than an added
initializer: it set use_input_set_selector_ and then called
set_input_set(), which resets that flag to false, so a copy of a
selector-driven instance always fell back to the (empty) input set. It
is now a plain member-wise copy.
AbrelaxApplication::trRosetta_cst_generator_ is declared under
#ifdef USE_TENSORFLOW, so its initializer carries the same guard.
Each new initializer is placed in declaration order so no -Wreorder
warning is introduced.
Detector hits that were verified as deliberate are left alone: caches and
scratch state (Energies::nblist_, RigidBodyPerturbMover::rb_delta_,
GraftSwitchMover::orig_pose_), observer links, back-pointers to an owning
object, const members that a copy-assignment cannot write (the pcs*
PseudocontactShiftData family), and classes whose copy body re-derives the
members through initialize() or a copy_* helper.
Pull Request №753 RosettaCommons/rosetta/main ← roccomoretti/rosetta/bindcraft_python_test
Merge: 0c38201cdcd83a9217d947a1604b4317f71c6831←7ed50e05f94931f4448a5db4593e62feea793e12
Add a PyRosetta unit test for BindCraft
----------------
Merge commit message:
Merge remote-tracking branch 'upstream/main' into bindcraft_python_test
Rosetta Benchmark 1 month Tests for this revision was automatically canceled because newer set of tests for pull-request №753 was submitted!
Pull Request №764 RosettaCommons/rosetta/main ← lyskov-ai/rosetta/fix/copy-ctor-drops-members
Merge: 0c38201cdcd83a9217d947a1604b4317f71c6831←fa272981f0b7f34f0077366e934d22a728d299f2
Copy missing data members in hand-written copy ctors / assignment operators
----------------
Merge commit message:
Copy missing data members in hand-written copy ctors / assignment operators
A sweep of hand-written copy constructors and copy-assignment operators
turned up 30 classes that copy most of their data members but silently
skip one or two. In each case the skipped member is configuration that
the object is expected to carry with it, not a cache or scratch state,
so the copy (usually produced by clone()) behaves differently from the
original.
Several of the skipped members have no default member initializer, so
the copy left them indeterminate rather than merely stale --
MembraneInfo::membrane_core_, BestHotspotCstMover::cb_force_constant_,
SSElementLengthFilter::threshold_, RRComparer*::absolute_threshold_,
RotamerRecovery::ignore_unrecognized_res_, CircularPermutation::ignore_chain_,
MPDockingMover::jump_num_ and SizeInSegmentsRequirement::size_.
BondedResidueSelector's copy constructor needed more than an added
initializer: it set use_input_set_selector_ and then called
set_input_set(), which resets that flag to false, so a copy of a
selector-driven instance always fell back to the (empty) input set. It
is now a plain member-wise copy.
AbrelaxApplication::trRosetta_cst_generator_ is declared under
#ifdef USE_TENSORFLOW, so its initializer carries the same guard.
Each new initializer is placed in declaration order so no -Wreorder
warning is introduced.
Detector hits that were verified as deliberate are left alone: caches and
scratch state (Energies::nblist_, RigidBodyPerturbMover::rb_delta_,
GraftSwitchMover::orig_pose_), observer links, back-pointers to an owning
object, const members that a copy-assignment cannot write (the pcs*
PseudocontactShiftData family), and classes whose copy body re-derives the
members through initialize() or a copy_* helper.
Pull Request №763 RosettaCommons/rosetta/main ← lyskov-ai/rosetta/refactor/owning-raw-pointers-to-unique-ptr
Merge: 0c38201cdcd83a9217d947a1604b4317f71c6831←4066812b2d3eccc8fe66d5300f13054195e3fc6a
Replace manually-deleted owning raw pointers with std::unique_ptr
----------------
Merge commit message:
Replace manually-deleted owning raw pointers with std::unique_ptr
Twelve classes held a heap object by raw pointer and freed it with an
explicit delete in their destructor. Hold each in a std::unique_ptr
instead, so ownership is expressed in the type and the destructors stop
hand-managing memory.
Eight graph classes own boost::unordered_object_pool instances:
utility::graph::Graph and Digraph (element pool plus edge pool each),
EnergyGraph, MinimizationGraph, TenANeighborGraph,
BuriedUnsatPenaltyGraph, JobDigraph and SewGraph. In Graph and Digraph
this also corrects the teardown order: the explicit delete freed the
element pool from the destructor body while edge_list_ -- which holds a
reference to that pool and returns its elements to it as it is destroyed
-- was still alive. Member destruction now runs the list first and frees
the pool afterwards.
SICFast, MotifHashRigidScore, triangleIterator and FragmentCandidate
each owned a single object while leaving their copy operations implicit,
so copying any of them would have double-freed. The unique_ptr members
make them non-copyable.
MotifHashRigidScore::ssinfo1_ and ssinfo2_ were never allocated -- always
null, with their only readers commented out -- so they are deleted rather
than converted, along with the now-unused SS_Info2 includes.
Pull Request №762 RosettaCommons/rosetta/main ← lyskov-ai/rosetta/fix/duplicated-copy-paste-conditions
Merge: 0c38201cdcd83a9217d947a1604b4317f71c6831←375404062ef86004dfcfce5ea79ba16380ec9054
Fix copy/paste bugs in duplicated conditions
----------------
Merge commit message:
Delete unreachable duplicate PoseCoordPickMode_BB branch
xyzStripeHashPoseWithMeta::init_with_pose tested
PoseCoordPickMode_BB twice in the same if/else chain, so the second
branch could never run. Its body collects CA, C and CB, which matches no
value of PoseCoordPickMode -- N_CA_C and N_CA_C_CB both include N -- so
the intent behind it is not recoverable.
The surviving first branch is the correct one: it collects N, CA, C, O
and CB, matching both the natom counting loop above it and the
canonical case PoseCoordPickMode_BB in core/pose/xyzStripeHashPose.cc.
Removing dead code, no behaviour change.
Pull Request №762 RosettaCommons/rosetta/main ← lyskov-ai/rosetta/fix/duplicated-copy-paste-conditions
Merge: 0c38201cdcd83a9217d947a1604b4317f71c6831←0fbeb47e0091638e54288b68e9ee0de2c22c7224
Fix copy/paste bugs in duplicated conditions
----------------
Merge commit message:
Fix copy/paste bugs in duplicated conditions
Each of these tests the same operand twice in one condition or if/else
chain, so a sibling operand is never tested and part of the check is dead.
Behaviour fixes:
* CartesianBondedEnergy: the torsion ring-atom test checked atids[2]
twice and never atids[4], so 4-atom ring torsions were not always
handed off to cart_bonded_ring.
* chemical/rna/util: in the SUGAR/SUGAR CIS base-pair table the guanine
row was labelled `aa1 == na_rad`, which the adenine row above already
matches. All four guanine branches were unreachable. They push " H22",
an atom only RGU has (RAD has " H2 "), and na_rgu was the one row
missing from the otherwise complete 4x4 table.
* DisulfideOptimizationMover: the "both residues are disulfide bonded"
check tested cys_pos[1] twice, so cys_pos[2] was never validated.
* DofUnlock: the environment-id half of the passport check compared
pass_out to itself instead of to pass_, so a mismatched environment id
was never caught.
* RotamerRecovery: runtime_assert compared pose_rots.size() to itself
instead of to nat_rots.size().
* FloppyTailMover: flexible_chain appeared twice in the list of options
that conflict with an explicit movemap, so flexible_start_resnum was
never rejected. The error message had the same duplication.
Behaviour-preserving removals of dead duplicate conditions:
* cryst/wallpaper: "C211" listed twice among the tetragonal groups.
* CDRSeqDesignOptions: "DISALLOWED" listed twice.
* SecretionPredictionFilter, SecretionOptimizationMover: the dG_ins
threshold comparison repeated in the same && chain.
Found with a new redundant-expression / branch-clone analysis pass over
utility/, basic/, core/, protocols/ and numeric/; utility/, basic/ and
numeric/ had no true positives.
Rosetta Benchmark 1 month Tests for this revision was automatically canceled because newer set of tests for pull-request №762 was submitted!