Merge pull request #5360 from RosettaCommons/roccomoretti/chemistry_objects
Add "Chemistry" Objects, which are like Movers, but for ResidueTypes. This is part of the process of merging my the drug_design branch piecemeal.
The Chemisty objects come in two parts. The first is a simple core-level one, which defines the basic interface. The second is a protocols-level one which extents the interface to be XML parsable and Pose-aware. (That is, you can potentially have chemistries which are aware of the residue context in the Pose.) Chemistries occupy a new section in the input XML.
With this PR comes some simple Chemistries, such as PatchChemistry, which allows you to apply the same manipulations you could in a patch.
I also add an ApplyChemistyMover, which allows you to apply one or more Chemistries to a Pose from an XML context.
Merge pull request #6082 from RosettaCommons/revert-6081-revert-5520-jyjwang/degreaser-fresh
fixed things so that the tests that were broken passed. main culprits: unused variables / functions. annoying fix: indexing with Size instead of SSize. Thanks Sergey for checking in on the original PR ! Revert "Revert "Degreaser v 1.0""
Merge pull request #6069 from RosettaCommons/vmullig/custom_real_valued_metric
Add a CustomRealValueMetric class, analogous to the CustomStringValueMetric
It is convenient to have an easy way to cache an arbitrary floating-point value in a pose from code, without doing a lot of manual steps. Simple metrics let you _compute_ particular types of floating-point values (scores, RMSDs, _etc._) and cache them, but if you've already computed whatever you want to compute, it's not easy to get that stored as a metric. This pull request adds a `CustomRealValueMetric` class, which lets you add an arbitrary input value and label to a pose. For instance, you might be testing an idea in a pilot app:
```c++
core::pose::PoseOP pose( utility::pointer::make_shared< core::pose::Pose >() );
// Create the pose and manipulate it.
core::Real const my_computed_value = /*some new calculation to analyze the pose that's experimental enough or specialized enough that it's not worth turning into its own simple metric*/;
core::simple_metrics::metrics::CustomRealValueMetric my_metric;
my_metric.set_value( my_computed_value ); //I don't want the computation to be done by the metric.
my_metric.apply( "custom_computed_value", *pose ); //Cache the computed value in the pose, and give it the label "custom_computed_value".
```
We already have this for string metrics. This pull request adds it for float-valued metrics.
Note: this also gives you a way to pass in information from the commandline in RosettaScripts and cache it in the pose. For instance:
```xml
<ROSETTASCRIPTS>
<SIMPLE_METRICS>
<CustomRealValueMetric name="my_metric" value="%%extrernal_val%%" />
</SIMPLE_METRICS>
<PROTOCOLS>
<Add metrics="my_metric" />
</PROTOCOLS>
</ROSETTASCRIPTS>
```
```sh
~/Rosetta/main/source/src/rosetta_scripts.default.linuxgccrelease -parser:protocol my_script.xml -script_vars external_val=25.3 -in:file:s first_file.pdb
~/Rosetta/main/source/src/rosetta_scripts.default.linuxgccrelease -parser:protocol my_script.xml -script_vars external_val=-12.9 -in:file:s second_file.pdb
```
It should also make it easier to put custom information into a Pose in PyRosetta.
TODO:
- [x] Unit test.
- [x] Beauty.
- [x] Documentation. Pull request RosettaCommons/documentation#59 has this.
Merge pull request #6057 from CyrusBiotechnology/smlewis/bfrenz_ref_fix_second_attempt
From @BrandonFrenz : fixed a bug Chris Moth [unsure how to @] found where cartesian ddg was not exiting on convergence because the data storage object was not passed by reference
Merge pull request #5931 from RosettaCommons/JackMaguire/EnsureExclusivelySharedJump
JumpDownstreamSelector appears to have been making some assumptions about the foldtree that result in an inverted selection. The fix checks to see if the downstream residue from the jump is selected, and inverts the selection if not.