Merge pull request #3402 from RosettaCommons/jadolfbr/ProtocolSettingsMetric
Add ProtocolSettingsMetric to monitor experimental conditions
This PR adds a new composite string metric, `ProtocolSettingsMetric`. It is analogous to the ProtocolFeatures reporter and basically reports both `.user()` options and splits ` any script_vars` options.
The class is configurable to get specific options, or only get `.user()` or set `script_vars`. The primary purpose of this class is for benchmarking, but it is generally useful for record-keeping a specific decoy with set options - IE - the experimental conditions - in which it was run. Typically this is done using file names or directories or other scripts, but using this `SimpleMetric` should streamline benchmarking efforts - especially for those using python, where you can easily plot groups with specific experimental conditions.
This class also works through a Local `OptionsCollection` object (if present) - A COP is placed into the `DataMap` as a resource and available to ALL RosettaScript objects for configurable local options accessing. There may be a better way when we decide to try to remove all global option accessing, but for RosettaScripts, I believe this will work fine.
An integration test and a suite of unit tests have been added.