From 1eed1f8163346b3055d32f601834b97b0725afc9 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Tue, 8 Feb 2022 16:13:52 -0500 Subject: [PATCH 01/34] Adding ensemble metrics to sidebars. --- .../RosettaScripts/FeaturesReporter/_Sidebar.md | 2 ++ .../FeaturesReporter/features_reporters/_Sidebar.md | 4 ++++ .../RosettaScripts/FeaturesReporter/rscripts/_Sidebar.md | 4 ++++ scripting_documentation/RosettaScripts/Filters/_Sidebar.md | 2 ++ scripting_documentation/RosettaScripts/Movers/_Sidebar.md | 2 ++ .../RosettaScripts/SimpleMetrics/_Sidebar.md | 4 ++++ .../RosettaScripts/TaskOperations/_Sidebar.md | 2 ++ scripting_documentation/RosettaScripts/_Sidebar.md | 2 ++ .../RosettaScripts/composite_protocols/_Sidebar.md | 2 ++ 9 files changed, 24 insertions(+) diff --git a/scripting_documentation/RosettaScripts/FeaturesReporter/_Sidebar.md b/scripting_documentation/RosettaScripts/FeaturesReporter/_Sidebar.md index de27f22ed..4d334d69b 100644 --- a/scripting_documentation/RosettaScripts/FeaturesReporter/_Sidebar.md +++ b/scripting_documentation/RosettaScripts/FeaturesReporter/_Sidebar.md @@ -20,6 +20,8 @@ * [[Simple Metrics | SimpleMetrics]] + * [[Ensemble Metrics|EnsembleMetrics]] + * [[Filters|Filters-RosettaScripts]] * [[FeaturesReporters|Features-reporter-overview]] diff --git a/scripting_documentation/RosettaScripts/FeaturesReporter/features_reporters/_Sidebar.md b/scripting_documentation/RosettaScripts/FeaturesReporter/features_reporters/_Sidebar.md index 4faf9cccc..209569d19 100644 --- a/scripting_documentation/RosettaScripts/FeaturesReporter/features_reporters/_Sidebar.md +++ b/scripting_documentation/RosettaScripts/FeaturesReporter/features_reporters/_Sidebar.md @@ -14,6 +14,10 @@ * [[Filters|Filters-RosettaScripts]] + * [[Simple Metrics|SimpleMetrics]] + + * [[Ensemble Metrics|EnsembleMetrics]] + * [[Residue Selectors|ResidueSelectors]] * [[PackerPalettes|PackerPalette]] diff --git a/scripting_documentation/RosettaScripts/FeaturesReporter/rscripts/_Sidebar.md b/scripting_documentation/RosettaScripts/FeaturesReporter/rscripts/_Sidebar.md index 94af5a392..3800286b4 100644 --- a/scripting_documentation/RosettaScripts/FeaturesReporter/rscripts/_Sidebar.md +++ b/scripting_documentation/RosettaScripts/FeaturesReporter/rscripts/_Sidebar.md @@ -14,6 +14,10 @@ * [[Residue Selectors|ResidueSelectors]] + * [[Simple Metrics|SimpleMetrics]] + + * [[Ensemble Metrics|EnsembleMetrics]] + * [[PackerPalettes|PackerPalette]] * [[Filters|Filters-RosettaScripts]] diff --git a/scripting_documentation/RosettaScripts/Filters/_Sidebar.md b/scripting_documentation/RosettaScripts/Filters/_Sidebar.md index b37eb316e..3752c97cf 100644 --- a/scripting_documentation/RosettaScripts/Filters/_Sidebar.md +++ b/scripting_documentation/RosettaScripts/Filters/_Sidebar.md @@ -20,6 +20,8 @@ * [[Simple Metrics | SimpleMetrics]] + * [[Ensemble Metrics | EnsembleMetrics]] + * [[Filters|Filters-RosettaScripts]] * [[FeaturesReporters|Features-reporter-overview]] diff --git a/scripting_documentation/RosettaScripts/Movers/_Sidebar.md b/scripting_documentation/RosettaScripts/Movers/_Sidebar.md index b37eb316e..dd495fff9 100644 --- a/scripting_documentation/RosettaScripts/Movers/_Sidebar.md +++ b/scripting_documentation/RosettaScripts/Movers/_Sidebar.md @@ -20,6 +20,8 @@ * [[Simple Metrics | SimpleMetrics]] + * [[Ensemble Metrics|EnsembleMetrics]] + * [[Filters|Filters-RosettaScripts]] * [[FeaturesReporters|Features-reporter-overview]] diff --git a/scripting_documentation/RosettaScripts/SimpleMetrics/_Sidebar.md b/scripting_documentation/RosettaScripts/SimpleMetrics/_Sidebar.md index 19e142d78..e5e662775 100644 --- a/scripting_documentation/RosettaScripts/SimpleMetrics/_Sidebar.md +++ b/scripting_documentation/RosettaScripts/SimpleMetrics/_Sidebar.md @@ -14,6 +14,10 @@ * [[Residue Selectors|ResidueSelectors]] + * [[Simple Metrics|SimpleMetrics]] + + * [[Ensemble Metrics|EnsembleMetrics]] + * [[PackerPalettes|PackerPalette]] * [[Task Operations|TaskOperations-RosettaScripts]] diff --git a/scripting_documentation/RosettaScripts/TaskOperations/_Sidebar.md b/scripting_documentation/RosettaScripts/TaskOperations/_Sidebar.md index f41e9d5c9..d2c0e52c8 100644 --- a/scripting_documentation/RosettaScripts/TaskOperations/_Sidebar.md +++ b/scripting_documentation/RosettaScripts/TaskOperations/_Sidebar.md @@ -19,6 +19,8 @@ * [[Task Operations|TaskOperations-RosettaScripts]] * [[Simple Metrics | SimpleMetrics]] + + * [[Ensemble Metrics|EnsembleMetrics]] * [[Filters|Filters-RosettaScripts]] diff --git a/scripting_documentation/RosettaScripts/_Sidebar.md b/scripting_documentation/RosettaScripts/_Sidebar.md index b217aad09..003412fb8 100644 --- a/scripting_documentation/RosettaScripts/_Sidebar.md +++ b/scripting_documentation/RosettaScripts/_Sidebar.md @@ -22,6 +22,8 @@ * [[Simple Metrics | SimpleMetrics]] + * [[Ensemble Metrics|EnsembleMetrics]] + * [[Filters|Filters-RosettaScripts]] * [[FeaturesReporters|Features-reporter-overview]] diff --git a/scripting_documentation/RosettaScripts/composite_protocols/_Sidebar.md b/scripting_documentation/RosettaScripts/composite_protocols/_Sidebar.md index 33d6bcd71..35255fec7 100644 --- a/scripting_documentation/RosettaScripts/composite_protocols/_Sidebar.md +++ b/scripting_documentation/RosettaScripts/composite_protocols/_Sidebar.md @@ -20,6 +20,8 @@ * [[Simple Metrics | SimpleMetrics]] + * [[Ensemble Metrics|EnsembleMetrics]] + * [[Filters|Filters-RosettaScripts]] * [[Features Reporters|Features-reporter-overview]] From 9156829f734fefb725cc0fa9a2d005db07f7fb96 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Tue, 8 Feb 2022 16:22:50 -0500 Subject: [PATCH 02/34] Updating main RosettaScripts page. --- scripting_documentation/RosettaScripts/RosettaScripts.md | 1 + 1 file changed, 1 insertion(+) diff --git a/scripting_documentation/RosettaScripts/RosettaScripts.md b/scripting_documentation/RosettaScripts/RosettaScripts.md index 8162b50ea..87c20cb24 100644 --- a/scripting_documentation/RosettaScripts/RosettaScripts.md +++ b/scripting_documentation/RosettaScripts/RosettaScripts.md @@ -19,6 +19,7 @@ Fleishman SJ, Leaver-Fay A, Corn JE, Strauch EM, Khare SD, et al. (2011) Rosetta - [[JumpSelectors |JumpSelectors]] - [[PackerPalettes|PackerPalette]] - [[SimpleMetrics]] +- [[EnsembleMetrics]] --------------------- From 35cb71758edae4c2a29f3a6fd480a4e3a7c65867 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Tue, 8 Feb 2022 16:39:13 -0500 Subject: [PATCH 03/34] Adding page for CentralTendency metric. --- .../ensemble_metric_pages/CentralTendency.md | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md new file mode 100644 index 000000000..24f4c6c3b --- /dev/null +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md @@ -0,0 +1,40 @@ +# CentralTendency Ensemble Metric +*Back to [[SimpleMetrics]] page.* +## CentralTendency Ensemble Metric + +[[_TOC_]] + +### Description + +The Central Tendency metric accepts as input a real-valued [[SimpleMetric|SimpleMetrics]]. It then applies it to each pose in an ensemble, collecting a series of values. At reporting time, the metric computes measures of central tendency (mean, median, and mode), plus other descriptive statistics about the distribution of the measured value over the ensemble (standard deviation, standard error, min, max, range). + +### Author and history + +Created Tuesday, 8 February 2022 by Vikram K. Mulligan, Center for Computational Biology, Flatiron Institute (vmulligan@flatironinstitute.org). This was the first [[EnsembleMetric|EnsembleMetrics]] implemented + +### Interface + +[[include:ensemble_metric_CentralTendencyEnsembleMetric_type]] + +### Named values produced + +Measure | Name (used for the [[EnsembleFilter]]) | Description +--------|----------------------------------------|------------ +Mean | mean | The average of the values measured for the poses in the ensemble. +Median | median | When values measured from all of hte poses in the ensemble are listed in increasing order, this is the middle value. If the number of poses in the ensemble is even, the middle two values are averaged. +Mode | mode | The most frequently seen value in the values measured from the poses in the environment. If more than one value appears with equal frequency and this frequency is highest, the values are averaged. +Standard Deviation | stddev | Estimate of the standard deviation of the mean, defined as the sqrt( sum_i( S_i - mean )^2 / N ), where S_i is the ith sample, mean is the average of all the samples, and N is the number of samples. +Standard Error | stderr | Estimate of the standard error of the mean, defined by stddev / sqrt(N), where N is the number of samples. +Min | min | The minimum value seen. +Max | max | The maximum value seen. +Range | range | the largest value seen minus the smallest. + +#### Note about mode + +The mode of a set of floating-point numbers can be thrown off by floating-point error. For instance, two poses may have energies of -3.7641 kJ/mol, but the process of computing that energy may result in slightly different values at the 15th decimal point. This would prevent the filter from recognizing this is at the most frequent value. + +##See Also + +* [[SimpleMetrics]]: Available SimpleMetrics. +* [[EnsembleMetrics]]: Available EnsembleMetrics. +* [[I want to do x]]: Guide to choosing a tool in Rosetta. \ No newline at end of file From cc023e6f6f18990aa429c1cb4e7e4476aecfec84 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Tue, 8 Feb 2022 16:39:30 -0500 Subject: [PATCH 04/34] Updating auto-generated docs. --- .../RosettaScripts/xsd/filter_FragmentScoreFilter_type.md | 2 +- .../RosettaScripts/xsd/mover_ParsedProtocol_type.md | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/scripting_documentation/RosettaScripts/xsd/filter_FragmentScoreFilter_type.md b/scripting_documentation/RosettaScripts/xsd/filter_FragmentScoreFilter_type.md index cf17faf3b..b556a2dfb 100644 --- a/scripting_documentation/RosettaScripts/xsd/filter_FragmentScoreFilter_type.md +++ b/scripting_documentation/RosettaScripts/xsd/filter_FragmentScoreFilter_type.md @@ -13,7 +13,7 @@ Filter based on any score that can be calculated in fragment_picker. outputs_name="(pose &string;)" csblast="(&string;)" blast_pgp="(&string;)" placeholder_seqs="(&string;)" sparks-x="(&string;)" sparks-x_query="(&string;)" psipred="(&string;)" - vall_path="(/scratch/benchmark/W.hojo-1/rosetta.Hojo-1/master/main/database//sampling/vall.jul19.2011.gz &string;)" + vall_path="(/Users/vmulligan/rosetta_git_workingcopy/Rosetta/main/tools/doc_tools/../../database//sampling/vall.jul19.2011.gz &string;)" frags_scoring_config="(&string;)" n_frags="(200 &non_negative_integer;)" n_candidates="(1000 &non_negative_integer;)" print_to_pdb="(false &xs:boolean;)" diff --git a/scripting_documentation/RosettaScripts/xsd/mover_ParsedProtocol_type.md b/scripting_documentation/RosettaScripts/xsd/mover_ParsedProtocol_type.md index 2a4c1874f..5284f7d94 100644 --- a/scripting_documentation/RosettaScripts/xsd/mover_ParsedProtocol_type.md +++ b/scripting_documentation/RosettaScripts/xsd/mover_ParsedProtocol_type.md @@ -11,8 +11,8 @@ This is a special mover that allows making a single compound mover and filter ve apply_probability="(ℜ)" resume_support="(false &bool;)" > + ensemble_metrics="(&string;)" apply_probability="(ℜ)" + report_at_end="(true &bool;)" never_rerun_filter="(false &bool;)" /> @@ -33,6 +33,7 @@ Subtag **Add**: The steps to be applied. - **filter**: The filter whose execution is desired - **metrics**: A comma-separated list of metrics to run at this point. - **labels**: A comma-separated list of labels to use for the provided metrics in the output. If empty/missing, use the metric names from the metrics setting. If '-', use the metric's default. +- **ensemble_metrics**: A comma-separated list of ensemble metrics to add at this point. Ensemble metrics will collect information about the pose at this point, and will later report statistics about the ensemble of poses that they have seen. - **apply_probability**: by default equal probability for all tags - **report_at_end**: Report filter value via filter re-evaluation on final pose after conclusion of protocol. Otherwise report filter value as evaluated mid-protocol. - **never_rerun_filter**: Never run this filter after the original apply-time run. Use this option to avoid expensive re-runs when reporting From a18aca64b55832e3a39da76a0c87a105ff946b05 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Tue, 8 Feb 2022 16:44:29 -0500 Subject: [PATCH 05/34] Adding auto-generated ensemble metric docs. --- .../ensemble_metric_CentralTendency_type.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md diff --git a/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md b/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md new file mode 100644 index 000000000..71e9363f8 --- /dev/null +++ b/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md @@ -0,0 +1,25 @@ + + +_Autogenerated Tag Syntax Documentation:_ + +--- +An ensemble metric that takes a real-valued simple metric, applies it to all poses in an ensemble, and calculates measures of central tendency (mean, median, mode) and other statistics about the distribution (standard deviation, standard error of the mean, min, max, range, etc.). Values that this ensemble metric returns are referred to in scripts as: mean, median, mode, stddev, stderr, min, max, and range. + +```xml + +``` + +- **label_prefix**: If provided, this prefix is prepended to the label for this ensemble metric (with an underscore after the prefix and before the ensemble metric name). +- **label_suffix**: If provided, this suffix is appended to the label for this ensemble metric (with an underscore after the ensemble metric name and before the suffix). +- **ensemble_generating_protocol**: An optional ParsedProtocol or other mover for generating an ensemble from the current pose. This protocol will be applied repeatedly (ensemble_generating_protocol_repeats times) to generate the ensemble of structures. Each generated pose will be measured by this metric, then discarded. The ensemble properties are then reported. If not provided, the current pose is measured and the report will be produced later (e.g. at termination with the JD2 rosetta_scripts application). +- **ensemble_generating_protocol_repeats**: The number of times that the ensemble_generating_protocol is applied. This is the maximum number of structures in the ensemble (though the actual number may be smaller if the protocol contains filters or movers that can fail for some attempts). Only used if an ensemble-generating protocol is provided with the ensemble_generating_protocol option. +- **n_threads**: The number of threads to request for generating ensembles in parallel. This is only used in multi-threaded compilations of Rosetta (compiled with extras=cxx11thread), and only when an ensemble-generating protocol is provided with the ensemble_generating_protocol option. A value of 0 means to use all available threads. In single-threaded builds, this must be set to 0 or 1. +- **use_additional_output_from_last_mover**: If true, this ensemble metric will use the additional output from the previous pose (assuming the previous pose generates multiple outputs) as the ensemble, analysing it and producing a report immediately. If false, then it will behave normally. False by default. +- **real_valued_metric**: The name of a real-valued simple metric defined previously. Required input. + +--- From 3e8cc7ff9f4af78f9362b1b625f6af3fcf940fa1 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Tue, 8 Feb 2022 16:57:25 -0500 Subject: [PATCH 06/34] Updating CentralTendency ensemble metric doc. --- .../EnsembleMetrics/ensemble_metric_pages/CentralTendency.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md index 24f4c6c3b..2a2b9678f 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md @@ -14,7 +14,7 @@ Created Tuesday, 8 February 2022 by Vikram K. Mulligan, Center for Computational ### Interface -[[include:ensemble_metric_CentralTendencyEnsembleMetric_type]] +[[include:ensemble_metric_CentralTendency_type]] ### Named values produced From 0e5918f8357deeab4dae4ab0e5b67ad6e53b25dc Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Wed, 9 Feb 2022 19:39:47 -0500 Subject: [PATCH 07/34] Working on documentation for EnsembleMetrics. --- .../EnsembleMetrics/EnsembleMetrics.md | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md new file mode 100644 index 000000000..63fb0f03d --- /dev/null +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -0,0 +1,36 @@ +# EnsembleMetrics +*Back to main [[RosettaScripts|RosettaScripts]] page.* + +Page created Wed, 9 February 2022 by Vikram K. Mulligan, Flatiron Institute (vmulligan@flatironinstitute.org). + +[[_TOC_]] + +## Description + +Just as [[SimpleMetrics]] measure some property of a pose, EnsembleMetrics measure some property of a group (or _ensemble_) of poses. They are designed to be used in two phases. In the _accumulation_ phase, an EnsembleMetric is applied to each pose in an ensemble in sequence, allowing it to store any relevant measurements from that pose that will later be needed to calculate properties of the ensemble. In the _reporting_ phase, the EnsembleMetric generates a report about the properties of the ensemble and writes this report to disk or to tracer. Following reporting, an EnsembleMetric may be _interrogated_ by such modules as the [[EnsembleFilter]], allowing retrieval of any floating-point values computed by the EnsembleMetric for filtering. Alternatively, the EnsembleMetric may be _reset_ for re-use (meaning that accumulated data, but not configuration settings, are wiped). + +## Usage modes + +EnsembleMetrics have three intended usage modes in [[RosettaScripts]]: + +Mode | Setup | Accumulation Phase | Reporting Phase | Subsequent Interrogation | Subsequent Resetting +---- | ----- | ------------------ | --------------- | ------------------------ | -------------------- +Basic accumulator mode | Added to a protocol at point of accumulation. | The EnsembleMetric is applied to each pose that the RosettaScripts script handles, in sequence. | The EnsembleMetric produces its report at termination of the RosettaScripts application. This report covers all poses seen during this RosettaScripts run. | None. | None. +Internal generation mode | Provided with a ParsedProtocol for generating the ensemble of poses from the input pose, and a number to generate. Added to protocol at point where ensemble should be generated from pose at that point. | Accumulates information about each pose in the ensemble it generates. Poses are then discaded. | The report is provided immediately once the ensemble has been generated. The script then continues with the input pose. | After reporting. | On next nstruct (repeat) or next job. +Multiple pose mover mode | Set to use input from a mover that produces many outputs (a [[MultiplePoseMover]]). Placed in script after such a mover. | Collects data from each pose produced by previous mover. | Reports immediately after collecting data on all poses produced by previous mover. The script then continues on. | After reporting. | On next nstruct (repeat) or next job. + +CONTINUE HEREs + +##Available EnsembleMetrics + +EnsembleMetric | Description +------------ | ------------- +**[[CentralTendency]]** | Takes a [[real-valued SimpleMetric|SimpleMetrics]], applies it to each pose in an ensemble, and returns measures of central tendency (mean, median, mode) and other measures of the distribution (standard deviation, standard error, etc.). + +##See Also + +* [[SimpleMetrics]]: Measure a property of a single pose. +* [[Filters|Filters-RosettaScripts]]: Filter on a measured feature of a pose. +* [[EnsembleFilter]]: Filter on a property of an ensemble of poses. +* [[Movers|Movers-RosettaScripts]]: Modify a pose. +* [[I want to do x]]: Guide to choosing a Rosetta protocol. \ No newline at end of file From b3730e1e00ebdf585f8f69139ce4ba576e73d55d Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Wed, 9 Feb 2022 19:56:34 -0500 Subject: [PATCH 08/34] Fleshing out EnsembleMetric documentation. --- .../EnsembleMetrics/EnsembleMetrics.md | 101 +++++++++++++++++- 1 file changed, 96 insertions(+), 5 deletions(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index 63fb0f03d..afee96cf7 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -9,6 +9,12 @@ Page created Wed, 9 February 2022 by Vikram K. Mulligan, Flatiron Institute (vmu Just as [[SimpleMetrics]] measure some property of a pose, EnsembleMetrics measure some property of a group (or _ensemble_) of poses. They are designed to be used in two phases. In the _accumulation_ phase, an EnsembleMetric is applied to each pose in an ensemble in sequence, allowing it to store any relevant measurements from that pose that will later be needed to calculate properties of the ensemble. In the _reporting_ phase, the EnsembleMetric generates a report about the properties of the ensemble and writes this report to disk or to tracer. Following reporting, an EnsembleMetric may be _interrogated_ by such modules as the [[EnsembleFilter]], allowing retrieval of any floating-point values computed by the EnsembleMetric for filtering. Alternatively, the EnsembleMetric may be _reset_ for re-use (meaning that accumulated data, but not configuration settings, are wiped). +##Available EnsembleMetrics + +EnsembleMetric | Description +------------ | ------------- +**[[CentralTendency]]** | Takes a [[real-valued SimpleMetric|SimpleMetrics]], applies it to each pose in an ensemble, and returns measures of central tendency (mean, median, mode) and other measures of the distribution (standard deviation, standard error, etc.). + ## Usage modes EnsembleMetrics have three intended usage modes in [[RosettaScripts]]: @@ -19,13 +25,98 @@ Basic accumulator mode | Added to a protocol at point of accumulation. | The Ens Internal generation mode | Provided with a ParsedProtocol for generating the ensemble of poses from the input pose, and a number to generate. Added to protocol at point where ensemble should be generated from pose at that point. | Accumulates information about each pose in the ensemble it generates. Poses are then discaded. | The report is provided immediately once the ensemble has been generated. The script then continues with the input pose. | After reporting. | On next nstruct (repeat) or next job. Multiple pose mover mode | Set to use input from a mover that produces many outputs (a [[MultiplePoseMover]]). Placed in script after such a mover. | Collects data from each pose produced by previous mover. | Reports immediately after collecting data on all poses produced by previous mover. The script then continues on. | After reporting. | On next nstruct (repeat) or next job. -CONTINUE HEREs +### Example of basic usage -##Available EnsembleMetrics +In this example, the input is a cyclic peptide. This script perturbs the peptide backbone, relaxes the peptide, and then applies a [[CentralTendency EnsembleMetric|CentralTendency]] that in turn applies a [[TotalEnergyMetric]], measuring total score. At the end of execution (after repeat execution, a number of times set with the `-nstruct` flag), the EnsembleMetric produces a report about the mean, median, mode, etc. of the samples. -EnsembleMetric | Description ------------- | ------------- -**[[CentralTendency]]** | Takes a [[real-valued SimpleMetric|SimpleMetrics]], applies it to each pose in an ensemble, and returns measures of central tendency (mean, median, mode) and other measures of the distribution (standard deviation, standard error, etc.). +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### Example of internal generation mode + +TODO + +### Example of multiple pose mover mode + +TODO + +## Interrogating EnsembleMetric floating-point values by name + +## Note about running in MPI mode + +TODO ##See Also From 97d78921d5e8239bc7843bf0f2afd1f7dcd36883 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Wed, 9 Feb 2022 23:15:51 -0500 Subject: [PATCH 09/34] Updating auto-generated docs. --- .../ensemble_metric_CentralTendency_type.md | 5 ++++- .../xsd/filter_EnsembleFilter_type.md | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 scripting_documentation/RosettaScripts/xsd/filter_EnsembleFilter_type.md diff --git a/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md b/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md index 71e9363f8..833bb10a0 100644 --- a/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md +++ b/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md @@ -7,7 +7,8 @@ An ensemble metric that takes a real-valued simple metric, applies it to all pos ```xml + +_Autogenerated Tag Syntax Documentation:_ + +--- +A filter that filters based on some named float-valued property measured by an EnsembleMetric. Note that the value produced by the EnsembleMetric is based on an ensemble generated earlier in the protocol, presumably from the pose on which we are currently filtering. + +```xml + +``` + +- **ensemble_metric**: (REQUIRED) A previously-defined EnsembleMetric that produces at least one floating-point value. This filter will filter a pose based on that value. +- **named_value**: (REQUIRED) A named floating-point value produced by the EnsembleMetric, on which this filter will filter. +- **threshold**: The threshold for rejecting a pose. +- **filter_acceptance_mode**: The criterion for ACCEPTING a pose. For instance, if the value returned by the ensemble metric is greater than the threshold, and the mode is 'less_than_or_equal' (the default mode), then the pose is rejected. Allowed modes are: 'greater_than', 'less_than', 'greater_than_or_equal', 'less_than_or_equal', 'equal', and 'not_equal'. +- **confidence**: Probability that the pose will be filtered out if it does not pass this Filter + +--- From ca9eebdb51f0460004ccc1b43deaf4d0ca1244d2 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 15:57:07 -0500 Subject: [PATCH 10/34] Adding note about accessing named values. --- .../EnsembleMetrics/EnsembleMetrics.md | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index afee96cf7..5c1483324 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -114,6 +114,52 @@ TODO ## Interrogating EnsembleMetric floating-point values by name +Each EnsembleMetric can return one or more floating-point values describing different features of the ensemble. Each of these has a name associated with it. + +### From C++ or Python code + +From C++ (or Python) code, after an EnsembleMetric produces its final report, these values can be interrogated with the `get_metric_by_name()` method. To see all names offered by a particular EnsembleMetric, call `real_valued_metric_names()`: + +```C++ + // Create an EnsembleMetric: + CentralTendency my_ensemble_metric; + // Configure this EnsembleMetric here. This particular + // example would require a SimpleMetric to be passed to + // it, though in general the setup for EnsembleMetrics + // will vary from EnsembleMetric subclass to subclass. + + for( core::Size i=1; i<=nstruct; ++i ) { + // Generate a pose here. + // ... + + // Collect data from it: + my_ensemble_metric.apply( pose ); + } + + // Produce final report (to tracer or disk, + // depending on configuration): + my_ensemble_metric.produce_final_report(); + + // Get the names of floating point values + // that the EnsembleMetric has calculated: + utility::vector1< std::string > const value_names( + my_ensemble_metric.real_valued_metric_names() + ); + + // Confirm that "median" is a name of a value + // returned by this particular metric: + runtime_assert( value_names.has_value( "median" ) ); //This passes. + + // Get the median value from the ensemble: + core::Real const median_value( + my_ensemble_metric.get_metric_by_name( "median" ) + ); +``` + +### Using filters + +TODO + ## Note about running in MPI mode TODO From bbfdb09d097f6de0fea8de16107f577d9704b2b6 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 16:08:53 -0500 Subject: [PATCH 11/34] Adding note about filtering. --- .../RosettaScripts/EnsembleMetrics/EnsembleMetrics.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index 5c1483324..773b568a9 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -158,7 +158,11 @@ From C++ (or Python) code, after an EnsembleMetric produces its final report, th ### Using filters -TODO +In RosettaScripts (or in PyRosetta or even C++ code), when an EnsembleMetric is used in internal generator mode or multiple pose mover mode (_i.e._ it applies itself to an ensemble of poses that it either generates internally or receives from a previous mover) a subsequent [[EnsembleFilter]] may be used to interrogate a named value computed by the EnsembleMetric, and to cause the protocol to pass or fail depending on that property of the ensemble. + +Why would someone want to do this? One example would be if one wanted to write a script that would design a protein, generate for each design a conformational ensemble, and score the propensity to favour the designed state (_e.g._ with the planned [[PNear]] EnsembleMetric), then discard those designs that have poor propensith to favour the designed state based on the ensemble analysis. This would ensure that one could produce thousands or tens of thousands of designs in memory, analyze them all, and only write to disk the ones worth carrying forward. Other similar usage patterns are possible. + +For more information, see the page for the [[EnsembleFilter]]. ## Note about running in MPI mode From 9dd6e8930753870e202fc3a914fbb9507ef7d06d Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 16:11:27 -0500 Subject: [PATCH 12/34] Revising text slightly. --- .../RosettaScripts/EnsembleMetrics/EnsembleMetrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index 773b568a9..9b48cb12c 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -160,7 +160,7 @@ From C++ (or Python) code, after an EnsembleMetric produces its final report, th In RosettaScripts (or in PyRosetta or even C++ code), when an EnsembleMetric is used in internal generator mode or multiple pose mover mode (_i.e._ it applies itself to an ensemble of poses that it either generates internally or receives from a previous mover) a subsequent [[EnsembleFilter]] may be used to interrogate a named value computed by the EnsembleMetric, and to cause the protocol to pass or fail depending on that property of the ensemble. -Why would someone want to do this? One example would be if one wanted to write a script that would design a protein, generate for each design a conformational ensemble, and score the propensity to favour the designed state (_e.g._ with the planned [[PNear]] EnsembleMetric), then discard those designs that have poor propensith to favour the designed state based on the ensemble analysis. This would ensure that one could produce thousands or tens of thousands of designs in memory, analyze them all, and only write to disk the ones worth carrying forward. Other similar usage patterns are possible. +Why would someone want to do this? One example would be if one wanted to write a script that would design a protein, generate for each design a conformational ensemble, and score the propensity to favour the designed conformation (_e.g._ with the planned [[PNear]] EnsembleMetric), then discard those designs that have poor propensity to favour the designed state based on the ensemble analysis. This would ensure that one could produce thousands or tens of thousands of designs in memory, analyze them all, and only write to disk the ones worth carrying forward. Variant patterns include generating initial designs using a low-cost initial design protocol, doing moderate-cost ensemble analysis, discarding poor designs with the EnsembleFilter, and refining those designs that pass the filter using higher-cost refinement protocols. Other similar usage patterns are possible. For more information, see the page for the [[EnsembleFilter]]. From 9629b4b3a5db9f5af38ca7581c2c0b16aad4620d Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 16:16:42 -0500 Subject: [PATCH 13/34] Adding note about MPI mode. --- .../RosettaScripts/EnsembleMetrics/EnsembleMetrics.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index 9b48cb12c..b53f94158 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -166,9 +166,9 @@ For more information, see the page for the [[EnsembleFilter]]. ## Note about running in MPI mode -TODO +Note that EnsembleMetrics that run in different MPI processes cannot share information about the different poses that they have seen at present. This means that they will produce reports about only the ensemble of poses that they have seen _in their own MPI process_. They can still be used in MPI mode to analyse different ensembles in each MPI process. Support for generating giant ensembles by MPI and analysing them with EnsembleMetrics is planned for the future. -##See Also +## See Also * [[SimpleMetrics]]: Measure a property of a single pose. * [[Filters|Filters-RosettaScripts]]: Filter on a measured feature of a pose. From 33019004e61376e3a11572706b34140d5b178fa6 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 18:28:56 -0500 Subject: [PATCH 14/34] Adding example of internal generation mode. --- .../EnsembleMetrics/EnsembleMetrics.md | 122 +++++++++++++++++- 1 file changed, 116 insertions(+), 6 deletions(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index b53f94158..f89a2aa9a 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -27,7 +27,7 @@ Multiple pose mover mode | Set to use input from a mover that produces many outp ### Example of basic usage -In this example, the input is a cyclic peptide. This script perturbs the peptide backbone, relaxes the peptide, and then applies a [[CentralTendency EnsembleMetric|CentralTendency]] that in turn applies a [[TotalEnergyMetric]], measuring total score. At the end of execution (after repeat execution, a number of times set with the `-nstruct` flag), the EnsembleMetric produces a report about the mean, median, mode, etc. of the samples. +In this example, the input is a cyclic peptide (provided with the `-in:file:s` commandline option). This script perturbs the peptide backbone, relaxes the peptide, and then applies a [[CentralTendency EnsembleMetric|CentralTendency]] that in turn applies a [[TotalEnergyMetric]], measuring total score. At the end of execution (after repeat execution, a number of times set with the `-nstruct` commandline option), the EnsembleMetric produces a report about the mean, median, mode, etc. of the samples. ```xml @@ -38,7 +38,9 @@ In this example, the input is a cyclic peptide. This script perturbs the peptid - + @@ -59,7 +61,9 @@ In this example, the input is a cyclic peptide. This script perturbs the peptid - + @@ -96,17 +100,123 @@ In this example, the input is a cyclic peptide. This script perturbs the peptid - + - + ``` ### Example of internal generation mode -TODO +This example is similar to the example above, only this time, we load one or more cyclic peptides (provided with the `-in:file:s` or `-in:file:l` commandline options), generate a conformational ensemble for each peptide _in memory_, without writing all structures to disk, and perform ensemble analysis on that ensemble, filtering on the results with the [[EnsembleMetric]]. + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` ### Example of multiple pose mover mode From a5778bb6f493572edf75aebc22242ff2e49d86ba Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 18:38:22 -0500 Subject: [PATCH 15/34] Adding note about multithreading. --- .../EnsembleMetrics/EnsembleMetrics.md | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index f89a2aa9a..f9dd81b62 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -5,7 +5,7 @@ Page created Wed, 9 February 2022 by Vikram K. Mulligan, Flatiron Institute (vmu [[_TOC_]] -## Description +## 1. Description Just as [[SimpleMetrics]] measure some property of a pose, EnsembleMetrics measure some property of a group (or _ensemble_) of poses. They are designed to be used in two phases. In the _accumulation_ phase, an EnsembleMetric is applied to each pose in an ensemble in sequence, allowing it to store any relevant measurements from that pose that will later be needed to calculate properties of the ensemble. In the _reporting_ phase, the EnsembleMetric generates a report about the properties of the ensemble and writes this report to disk or to tracer. Following reporting, an EnsembleMetric may be _interrogated_ by such modules as the [[EnsembleFilter]], allowing retrieval of any floating-point values computed by the EnsembleMetric for filtering. Alternatively, the EnsembleMetric may be _reset_ for re-use (meaning that accumulated data, but not configuration settings, are wiped). @@ -15,7 +15,7 @@ EnsembleMetric | Description ------------ | ------------- **[[CentralTendency]]** | Takes a [[real-valued SimpleMetric|SimpleMetrics]], applies it to each pose in an ensemble, and returns measures of central tendency (mean, median, mode) and other measures of the distribution (standard deviation, standard error, etc.). -## Usage modes +## 2. Usage modes EnsembleMetrics have three intended usage modes in [[RosettaScripts]]: @@ -25,7 +25,7 @@ Basic accumulator mode | Added to a protocol at point of accumulation. | The Ens Internal generation mode | Provided with a ParsedProtocol for generating the ensemble of poses from the input pose, and a number to generate. Added to protocol at point where ensemble should be generated from pose at that point. | Accumulates information about each pose in the ensemble it generates. Poses are then discaded. | The report is provided immediately once the ensemble has been generated. The script then continues with the input pose. | After reporting. | On next nstruct (repeat) or next job. Multiple pose mover mode | Set to use input from a mover that produces many outputs (a [[MultiplePoseMover]]). Placed in script after such a mover. | Collects data from each pose produced by previous mover. | Reports immediately after collecting data on all poses produced by previous mover. The script then continues on. | After reporting. | On next nstruct (repeat) or next job. -### Example of basic usage +### 2.1 Example of basic usage In this example, the input is a cyclic peptide (provided with the `-in:file:s` commandline option). This script perturbs the peptide backbone, relaxes the peptide, and then applies a [[CentralTendency EnsembleMetric|CentralTendency]] that in turn applies a [[TotalEnergyMetric]], measuring total score. At the end of execution (after repeat execution, a number of times set with the `-nstruct` commandline option), the EnsembleMetric produces a report about the mean, median, mode, etc. of the samples. @@ -110,7 +110,7 @@ In this example, the input is a cyclic peptide (provided with the `-in:file:s` c ``` -### Example of internal generation mode +### 2.2 Example of internal generation mode This example is similar to the example above, only this time, we load one or more cyclic peptides (provided with the `-in:file:s` or `-in:file:l` commandline options), generate a conformational ensemble for each peptide _in memory_, without writing all structures to disk, and perform ensemble analysis on that ensemble, filtering on the results with the [[EnsembleMetric]]. @@ -218,15 +218,19 @@ This example is similar to the example above, only this time, we load one or mor ``` -### Example of multiple pose mover mode +#### 2.2.1 Multi-threading + +When used in internal generation mode, the EnsembleMetric can generate members of the ensemble in [[parallel threads|Multithreading]]. This uses the [[RosettaThreadManager]], assigning work to available threads up to a user-specied maximum number to request. To set the maximum number of threads to request, use the `n_threads` option (where a setting of zero means to request all available threads). This functionality is only available in multi-threaded builds of Rosetta (built using `extras=cxx11thread` in the `scons` command), and requires that the total number of Rosetta threads be set at the command line using the `-multithreading:total_threads` commandline option. Note that an EnsembleMetric may be assigned fewer than the requested number of threads if other modules are using threads; at a minimum, it is guaranteed to be assigned the calling thread. + +### 2.3 Example of multiple pose mover mode TODO -## Interrogating EnsembleMetric floating-point values by name +## 3. Interrogating EnsembleMetric floating-point values by name Each EnsembleMetric can return one or more floating-point values describing different features of the ensemble. Each of these has a name associated with it. -### From C++ or Python code +### 3.1 From C++ or Python code From C++ (or Python) code, after an EnsembleMetric produces its final report, these values can be interrogated with the `get_metric_by_name()` method. To see all names offered by a particular EnsembleMetric, call `real_valued_metric_names()`: @@ -266,19 +270,19 @@ From C++ (or Python) code, after an EnsembleMetric produces its final report, th ); ``` -### Using filters +### 3.2 Using filters In RosettaScripts (or in PyRosetta or even C++ code), when an EnsembleMetric is used in internal generator mode or multiple pose mover mode (_i.e._ it applies itself to an ensemble of poses that it either generates internally or receives from a previous mover) a subsequent [[EnsembleFilter]] may be used to interrogate a named value computed by the EnsembleMetric, and to cause the protocol to pass or fail depending on that property of the ensemble. Why would someone want to do this? One example would be if one wanted to write a script that would design a protein, generate for each design a conformational ensemble, and score the propensity to favour the designed conformation (_e.g._ with the planned [[PNear]] EnsembleMetric), then discard those designs that have poor propensity to favour the designed state based on the ensemble analysis. This would ensure that one could produce thousands or tens of thousands of designs in memory, analyze them all, and only write to disk the ones worth carrying forward. Variant patterns include generating initial designs using a low-cost initial design protocol, doing moderate-cost ensemble analysis, discarding poor designs with the EnsembleFilter, and refining those designs that pass the filter using higher-cost refinement protocols. Other similar usage patterns are possible. -For more information, see the page for the [[EnsembleFilter]]. +Note that if one simply wants the value produced by the EnsembleMetric to be recorded in the pose, the EnsembleFilter can be used for that purpose as well by setting `confidence="0"` (so that the filter never rejects anything, but only reports). At some point, a SimpleMetric may be written for that purpose. For more information, see the page for the [[EnsembleFilter]]. -## Note about running in MPI mode +## 4. Note about running in MPI mode Note that EnsembleMetrics that run in different MPI processes cannot share information about the different poses that they have seen at present. This means that they will produce reports about only the ensemble of poses that they have seen _in their own MPI process_. They can still be used in MPI mode to analyse different ensembles in each MPI process. Support for generating giant ensembles by MPI and analysing them with EnsembleMetrics is planned for the future. -## See Also +## 5. See Also * [[SimpleMetrics]]: Measure a property of a single pose. * [[Filters|Filters-RosettaScripts]]: Filter on a measured feature of a pose. From a04596251da283a4aac16a07d9165cc84fd25f03 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 21:48:06 -0500 Subject: [PATCH 16/34] Updating note about multi-threading. --- .../RosettaScripts/EnsembleMetrics/EnsembleMetrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index f9dd81b62..a1c596109 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -220,7 +220,7 @@ This example is similar to the example above, only this time, we load one or mor #### 2.2.1 Multi-threading -When used in internal generation mode, the EnsembleMetric can generate members of the ensemble in [[parallel threads|Multithreading]]. This uses the [[RosettaThreadManager]], assigning work to available threads up to a user-specied maximum number to request. To set the maximum number of threads to request, use the `n_threads` option (where a setting of zero means to request all available threads). This functionality is only available in multi-threaded builds of Rosetta (built using `extras=cxx11thread` in the `scons` command), and requires that the total number of Rosetta threads be set at the command line using the `-multithreading:total_threads` commandline option. Note that an EnsembleMetric may be assigned fewer than the requested number of threads if other modules are using threads; at a minimum, it is guaranteed to be assigned the calling thread. +When used in internal generation mode, the EnsembleMetric can generate members of the ensemble in [[parallel threads|Multithreading]]. This uses the [[RosettaThreadManager]], assigning work to available threads up to a user-specied maximum number to request. To set the maximum number of threads to request, use the `n_threads` option (where a setting of zero means to request all available threads). This functionality is only available in multi-threaded builds of Rosetta (built using `extras=cxx11thread` in the `scons` command), and requires that the total number of Rosetta threads be set at the command line using the `-multithreading:total_threads` commandline option. Note that an EnsembleMetric may be assigned fewer than the requested number of threads if other modules are using threads; at a minimum, it is guaranteed to be assigned the calling thread. **Note: this is a _highly_ experimental feature that can fail for many ensemble-generating protocols. When in doubt, it is safest to set `n_threads` to 1 (the default) for an EnsembleMetric.** ### 2.3 Example of multiple pose mover mode From eb93e85d9bf1858897fc981c174639468d8dc925 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 22:53:08 -0500 Subject: [PATCH 17/34] Adding example for mode 3. --- .../EnsembleMetrics/EnsembleMetrics.md | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index a1c596109..c9fc29d57 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -224,7 +224,61 @@ When used in internal generation mode, the EnsembleMetric can generate members o ### 2.3 Example of multiple pose mover mode -TODO +The following example uses the [[BundleGridSampler]] mover to grid-sample helical bundle conformations parametrically. For each conformation sampled, the protocol then uses the [[Disulfidize]] mover to generate all possible disulfides joining the helices as an ensemble of poses. It then computes the median disulfide pair energy, and discards conformations for which this energy is above a cutoff. + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` ## 3. Interrogating EnsembleMetric floating-point values by name From 62a915844db80b2e5fb7a2fca23de4e324eca579 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 22:55:37 -0500 Subject: [PATCH 18/34] Add EnsembleFilter docs to filter list. --- .../RosettaScripts/Filters/Filters-RosettaScripts.md | 1 + 1 file changed, 1 insertion(+) diff --git a/scripting_documentation/RosettaScripts/Filters/Filters-RosettaScripts.md b/scripting_documentation/RosettaScripts/Filters/Filters-RosettaScripts.md index 5beb4a849..8518db1fe 100644 --- a/scripting_documentation/RosettaScripts/Filters/Filters-RosettaScripts.md +++ b/scripting_documentation/RosettaScripts/Filters/Filters-RosettaScripts.md @@ -37,6 +37,7 @@ Filter | Description **[[CompoundStatement|CompoundStatementFilter]]** | Uses previously defined filters with logical operations to construct a compound filter. **[[CombinedValue|CombinedValueFilter]]** | Weighted sum of multiple filters. **[[CalculatorFilter]]** | Combine multiple filters with a mathematical expression. +**[[EnsembleFilter]]** | Filter based, not on a property of a single pose, but on a property of an _ensemble_ of many poses. **[[ReplicateFilter]]** | Repeat a filter multiple times and average. **[[Boltzmann|BoltzmannFilter]]** | Boltzmann weighted sum of positive/negative filters. **[[MoveBeforeFilter]]** | Apply a mover before applying the filter. From d38608f9c01f68b2ea717778ad2f9a3941f2c252 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 22:59:47 -0500 Subject: [PATCH 19/34] Moving some filters that were in the wrong folder. --- .../Filters/{ => filter_pages}/AlignmentAAFinderFilter.md | 0 .../Filters/{ => filter_pages}/AlignmentGapInserterFilter.md | 0 .../RosettaScripts/Filters/{ => filter_pages}/ChainBreakFilter.md | 0 .../RosettaScripts/Filters/{ => filter_pages}/FragQualFilter.md | 0 .../Filters/{ => filter_pages}/FragmentScoreFilter.md | 0 .../Filters/{ => filter_pages}/HelixHelixAngleFilter.md | 0 .../RosettaScripts/Filters/{ => filter_pages}/HolesFilter.md | 0 .../{ => filter_pages}/LongestContinuousApolarSegmentFilter.md | 0 .../Filters/{ => filter_pages}/MPSpanAngleFilter.md | 0 .../Filters/{ => filter_pages}/SequenceDistanceFilter.md | 0 .../Filters/{ => filter_pages}/SpanTopologyMatchPoseFilter.md | 0 .../RosettaScripts/Filters/{ => filter_pages}/TMsAACompFilter.md | 0 12 files changed, 0 insertions(+), 0 deletions(-) rename scripting_documentation/RosettaScripts/Filters/{ => filter_pages}/AlignmentAAFinderFilter.md (100%) rename scripting_documentation/RosettaScripts/Filters/{ => filter_pages}/AlignmentGapInserterFilter.md (100%) rename scripting_documentation/RosettaScripts/Filters/{ => filter_pages}/ChainBreakFilter.md (100%) rename scripting_documentation/RosettaScripts/Filters/{ => filter_pages}/FragQualFilter.md (100%) rename scripting_documentation/RosettaScripts/Filters/{ => filter_pages}/FragmentScoreFilter.md (100%) rename scripting_documentation/RosettaScripts/Filters/{ => filter_pages}/HelixHelixAngleFilter.md (100%) rename scripting_documentation/RosettaScripts/Filters/{ => filter_pages}/HolesFilter.md (100%) rename scripting_documentation/RosettaScripts/Filters/{ => filter_pages}/LongestContinuousApolarSegmentFilter.md (100%) rename scripting_documentation/RosettaScripts/Filters/{ => filter_pages}/MPSpanAngleFilter.md (100%) rename scripting_documentation/RosettaScripts/Filters/{ => filter_pages}/SequenceDistanceFilter.md (100%) rename scripting_documentation/RosettaScripts/Filters/{ => filter_pages}/SpanTopologyMatchPoseFilter.md (100%) rename scripting_documentation/RosettaScripts/Filters/{ => filter_pages}/TMsAACompFilter.md (100%) diff --git a/scripting_documentation/RosettaScripts/Filters/AlignmentAAFinderFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/AlignmentAAFinderFilter.md similarity index 100% rename from scripting_documentation/RosettaScripts/Filters/AlignmentAAFinderFilter.md rename to scripting_documentation/RosettaScripts/Filters/filter_pages/AlignmentAAFinderFilter.md diff --git a/scripting_documentation/RosettaScripts/Filters/AlignmentGapInserterFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/AlignmentGapInserterFilter.md similarity index 100% rename from scripting_documentation/RosettaScripts/Filters/AlignmentGapInserterFilter.md rename to scripting_documentation/RosettaScripts/Filters/filter_pages/AlignmentGapInserterFilter.md diff --git a/scripting_documentation/RosettaScripts/Filters/ChainBreakFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/ChainBreakFilter.md similarity index 100% rename from scripting_documentation/RosettaScripts/Filters/ChainBreakFilter.md rename to scripting_documentation/RosettaScripts/Filters/filter_pages/ChainBreakFilter.md diff --git a/scripting_documentation/RosettaScripts/Filters/FragQualFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/FragQualFilter.md similarity index 100% rename from scripting_documentation/RosettaScripts/Filters/FragQualFilter.md rename to scripting_documentation/RosettaScripts/Filters/filter_pages/FragQualFilter.md diff --git a/scripting_documentation/RosettaScripts/Filters/FragmentScoreFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/FragmentScoreFilter.md similarity index 100% rename from scripting_documentation/RosettaScripts/Filters/FragmentScoreFilter.md rename to scripting_documentation/RosettaScripts/Filters/filter_pages/FragmentScoreFilter.md diff --git a/scripting_documentation/RosettaScripts/Filters/HelixHelixAngleFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/HelixHelixAngleFilter.md similarity index 100% rename from scripting_documentation/RosettaScripts/Filters/HelixHelixAngleFilter.md rename to scripting_documentation/RosettaScripts/Filters/filter_pages/HelixHelixAngleFilter.md diff --git a/scripting_documentation/RosettaScripts/Filters/HolesFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/HolesFilter.md similarity index 100% rename from scripting_documentation/RosettaScripts/Filters/HolesFilter.md rename to scripting_documentation/RosettaScripts/Filters/filter_pages/HolesFilter.md diff --git a/scripting_documentation/RosettaScripts/Filters/LongestContinuousApolarSegmentFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/LongestContinuousApolarSegmentFilter.md similarity index 100% rename from scripting_documentation/RosettaScripts/Filters/LongestContinuousApolarSegmentFilter.md rename to scripting_documentation/RosettaScripts/Filters/filter_pages/LongestContinuousApolarSegmentFilter.md diff --git a/scripting_documentation/RosettaScripts/Filters/MPSpanAngleFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/MPSpanAngleFilter.md similarity index 100% rename from scripting_documentation/RosettaScripts/Filters/MPSpanAngleFilter.md rename to scripting_documentation/RosettaScripts/Filters/filter_pages/MPSpanAngleFilter.md diff --git a/scripting_documentation/RosettaScripts/Filters/SequenceDistanceFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/SequenceDistanceFilter.md similarity index 100% rename from scripting_documentation/RosettaScripts/Filters/SequenceDistanceFilter.md rename to scripting_documentation/RosettaScripts/Filters/filter_pages/SequenceDistanceFilter.md diff --git a/scripting_documentation/RosettaScripts/Filters/SpanTopologyMatchPoseFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/SpanTopologyMatchPoseFilter.md similarity index 100% rename from scripting_documentation/RosettaScripts/Filters/SpanTopologyMatchPoseFilter.md rename to scripting_documentation/RosettaScripts/Filters/filter_pages/SpanTopologyMatchPoseFilter.md diff --git a/scripting_documentation/RosettaScripts/Filters/TMsAACompFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/TMsAACompFilter.md similarity index 100% rename from scripting_documentation/RosettaScripts/Filters/TMsAACompFilter.md rename to scripting_documentation/RosettaScripts/Filters/filter_pages/TMsAACompFilter.md From 11215f250ac63370b3d33720a5bf5e6c7fb8f4ff Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 23:12:25 -0500 Subject: [PATCH 20/34] Adding documentation for EnsembleFilter. --- .../Filters/filter_pages/EnsembleFilter.md | 132 ++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 scripting_documentation/RosettaScripts/Filters/filter_pages/EnsembleFilter.md diff --git a/scripting_documentation/RosettaScripts/Filters/filter_pages/EnsembleFilter.md b/scripting_documentation/RosettaScripts/Filters/filter_pages/EnsembleFilter.md new file mode 100644 index 000000000..7dfbda089 --- /dev/null +++ b/scripting_documentation/RosettaScripts/Filters/filter_pages/EnsembleFilter.md @@ -0,0 +1,132 @@ +# EnsembleFilter +*Back to [[SimpleMetrics]] page.* +*Back to [[Filters | Filters-RosettaScripts]] page.* +## EnsembleFilter + +Created by Vikram K. Mulligan (vmulligan@flatironinstitute.org) on 10 February 2022. + +[[_TOC_]] + +### Description + +This filter takes as input an [[EnsembleMetric|EnsembleMetrics]] that has been used to evaluate some set of properties of an ensemble of filters, retrives a named floating-point value from the metric, and filters based on whether that value is greater than, equal to, or less than some threshold. (Note that [[EnsembleMetrics]] evaluate a property of a collection or _ensemble_ poses, not of a single pose. This makes this filter unusual: where most discard a trajectory based on the state of a single pose, this can discard a trajectory based on the state of large ensemble of poses -- for example, based on many sampled conformatinos of a single design.) + + +### Options + +[[include:filter_SimpleMetricFilter_type]] + +### Example: + +In this example, we load one or more cyclic peptides (provided with the `-in:file:s` or `-in:file:l` commandline options), generate a conformational ensemble of slightly perturbed conformations for each peptide _in memory_, without writing all structures to disk, and perform ensemble analysis on that ensemble with the [[CentralTendency EnsembleMetric|CentralTendency]], filtering on the results with the EnsembleFilter. Only those peptides that have low-energy ensembles of perturbed conformations pass the filter. + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +### See also + +* [[EnsembleMetrics]]: Available SimpleMetrics +* [[SimpleMetrics]]: Available SimpleMetrics +* [[SimpleMetricFilter]]: Filter on an arbitrary SimpleMetric +* [[Movers|Movers-RosettaScripts]]: Available Movers +* [[I want to do x]]: Guide to choosing a Rosetta protocol. \ No newline at end of file From b7e9ef79447b69e504b0ca3e0f2f8c1add90e04a Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 23:13:08 -0500 Subject: [PATCH 21/34] Minor typos. --- .../RosettaScripts/EnsembleMetrics/EnsembleMetrics.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index c9fc29d57..d9559cf96 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -112,7 +112,7 @@ In this example, the input is a cyclic peptide (provided with the `-in:file:s` c ### 2.2 Example of internal generation mode -This example is similar to the example above, only this time, we load one or more cyclic peptides (provided with the `-in:file:s` or `-in:file:l` commandline options), generate a conformational ensemble for each peptide _in memory_, without writing all structures to disk, and perform ensemble analysis on that ensemble, filtering on the results with the [[EnsembleMetric]]. +This example is similar to the example above, only this time, we load one or more cyclic peptides (provided with the `-in:file:s` or `-in:file:l` commandline options), generate a conformational ensemble for each peptide _in memory_, without writing all structures to disk, and perform ensemble analysis on that ensemble, filtering on the results with the [[EnsembleFilter]]. ```xml @@ -215,7 +215,6 @@ This example is similar to the example above, only this time, we load one or mor - ``` #### 2.2.1 Multi-threading From fc6e6749a4cd0c7f0f819f7380275f24100fdc7e Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 23:15:41 -0500 Subject: [PATCH 22/34] Expanding note about mode. --- .../EnsembleMetrics/ensemble_metric_pages/CentralTendency.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md index 2a2b9678f..80393e4f0 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md @@ -31,7 +31,7 @@ Range | range | the largest value seen minus the smallest. #### Note about mode -The mode of a set of floating-point numbers can be thrown off by floating-point error. For instance, two poses may have energies of -3.7641 kJ/mol, but the process of computing that energy may result in slightly different values at the 15th decimal point. This would prevent the filter from recognizing this is at the most frequent value. +The mode of a set of floating-point numbers can be thrown off by floating-point error. For instance, two poses may have energies of -3.7641 kJ/mol, but the process of computing that energy may result in slightly different values at the 15th decimal point. This could prevent the filter from recognizing this is at the most frequent value. Mode is most useful as a metric when the "floating-point" values are actually integers (for instance, given a [[SimpleMetric|SimpleMetrics]] like the [[SelectedResidueCountMetric]], which returns integer counts). ##See Also From 08dc81e128e6259038d411f636a7159d5150169f Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 10 Feb 2022 23:23:36 -0500 Subject: [PATCH 23/34] Minor tweak. --- .../RosettaScripts/EnsembleMetrics/EnsembleMetrics.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index d9559cf96..3f30a2cf1 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -288,8 +288,10 @@ Each EnsembleMetric can return one or more floating-point values describing diff From C++ (or Python) code, after an EnsembleMetric produces its final report, these values can be interrogated with the `get_metric_by_name()` method. To see all names offered by a particular EnsembleMetric, call `real_valued_metric_names()`: ```C++ + // C++ pseudo-code: + // Create an EnsembleMetric: - CentralTendency my_ensemble_metric; + CentralTendencyEnsembleMetric my_ensemble_metric; // Configure this EnsembleMetric here. This particular // example would require a SimpleMetric to be passed to // it, though in general the setup for EnsembleMetrics @@ -341,4 +343,4 @@ Note that EnsembleMetrics that run in different MPI processes cannot share infor * [[Filters|Filters-RosettaScripts]]: Filter on a measured feature of a pose. * [[EnsembleFilter]]: Filter on a property of an ensemble of poses. * [[Movers|Movers-RosettaScripts]]: Modify a pose. -* [[I want to do x]]: Guide to choosing a Rosetta protocol. \ No newline at end of file +* [[I want to do x]]: Guide to choosing a Rosetta protocol. From af0cded938bd0459692a7791ca8df89a1d975c65 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Thu, 24 Feb 2022 19:39:23 -0500 Subject: [PATCH 24/34] Updating note about MPI. --- .../EnsembleMetrics/EnsembleMetrics.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index 3f30a2cf1..0340f35ca 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -11,9 +11,9 @@ Just as [[SimpleMetrics]] measure some property of a pose, EnsembleMetrics measu ##Available EnsembleMetrics -EnsembleMetric | Description ------------- | ------------- -**[[CentralTendency]]** | Takes a [[real-valued SimpleMetric|SimpleMetrics]], applies it to each pose in an ensemble, and returns measures of central tendency (mean, median, mode) and other measures of the distribution (standard deviation, standard error, etc.). +EnsembleMetric | Description | MPI support? +-------------- | ----------- | ------------ +**[[CentralTendency]]** | Takes a [[real-valued SimpleMetric|SimpleMetrics]], applies it to each pose in an ensemble, and returns measures of central tendency (mean, median, mode) and other measures of the distribution (standard deviation, standard error, etc.). | YES ## 2. Usage modes @@ -335,7 +335,11 @@ Note that if one simply wants the value produced by the EnsembleMetric to be rec ## 4. Note about running in MPI mode -Note that EnsembleMetrics that run in different MPI processes cannot share information about the different poses that they have seen at present. This means that they will produce reports about only the ensemble of poses that they have seen _in their own MPI process_. They can still be used in MPI mode to analyse different ensembles in each MPI process. Support for generating giant ensembles by MPI and analysing them with EnsembleMetrics is planned for the future. +The [[Message Passing Interface (MPI)|MPI]] permits massively parallel execution of a Rosetta protocol. If an EnsembleMetric is used in basic mode (Section 2.1) using the [[MPI build|Build-Documentation]] of Rosetta, all poses seen _by all processes_ are considered part of the ensemble that is being analysed. At the end of the protocol, all of the instances of the EnsembleMetric on worker processes will report back to the director process with the measurements needed to allow the director process to perform the analysis on the whole ensemble. This can be convenient for rapidly analysing very large ensembles generated in memory across a large cluster, without needing to write thousands or millions of structuers to disk. This functionality is currently only available in the [[JD2]] version of the [[RosettaScripts]] application, and only when the [[MPIWorkPoolJobDistributor|JD2]] (the default MPI JD2 job distributor) is used. Support for [[JD3|RosettaScripts-JD3]] is planned. + +Note that EnsembleMetrics that run in different MPI processes, and which generate ensembles internally using either a generating protocol (Section 2.2) or a multiple pose mover (Section 2.3), report immediately on the ensemble seen locally _in that process_. In this case, no information is shared between processes. + +As a final note, some EnsembleMetrics may not support MPI job collection. These should tell you so with a suitable error message at parse time (i.e. before you run an expensive protocol and try to collect in results). See the table of EnsembleMetrics for MPI support. ## 5. See Also From 41dacf139c387c6c14daf8281cd1b589cfc77227 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Fri, 25 Feb 2022 00:41:39 -0500 Subject: [PATCH 25/34] Updating CentralTendency and FragmentScore auto-generated docs. --- .../xsd/ensemble_metric_CentralTendency_type.md | 10 +++++----- .../xsd/filter_FragmentScoreFilter_type.md | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md b/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md index 833bb10a0..2aaf50613 100644 --- a/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md +++ b/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md @@ -9,8 +9,8 @@ An ensemble metric that takes a real-valued simple metric, applies it to all pos ``` @@ -20,9 +20,9 @@ An ensemble metric that takes a real-valued simple metric, applies it to all pos - **output_mode**: The output mode for reports from this ensemble metric. Default is 'tracer'. Allowed modes are: 'tracer', 'tracer_and_file', or 'file'. - **output_filename**: The file to which the ensemble metric report will be written if output mode is 'tracer_and_file' or 'file'. Note that this filename will have the job name and number prepended so that each report is unique. - **ensemble_generating_protocol**: An optional ParsedProtocol or other mover for generating an ensemble from the current pose. This protocol will be applied repeatedly (ensemble_generating_protocol_repeats times) to generate the ensemble of structures. Each generated pose will be measured by this metric, then discarded. The ensemble properties are then reported. If not provided, the current pose is measured and the report will be produced later (e.g. at termination with the JD2 rosetta_scripts application). -- **ensemble_generating_protocol_repeats**: The number of times that the ensemble_generating_protocol is applied. This is the maximum number of structures in the ensemble (though the actual number may be smaller if the protocol contains filters or movers that can fail for some attempts). Only used if an ensemble-generating protocol is provided with the ensemble_generating_protocol option. -- **n_threads**: The number of threads to request for generating ensembles in parallel. This is only used in multi-threaded compilations of Rosetta (compiled with extras=cxx11thread), and only when an ensemble-generating protocol is provided with the ensemble_generating_protocol option. A value of 0 means to use all available threads. In single-threaded builds, this must be set to 0 or 1. +- **ensemble_generating_protocol_repeats**: The number of times that the ensemble_generating_protocol is applied. This is the maximum number of structures in the ensemble (though the actual number may be smaller if the protocol contains filters or movers that can fail for some attempts). Only used if an ensemble-generating protocol is provided with the ensemble_generating_protocol option. Defaults to 1. +- **n_threads**: The number of threads to request for generating ensembles in parallel. This is only used in multi-threaded compilations of Rosetta (compiled with extras=cxx11thread), and only when an ensemble-generating protocol is provided with the ensemble_generating_protocol option. A value of 0 means to use all available threads. In single-threaded builds, this must be set to 0 or 1. Defaults to 1. NOTE THAT MULTI-THREADING IS HIGHLY EXPERIMENTAL AND LIKELY TO FAIL FOR MANY ENSEMBLE-GENERATING PROTOCOLS. When in doubt, leave this set to 1. - **use_additional_output_from_last_mover**: If true, this ensemble metric will use the additional output from the previous pose (assuming the previous pose generates multiple outputs) as the ensemble, analysing it and producing a report immediately. If false, then it will behave normally. False by default. -- **real_valued_metric**: The name of a real-valued simple metric defined previously. Required input. +- **real_valued_metric**: (REQUIRED) The name of a real-valued simple metric defined previously. Required input. --- diff --git a/scripting_documentation/RosettaScripts/xsd/filter_FragmentScoreFilter_type.md b/scripting_documentation/RosettaScripts/xsd/filter_FragmentScoreFilter_type.md index b556a2dfb..288cf53a7 100644 --- a/scripting_documentation/RosettaScripts/xsd/filter_FragmentScoreFilter_type.md +++ b/scripting_documentation/RosettaScripts/xsd/filter_FragmentScoreFilter_type.md @@ -13,7 +13,7 @@ Filter based on any score that can be calculated in fragment_picker. outputs_name="(pose &string;)" csblast="(&string;)" blast_pgp="(&string;)" placeholder_seqs="(&string;)" sparks-x="(&string;)" sparks-x_query="(&string;)" psipred="(&string;)" - vall_path="(/Users/vmulligan/rosetta_git_workingcopy/Rosetta/main/tools/doc_tools/../../database//sampling/vall.jul19.2011.gz &string;)" + vall_path="(/home/vikram/rosetta_devcopy/Rosetta/main/database//sampling/vall.jul19.2011.gz &string;)" frags_scoring_config="(&string;)" n_frags="(200 &non_negative_integer;)" n_candidates="(1000 &non_negative_integer;)" print_to_pdb="(false &xs:boolean;)" From 99146f77c5a8879577c9bb0c53b9b5d22c155908 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Fri, 11 Mar 2022 11:58:15 -0500 Subject: [PATCH 26/34] Updating auto-generated docs. --- .../xsd/ensemble_metric_CentralTendency_type.md | 5 +++++ .../RosettaScripts/xsd/filter_EnsembleFilter_type.md | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md b/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md index 2aaf50613..6e5c2d553 100644 --- a/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md +++ b/scripting_documentation/RosettaScripts/xsd/ensemble_metric_CentralTendency_type.md @@ -5,6 +5,11 @@ _Autogenerated Tag Syntax Documentation:_ --- An ensemble metric that takes a real-valued simple metric, applies it to all poses in an ensemble, and calculates measures of central tendency (mean, median, mode) and other statistics about the distribution (standard deviation, standard error of the mean, min, max, range, etc.). Values that this ensemble metric returns are referred to in scripts as: mean, median, mode, stddev, stderr, min, max, and range. +References and author information for the CentralTendency ensemble metric: + +CentralTendencyEnsembleMetric SimpleMetric's author(s): +Vikram K. Mulligan, Systems Biology group, Center for Computational Biology, Flatiron Institute [vmulligan@flatironinstitute.org] (Created the ensemble metric framework and wote the CentralTendency ensemble metric.) + ```xml Date: Fri, 8 Apr 2022 12:27:24 -0400 Subject: [PATCH 27/34] Add auto-generated docs for ParetoFront ensemble metric. --- .../xsd/ensemble_metric_ParetoFront_type.md | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 scripting_documentation/RosettaScripts/xsd/ensemble_metric_ParetoFront_type.md diff --git a/scripting_documentation/RosettaScripts/xsd/ensemble_metric_ParetoFront_type.md b/scripting_documentation/RosettaScripts/xsd/ensemble_metric_ParetoFront_type.md new file mode 100644 index 000000000..449a24ec9 --- /dev/null +++ b/scripting_documentation/RosettaScripts/xsd/ensemble_metric_ParetoFront_type.md @@ -0,0 +1,36 @@ + + +_Autogenerated Tag Syntax Documentation:_ + +--- +An ensemble metric that takes a set of real-valued metrics as input and produces the poses at the Pareto front for the metrics as output. Given N scores for each sample, the Pareto front is the set of samples at the boundary, in N-dimensional space, of the sample cloud. Put another way, these are the samples that are optimal insofar as no sample can be found that can improve any of the scores without sacrificing some of the value of at least one of the other scores. + +References and author information for the ParetoFront ensemble metric: + +ParetoFrontEnsembleMetric SimpleMetric's author(s): +Vikram K. Mulligan, Systems Biology Group, Center for Computational Biology, Flatiron Institute [vmulligan@flatironinstitute.org] (Created the EnsembleMetrics framework and wrote the ParetoFrontEnsembleMetric.) + +```xml + +``` + +- **label_prefix**: If provided, this prefix is prepended to the label for this ensemble metric (with an underscore after the prefix and before the ensemble metric name). +- **label_suffix**: If provided, this suffix is appended to the label for this ensemble metric (with an underscore after the ensemble metric name and before the suffix). +- **output_mode**: The output mode for reports from this ensemble metric. Default is 'tracer'. Allowed modes are: 'tracer', 'tracer_and_file', or 'file'. +- **output_filename**: The file to which the ensemble metric report will be written if output mode is 'tracer_and_file' or 'file'. Note that this filename will have the job name and number prepended so that each report is unique. +- **ensemble_generating_protocol**: An optional ParsedProtocol or other mover for generating an ensemble from the current pose. This protocol will be applied repeatedly (ensemble_generating_protocol_repeats times) to generate the ensemble of structures. Each generated pose will be measured by this metric, then discarded. The ensemble properties are then reported. If not provided, the current pose is measured and the report will be produced later (e.g. at termination with the JD2 rosetta_scripts application). +- **ensemble_generating_protocol_repeats**: The number of times that the ensemble_generating_protocol is applied. This is the maximum number of structures in the ensemble (though the actual number may be smaller if the protocol contains filters or movers that can fail for some attempts). Only used if an ensemble-generating protocol is provided with the ensemble_generating_protocol option. Defaults to 1. +- **n_threads**: The number of threads to request for generating ensembles in parallel. This is only used in multi-threaded compilations of Rosetta (compiled with extras=cxx11thread), and only when an ensemble-generating protocol is provided with the ensemble_generating_protocol option. A value of 0 means to use all available threads. In single-threaded builds, this must be set to 0 or 1. Defaults to 1. NOTE THAT MULTI-THREADING IS HIGHLY EXPERIMENTAL AND LIKELY TO FAIL FOR MANY ENSEMBLE-GENERATING PROTOCOLS. When in doubt, leave this set to 1. +- **use_additional_output_from_last_mover**: If true, this ensemble metric will use the additional output from the previous pose (assuming the previous pose generates multiple outputs) as the ensemble, analysing it and producing a report immediately. If false, then it will behave normally. False by default. +- **real_metrics**: (REQUIRED) A list of previously-defined real-valued simple metrics. These N simple metrics define the N-dimensional space in which each sample will be plotted. The Pareto front, returned by this ensemble metric, is the set of samples that lie on the boundary of the cloud of points, for which the value of any one simple metric can only be improved by sacrificing some of the value of at least one other simple metric. Required input. +- **lower_is_better**: (REQUIRED) A comma-separated vector of bools indicating, for each real-value metric provided with the real_metrics option, whether lower values are better (true) or higher values are better (false). Required input. +- **return_full_poses**: If true, full poses are returned (in the form of a binary silent string in the output log) for each structure at the Pareto front. This requires more memory. If false, only the names of those structures at the Pareto front are returned. True by default. + +--- From 1e7ddee58974fcc18ced96f1455728d448eedd91 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Fri, 8 Apr 2022 14:29:32 -0400 Subject: [PATCH 28/34] Updating CentralTendency description. --- .../EnsembleMetrics/ensemble_metric_pages/CentralTendency.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md index 80393e4f0..2901acadf 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/CentralTendency.md @@ -10,7 +10,7 @@ The Central Tendency metric accepts as input a real-valued [[SimpleMetric|Simple ### Author and history -Created Tuesday, 8 February 2022 by Vikram K. Mulligan, Center for Computational Biology, Flatiron Institute (vmulligan@flatironinstitute.org). This was the first [[EnsembleMetric|EnsembleMetrics]] implemented +Created Tuesday, 8 February 2022 by Vikram K. Mulligan, Center for Computational Biology, Flatiron Institute (vmulligan@flatironinstitute.org). This was the first [[EnsembleMetric|EnsembleMetrics]] implemented. ### Interface @@ -37,4 +37,5 @@ The mode of a set of floating-point numbers can be thrown off by floating-point * [[SimpleMetrics]]: Available SimpleMetrics. * [[EnsembleMetrics]]: Available EnsembleMetrics. +* [[ParetoFront ensemble metric|ParetoFront]]: An ensemble metric that allows identification of poses at the Pareto front, given some [[simple metrics|SimpleMetrics]]. * [[I want to do x]]: Guide to choosing a tool in Rosetta. \ No newline at end of file From 2944f135a36a54135f671361b272a015beefd00a Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Fri, 8 Apr 2022 14:29:40 -0400 Subject: [PATCH 29/34] Adding ParetoFront docs. --- .../ensemble_metric_pages/ParetoFront.md | 268 ++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md new file mode 100644 index 000000000..ea790fbd6 --- /dev/null +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md @@ -0,0 +1,268 @@ +# ParetoFront Ensemble Metric +*Back to [[SimpleMetrics]] page.* +## ParetoFront Ensemble Metric + +[[_TOC_]] + +### Description + +The Pareto front is the subset of elements in a set that are optimal for more than one property, in the sense that no element in the set has a value that is more optimal for one property without also having a value that is less optimal for another property. In other words, you can't make one property better without sacrificing another property. When plotted in N-dimensional space (where N is the number of properties), the Pareto front is the "rim" of the point cloud, as shown below. The ParetoFront ensemble metric identify the poses at the Pareto front for two or more properties (as measured by [[SimpleMetrics]]). This is useful in situations in which one is seeking diverse structures optimized for more than one property, and the optimal trade-off between one property and another is unknown. For example, if one were designing proteins to bind to a target, one might want the proteins to have low overall Rosetta scores in isolation, low interface interaction scores, and low numbers of buried unsatisfied hydrogen bond donors and acceptors. In this case, the Pareto optimal designs would be the ones in which, for instance, one couldn't improve the Rosetta score without worsening either the interface score or the number of buried unsatisfied hydrogen bond donors/acceptors. + +#### Details + +The ParetoFront ensemble metric accepts as input two or more real-valued [[SimpleMetrics]], as well as a comma-separated list of Boolean values indicating whether it is desirable to have lower (true) or higher (false) value for each property measured by each [[SimpleMetric|SimpleMetrics]]. It then applies these [[SimpleMetrics]] to each pose in an ensemble, collecting a series of values. At reporting time, the metric returns three lists: + +- A table of those poses at the Pareto front, with the corresponding values of each [[SimpleMetric|SimpleMetrics]]. +- A table of _all_ poses seen with the values of each [[SimpleMetric|SimpleMetrics]] and a Boolean "TRUE" or "FALSE" indicating whether each is at the Pareto Front. +- Optionally, a list of binary silent strings representing those poses at the Pareto front. These can be copied into separate text files and converted to PDB files using Rosetta's [[extract_pdbs|Apps]] application. Note that if this option is used, more memory is required. + +#### Example configuration in RosettaScripts + +In this example, an input PDB file containing a single 8-residue cyclic peptide is perturbed and redesigned. The score and polar solvent-exposed surface area of each design are measured using a [[TotalEnergyMetric]] and a [[SasaMetric]] (two [[SimpleMetrics]]), respectively. The ParetoFront ensemble metric then returns a list of the peptides that have high polar solvent-exposed surface area and low total score (i.e. those at the Pareto front for these two properties). + +```xml + + # Generate a bunch of perturbations of a cyclic peptide input, design each, and select + # designs at the Pareto front of low score and high polar SASA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +#### Example output + +The output from the example above is shown below: + +``` +protocols.ensemble_metrics.metrics.ParetoFrontEnsembleMetric: (0) Report from ParetoFront: + MPI_process: 0 + poses_in_ensemble: 20 +Poses at Parteo front: +Pose Metric_1 Metric_2 +teststruct_0001 -10.9948 562.189 +teststruct_0010 -11.1487 561.375 +teststruct_0011 -14.4376 533.249 +teststruct_0014 -11.3264 538.945 +teststruct_0003 -15.1701 423.254 +teststruct_0009 -13.7229 536.632 +End poses at Parteo front +All poses: +Pose Metric_1 Metric_2 At_Pareto_front? +teststruct_0001 -10.9948 562.189 TRUE +teststruct_0004 -9.58659 464.091 FALSE +teststruct_0007 -7.11429 476.887 FALSE +teststruct_0010 -11.1487 561.375 TRUE +teststruct_0013 8.69142 460.517 FALSE +teststruct_0016 -7.30785 560.823 FALSE +teststruct_0019 -11.5179 475.092 FALSE +teststruct_0002 -5.46091 504.822 FALSE +teststruct_0005 -8.69703 536.107 FALSE +teststruct_0008 -11.6457 509.571 FALSE +teststruct_0011 -14.4376 533.249 TRUE +teststruct_0014 -11.3264 538.945 TRUE +teststruct_0017 -13.9076 524.441 FALSE +teststruct_0020 -13.8797 495.925 FALSE +teststruct_0003 -15.1701 423.254 TRUE +teststruct_0006 6.03388 470.449 FALSE +teststruct_0009 -13.7229 536.632 TRUE +teststruct_0012 -7.75434 546.179 FALSE +teststruct_0015 -6.62836 500.375 FALSE +teststruct_0018 -13.6551 526.151 FALSE +End all poses +Full poses at pareto front: +[BEGIN 1: teststruct_0001] +SEQUENCE: DXDXDXDX +SCORE: score fa_atr fa_rep fa_sol fa_intra_rep fa_intra_sol_xover4 lk_ball_wtd fa_elec pro_close hbond_sr_bb hbond_lr_bb hbond_bb_sc hbond_sc dslf_fa13 omega fa_dun p_aa_pp yhh_planarity ref chainbreak rama_prepro description +REMARK BINARY SILENTFILE +ANNOTATED_SEQUENCE: D[DASP]X[DORN]DX[DORN]DX[ORN]DX[ORN] teststruct_0001 +NONCANONICAL_CONNECTION: 8 C 1 N +LezeTCj5dUCkvdOWvoEoTCj7p+C0yS0wPaUwSC7qnfDEJ69hvl31SCTm8CEU5OqfP2rFVCXrCNDkfuPwPu7/VCLbAxCECO76PXYmVC3SVlCkFNyBQ/ZFXC3ZinCU8002Pni2TCTZYPCEgBt3v+8TTCHWp8CES/v8PYycVCXvfMDEQkNwvOZKVCDN8tDUOC81P teststruct_0001 +L5i6RCvZhQD0yyk4vlF+QCT+SsD00YH+vy8hPCPC8fDUj6j7vT2pOCDCb7DUKQ06vCLNRCvLtqDEIXGFwsapSCbv3yDEcAyGwXUxSCPNW2DkFmaKwbJMUCHBT1DUvuTLwHl7RCby/wCERCW6vsNIRCL7dGEEOFU7vjg6QCbsYLD0hHoGwg9kQCz2PBEUKEEHwV+/SCH0RIE0cL+EwzyRTC7fvYD0SdYFwnLPSC/32bDkYqWLwNmUSC/dIKEkNiFLw6nOUCfNs3DUolUNwIRsUCDGBHEUgseKwITnUCnxdZD0/vuKw teststruct_0001 +LQzSPCjKc2CERFP6vve+NCHwmmC0iZb2vVLCNC3jxlC0QXZAwtysMCPLrDCUdhdCweUFOCftdzBEYahpvUKwMCrZESBUkblmP4h4LCDMmCCUFehvPRknMCnMxFAkuivrPG8CQCDOVhCU7mW7vztjNCPqB8CkmxlhvPUzOCfpJ0BkrtWwPlOdOCnmEHB0mUa4v teststruct_0001 +Lr8mMCL1jLDEfFJCwnTuLCDuTPD0ADwGwNsdMC75yCDEjp5JwSzdNCbUjWDUpunKwwHLLCzdz8DEYMQHwH7LKCnVgBEkTa6Jw/FpJCf4OYEkMo9JwfqrICfekbE05tMMwIA6MCn2YmD0/bOAwWIzKC77/7CULsOGwp/qKCTu3CEkw8iDwB6/LCDyjJE0lN2HwGsrKCzIZ8Dks3zLwUyWJCz+usDkvvrJwZjIJCz0nbEUyGFIwv3dKC3YfjEkZKMKwGHWICHmzqE08aKMwuWJJCH/vYEk7Y9NwGy5HC3MbREkPp/Lw teststruct_0001 +LN2AMC/+shCUM5WLw/QtMC7QxTCkoWxNwiAxNC/IJlB0NgGNw64aOCjLcCB0ak4OwA+tLCzVRBCU5SzPw2quKCb4YiCkK4aQwv0/KC7Z1HD0CISQwLytJCvD7VC08r8Qw4YLLCXnFSCU+uxKwyJINCjT1vC0qazOw+PKLCnZUOBESd4OwoCRMCjXBoBUm1vQw teststruct_0001 +L147NCv8eTBkdkhKwwn7OCD9yVAkronJwE6LQCDzoCBEdGnIwzcJQCrC4wBkNAPFwhhWOCDaG5+juc2GwvLLNCL6kW8zaHUIwc8qMCHXdU67BhFEwLWGMC/mpD8z5uQ/vt9WNCf0fxBEyDKJwfaNPCr2ua/jZdTLwWQBOC/ODEA00pgDwqQIPCPXjH9zlkWFwpyeNCvVnD1rRi+JwxOXMCnzod+jJY/IwCqfNCPm4j9LG7hCw2l5LCbEf29LcglFwotxLCnpeU3LwWa5v8qULCTCAI+jFWABwMwzMCvquQ+jyhT8v teststruct_0001 +LyETRCzXx0AUwAAKwawiSCrOIhB0zJYJwIZBTC3XyLB0oBIFwW4xTC/qU8BUePtCw+QoTCzGvJBEvCaLwjF7UCjfR7BEf2+KwTb5UCX5IkCkFlMLw6M7VCDuoTBEtncKwB+RRCXCcKAE0rhLw3AZSCvXQTCEnZmJwpBRTCn/YWBEzKbNwoH2TCXVeFAELfRLw teststruct_0001 +LQ59SCXZd2/zqLpDwBXYTCL2r/+Trxo8vF5MSCrI89+zRj1xv3ulRCfSAi7zTJOsvkyBUCXQhn3jqIH9vkdVVCLOiA2jEHrBwe26VCf+wr+rmetBwh1MXCD/F0+73nuEwo7oSCzg9d+jE/RGwfuHUCHgFNAUWRo5vphVTCHeuX8rjjZAwKnOUCbbZ057ksByvAmDWCLyd+8Dg6t/vmKKVC7byC7TuDyFwbTNVCf23BAMPFjDwIiGWCPcWV/7mhO7vagjXCbclWAM7CqEwQA4XC/weJ9L+cBDwxvCXCTrBQ+L3yRIw teststruct_0001 + +[END 1: teststruct_0001] +[BEGIN 2: teststruct_0010] +SEQUENCE: TXDXDXDD +SCORE: score fa_atr fa_rep fa_sol fa_intra_rep fa_intra_sol_xover4 lk_ball_wtd fa_elec pro_close hbond_sr_bb hbond_lr_bb hbond_bb_sc hbond_sc dslf_fa13 omega fa_dun p_aa_pp yhh_planarity ref chainbreak rama_prepro description +REMARK BINARY SILENTFILE +ANNOTATED_SEQUENCE: T[DTHR]X[DORN]DX[DORN]DX[ORN]DD teststruct_0010 +NONCANONICAL_CONNECTION: 8 C 1 N +LTtNTCv1FVCU8nZhPRZETCrUm5C0NZW4Pi5ISC/2ObDEfncuPXgmRCTJN2DUk+W5P62bUCD59ND0DK36PPaCVCH67cD00aNhP60WVCDwhtCUWxEAQ3AfTCDzNaCUwfA1vO/oSCDsWuC0lh3/Pq9SUCL4FpDUXSHAQDhfUCrpGzDEjYKnvAUUWC/Kf8CExy7AQfB6UCHxWiC0ApyDQ6cgVCH+dSC0riy6P teststruct_0010 +LiA9RCLMdZD0rp01vt2CRCHQo2Dkg0Y8v6BnPC7QOmDEQZA8vuJrOCX2w+D0HcM6vb6eRCHTI9DEa6/DwWB1SCTYsJEUpqoEw5qJTCn4sNEUm6PJwDycUCLDAZEE40lJwaDdSCj3TDDEmFO7vDxERCLNqKEE7GQ4vJ4iRCnPMeDUP+/FwkDvQCP+DIEEcqGGw9zzSC/t9YEkhohCwkKnTCjmj/DkXU5CwAsMTCX678DUazTKwWRXSC/zZXEk9LJKwwFoUCD1WbEUPvjLwdcaUCX8RnEE2VpIwRTMVCTWDQEE/SzIw teststruct_0010 +LSacPCj9m8CkH1u9vp+HOCzJ1oCUBWf9v7LXNCHvWxCE/e6Dw9WJNCjdVUCUNBIHwupPOCPCGxBEmuq7vuK5MC7/UEBU1IM7vQo6LCDciuBkMpE5vpe2MCz7uw/jzi88vhKQQCz4NqCUVKQ/v71jNCvFn2CUfvv1vSnxOCvEMlBUUAZwvmP1OC3hrUBkUQDBw teststruct_0010 +LbO9MCPsXZDkTFsEwrnOMCXw5lDEAsvIwgeHNC7k8gDkkhLLwgEJOCD6Y2DU8FbLwKbuLCLo/JEkOjhIwe3sKCrpmNEUAcoEwPcOKCjQukEUsyhEwGWOJCrJhoEkIpOAwQIKNCnHsvDUaK4BwkKSLCrUfTD0MF+IwNXkMC3aqUEUT+JIwXVRLCX+yOEEnbaKwV71JCDsJDEEslRFwtUJLCDIsJEkznxAwB/ELCn9SvEkhx3Dw5dxJCrpvoE0UqLIwjz7ICnBA4EU64SAwq7aICnlAfE0jI1AwKtoJCL6HlEUl1R5v teststruct_0010 +LwcxMCH7uEDkOdFNwzhlNCH1E/CEMvePwsBpOCjFzcCUzYCPw8QbPCbMATCkxqaQwOjtMCHBGzCU2G8QwkvwLCff0WDUYeWRwymKMCPuP7DEknURw8BpKCX1VNDEvNsRwQ17LCDaCzC0HL3Mw1lBOCHCCeDUs5BQwh+HMCnOuWCUmtsQw6NWNCnQIrC0OiyRw teststruct_0010 +LtSqOCj/iKC0fzoMwpprPCbA2WBEnf5LwTzyQCLZQACkplRKw+giQCXVSUCkAxNIwV+DPCXr8MAUUjUKw+p/NCvmU2+jbl1LwJEZNC7Uon6Tr6GKwbJnMCnG3h9zQJqHwDu8NCLiZSC0QqSLwpmHQCXx18AEVHuNweAnOCvhmlA0AjfIwb+1PC/wCA/TbJvJwA5bOCbOH59DUcnNwIANNCL+qGA0JwdMwVEMOCn1Yb6LMOUJwvtuMC3fGV6rhgULwdpOMC3N1+3DPAeFwc82LCvkS6+jkZiIwO5NNCnm24+D5YVFw teststruct_0010 +L6xBSCrL62BUStNLwiELTCje9PCkrN8JwSEUTCT43BCk2yEGwTFoTCDlqbCExjkCwoddUCjUtFCUJ8dLwxpjUCn6HdCkhbIOw3R0TCLdB7CEGshOw9rXVC7v4QC0ZvvPwrTLSCLxRSB0Zg2MwjtDTCL06yCkufEKwS/gUCXrwGBkY01LwuoUVCfEYOCUC1PKw teststruct_0010 +LheFTCT89uAUyqPFwtNQTCbNlIAkmR8/vU//RCL20TA0BAK5vSWKRC7hs0+D4Mh4vyklTCTgRl8TqbeAw4L3TCT7bCy7DxZ0v9zpTCftde8j6mzmPn1RUCjgJT+LCrS0vOyxSCfs6JA0RLKIwtGFUCjyooA00t57v4sdUCLmmF8jZMBDwegwSCv0MB4zroZCw teststruct_0010 + +[END 2: teststruct_0010] +[BEGIN 3: teststruct_0011] +SEQUENCE: DXDXDXDX +SCORE: score fa_atr fa_rep fa_sol fa_intra_rep fa_intra_sol_xover4 lk_ball_wtd fa_elec pro_close hbond_sr_bb hbond_lr_bb hbond_bb_sc hbond_sc dslf_fa13 omega fa_dun p_aa_pp yhh_planarity ref chainbreak rama_prepro description +REMARK BINARY SILENTFILE +ANNOTATED_SEQUENCE: D[DASP]X[DORN]DX[DORN]DX[ORN]DX[ORN] teststruct_0011 +NONCANONICAL_CONNECTION: 8 C 1 N +Lk5PTCXlhLCUmyJpP0AETCjAnqCk1Q36PEdJSC3N9ODkebt2PVLsRC3eXoDUAj79PSUaUCHHy8C03Ud+PYvSVCfumbCU9i9BQH5wUCPta5BkFB9DQaIfWCDkehCUS+BCQF4bTCHeFWC03mZyvLnmSCDkZaCklM1AQbe8UCrJfJD0rHG3PouPUCj4PXDUFl/BQ teststruct_0011 +Lsl4RCfaQRD0DGOsv6E+QCXYLxDEPry2vvniPC7BNpDUAwluvm6wOCz2mDEUGL3ova4BRCLUWxDkL7zBwv9XSCT/3+DkVUHEwtgWSCvVm+D0dXGJw25pTCr8HGE0saQKwqAVSCnZV8CUBVF4vOxRRCLCPIEkdi3wvPZzQCLnaRDUNUUDwzSRQCP8gDE0LHYDwYmnSCPShPE070uCw5jJTC/6BpD00buCwH8HSCrCaeD0T0zJwWykRCP1HKE0w8zJwjSmTCXs0FEkBgRMwzo3TCX1IVEUnDpJw8dYUCbPH4D0kCpJw teststruct_0011 +Lc1MPCbolADkToUov434NCLmx0CkZkLoPBE2MCz+V0CUq3q1vAkYMCfIZSCU3+L6vRc8NC/Q1ICEM032PMBnMCnDz2B0OmP8P5ezLC3t6WCEf5Y+PTIaMC3kgrA0CWu9Pfi3PCDvTpCkMhLvvXulNC7nZMD06x/3PfcsOCn7PJC0h9w9PrBQOCDgmhBkpk1kP teststruct_0011 +LNdeMC/WTaDEO/m6vcNgLCXxWeDkEhnBw/oDMC7swKDUFwsGwrVGNC7vPYDEhcWIwTjILCbHoGEklfjCwHfEKC71GKEEF80GwlGtJCnuphEkszUHwApqICjwUlE0dovJw1U4MCvID1DkGk12vuohKCLR4PDEdNhAwbJxKCH2mNEUU3q9vmeBMCrbiPE0kFvDwQRcKCrPaEEUYjVJwSQLJC3BCBE0ZUzFwq8UJCrIenEUP5fDwX9lKCTD2qEEX9LIwJ+cICDdG1EUDP2JwFrAJCrLQgEkeRiLwRH1HCHgHdEEl/QJw teststruct_0011 +LBQZLCraTqCUpigIwm12LCX/cXC0bwALw558MCnjjtB0sffKw5pjNCnF6LBEaHXMwMosKC3kPCCU2dgMwVlpJCXpMiC0/FdNwvt+JC34FHDEk4vNwb5hICP8ZVC0mB4NwJ1jKC/+oeCEKVRHwIsLMCbeExCkWCYMwGvNKCn9xVBUmNNLwaUFLCfxCiB0lWPOw teststruct_0011 +LpSNNCzxmbB0fC5HwSaQOCPilfAkDJXGwwplPCDZMNBks4lFwpUtPC3ZXDCkFiQCw8n3NC/ozf/Dx3PBwSzoMCDo9c9TnzyBwxvUMC76xW4DKTJ5vWV3LCPwiL+jJ8NbvmQqMC/DN4B0kRAFwh7XOCjifh/zNsxIwrWrNCDU8dA0L4H8vCysOCfsPP+Tdy7/vnszMCvOb23jDj6EwR+xLCLCk8+zBs7Cwy5NNCTNc867I3l0vltiLCLq0X878Jg6visqLCTKyT8j5OK0PYtBLCTa7H/joyvsv5klMCza2i/DSC5bP teststruct_0011 +L7nlQCjIPzA0USWIwPM3RC7pjgBEhcbIwmGfSCvEXmBk/zTDwBh8SCbmMVCk+LpBwKT1SCLoC0A0mCWKwwHeSCH1TBBExfRNwpVrRCnj14B0VI1Nwua/SCrBzTAkhO7OwJkdQCPxk9/jAHgJwHGtRCP4aQCUHURJwCG2SCT3Gf/DpZ7JwA51TCrhNMBEmtAKw teststruct_0011 +LJBTSC/aImAUo7CAwEd2SCjsglAE+amyv1a9RCLY0WBEqQupPw6IRCLWPxAECxE4PFoCTC/0MT+zlm/iv7KwTCbMLE+TVzW5PSvNVCfME4+zgFd4PcB3VCXSJJ/jLJkBQADxRCn6Km/TIxUBwf80TCv5hEB0qn+yvghnTCv8aW8TOeg2v6ZESCvFaq8jKQAavwjsTCDBCUsD2mL8P4uQTCP1cW/D4dM/PjdSVCbpLZAk+ekwPpcwVCbZCw8DkVavPg40WCftkr/zh6FBQwE0VCfY6v8zIygDQ1LYVCPCvRAU88tDQ teststruct_0011 + +[END 3: teststruct_0011] +[BEGIN 4: teststruct_0014] +SEQUENCE: TXDXDXDX +SCORE: score fa_atr fa_rep fa_sol fa_intra_rep fa_intra_sol_xover4 lk_ball_wtd fa_elec pro_close hbond_sr_bb hbond_lr_bb hbond_bb_sc hbond_sc dslf_fa13 omega fa_dun p_aa_pp yhh_planarity ref chainbreak rama_prepro description +REMARK BINARY SILENTFILE +ANNOTATED_SEQUENCE: T[DTHR]X[DORN]DX[DORN]DX[ORN]DX[ORN] teststruct_0014 +NONCANONICAL_CONNECTION: 8 C 1 N +LchSTCLy/PCUC7rjPvbLTCTEzzCEbK54P1iPSCjvJWD05fJxPRP1RCbXCzDESFa6PpxjUC/RiHDEt6O7PfCIVCL2xXDEIgGkP5mfVC3zLmCEwM//PpojTCTawVC0iLZ0vudxSC785nCUFtNAQlocUCTY5hDEt3bAQNyiUCvdLtDE2hgjvYtdWC3Qt0CU/7yAQ2jEVCfQCaCkxstDQ2enVC/t4LCUEpW6P teststruct_0014 +LVM6RC7V1SD0NLYzvmm+QCvRmwDk/Kt6vYJjPCXijoDUTv71vGmwOCzcNDEUffrzvA2DRCzXMtDEOocDwgWZSCLeA7D0MozFwcRYSCfSo4D0VT8JwsaqTCH6tDEUnWILwe4TSCrME7CEhvH6vhWQRCHydIE0NaT4v/M4QCv/LMDUfOqEwV/RQC7pcAEUL4PFwkRnSCnw5NEE9FmEwC9LTCj5SmDEF0SEwS1MSCXOrXD0QRkKwOpkRCvUSGEU+rtKw/FnTCPFsCE0kOJNwAP1TCPnETEkpGmKwdwaUCv720DU5bdKw teststruct_0014 +LIUOPCL1CAD03LIyvZf5NCnuI0CUM27hvJA5MCbMEzCk0gY6v2TcMCDV4QCEOhs9vZP8NC3ZdICUhElwPVZlMC3pD1B0RVl4P2FvLC3GhVCEy475P+MaMCX9EqAk4Ae6PFY6PCzb6oC0Kdm0vKhkNCbE+LDke3HxPKkpOCLfiJC0Ll66PA9SOCncsgBEqMuiv teststruct_0014 +LediMCnsvYDEgKb+v7ZmLCfbLcDkXypDwg6LMCH1ZHDUxPTIwGHQNC7T/TDkv1PJwwEQLC79eFE01EyEwKHOKC7vqIEkWRmIwuF4JCLgNgE0wy8IwD73ICbjmjEkP6GLwim7MC/vtzDUOqQ7vJEnKC7fMODkoOoCwaQ3KCHj5MEkevJBwb2JMCrOJOEk0w6Fw6UnKCrIeCEE2oeKw8AUJCPyv/DEcrGIwQTeJC35gmEEYeKGwi3xKCnWIpEEIucJwYGrICrtYzEUdzRLwJgPJCTDFeEEC92MwBkBICnhpbE0k5pKw teststruct_0014 +L9thLC/94mCEqddJwUtBMCTdtSCkXL5Lw64GNCjQYkBEuNPLwLGwNCzMcBBkJ+BNw744KCLzw5BEQ6aNwNB4JCv6gcCU9qiOw9DPKCvZyADk669Ow6DwICvdGQCEmi9OwSwqKCnuHcCUEzoIwMNYMCf1krCEBSSNwxsXKCfJZNBUKGGMwFTTLC3DhUBkidEPw teststruct_0014 +LTwTNC7QJUBEFRqIwv1VOCzOzYAkGLiHwpLqPCbU/GBET1iGwQbuPCHCeBCUkxWDwoQ5NC/qSU/jXfdCw90pMCDPKL9D3aKDw8WRMCPAJX3TAa67vldzLCPnrJ+Tv1yuvftuMCLfmxB0IakGwiDgOCH6kS/TTAVJw18rNCHfwYAUiap+vE7sOCbNNC+zSvCBwv81MCnqwP0DqGNGwxk0LCzJC1+zwGfEw/lINC/7sd77ubw4vrReLCvq3c87JIb9vG3jLCLNkU8D52RsPDk/KCv11I/z2O80vXniMCroXe/z/mcov teststruct_0014 +LHQtQCvszqAUphpIwLW/RCPvMXB0qplIwMthSCHaydBE9QfDwKVLTCzwSOC0BXDCwioATCPALpA0HEXKwZXvSC7/M1AEgYVNwoq9RCrpVsBUduAOwUCUTCTiJHAkHk5OwDPnQC3Vkq/zUAxJwHt3RCXxmLC0VWeJwz6/SCjcyJ/zBW6JwVsAUCvM6ABUAl6Jw teststruct_0014 +L3fPSCXhheA0nSNAwaUvSC7CvcA05w5yvu1uRC7zEEBE7HCpPc+8QCnmmWAEzkr2PiJETCrQ/B+jp0RovdZNUC7YYA7T4ER4v3FgUCH1uD+72mcwvQ0nVCbMSV/bT5K6v69qRCLJOb/zRRiBw8EqTCLpQCBkN+JyvopLSCD7BH7DA1Zsvh5UTCbuq/9Dery0PY3GVCzaR89DEO02v9y8TCPR0m6jzIXAwWFnTCTiDT/LjCPyvc4wUCjTA99bK5dwPhMyVCfHCmAshOg2vvXdWCvuJO+LKlS5vLqYVCP6Dd/rsSABw teststruct_0014 + +[END 4: teststruct_0014] +[BEGIN 5: teststruct_0003] +SEQUENCE: DAXDXDDX +SCORE: score fa_atr fa_rep fa_sol fa_intra_rep fa_intra_sol_xover4 lk_ball_wtd fa_elec pro_close hbond_sr_bb hbond_lr_bb hbond_bb_sc hbond_sc dslf_fa13 omega fa_dun p_aa_pp yhh_planarity ref chainbreak rama_prepro description +REMARK BINARY SILENTFILE +ANNOTATED_SEQUENCE: D[DASP]A[DALA]X[ORN]D[DASP]X[ORN]DDX[ORN] teststruct_0003 +NONCANONICAL_CONNECTION: 8 C 1 N +LGtBTCrIiaCkdTHjPGOxSCrBW9C0Xf44PtNyRCHdidDkdXdwPXGhRC/70+D0XnC5P7tEUC/ZDUDk0H27PodDVCvBD3CUBg2AQO4nUCHvCfCE2aOEQ+WOWCrML5CUB7X/PThQTCrJlhC0MTj0vrmVSC3K3vCkG8EAQ4bjUC7iCgDk9IOxPIn2TC/vjvDkOSdAQ teststruct_0003 +Lb1PRCvLaTD0nKVyv9bSQCjIYvDkvpe6vyXDPCbxc2DUtmOuvLEdOCrabMEEPC3uv7E5PCPn3cDkPFpCw4pgRCLNn3CEyUt4vH6wQC3JLHEU05u7vIPLPCPTHyD0UBlEwuwxQCL1uZDE1zJFw3EcPCbSh9CE4eECw teststruct_0003 +LjQrOC7zqVD0J1AqPR6jNCH2GZDkff95PBhPMC/stNDkWLHxPElqLC7U9rCUL7R1PhlyNC7eS8CkYv1BQqwCPCrN3GD0DrCFQbmIPC3OsrCklfCJQqjIPCfIO6BER7aIQ+KLPCnwp5CEqmZnPYDgNC37F6DEkbw8PtY3NCLxEbCknciAQy27MCfck+Cko4hEQ6vBPCvWkoDk4ALGQBN7PCX8GBDEoflCQQUSOCjjuyC0eqVKQ5VDQCTzazC0UGHKQ4hMPCPZeYB067IKQFP7PCreHsBUfXfGQv5ROCbMvqBUZh6GQ teststruct_0003 +LrVxLCHEIqDESSlpvOvfKCHM4jDEWup3viAqKCjtvDD088ZAwBBMLC7RDOD0J3pEwNn9JCLoGHEU4YR8v4YlICrm7EEkTpqAwH2GICHUgmDEIyFBwfZBICjC+UEU1oJCwS2TMCT8XCE0yf1vvaosJC/w9ZDUZ1novHE6JCbM4SEExBtzvJ4pKCXxQNEEzrIBw teststruct_0003 +LoaNKCzPnbCkpDa/vOzYKCP9E2BEyi0DwaWkLCXCp8A0nsfCwXS9LCTkQGAkh5sFwGfHJCfTiABEgOdEwaI2HCnhz0BUIHOFwjv6HCzAiVC0KfIJw7KtGCnumwC0hfeJwGbvJCzIuTC0Iuh4vykfKC3KpKC0cwvHwV2+ICjoWYA02p7AwRNOJCTFNWA01c5Hw43sHCf3WPCkF7xBwIX/GC7C5JBEubgFwhFBIC78uACEJ63KwGryICvcUqCEOYCJwKvyGC/uECDEVuKLwiKnGCDRcEDEqGyHwz44FCzutdCE9omJw teststruct_0003 +LE9IMCLTxIB0FFh7vHISNCz4/VAEwdC4v+7lOCLEj9Ak9tz7vhw9OC74vBCEkBY4v53SNCXvaNAU2YUwPPTaOCPiLn+jetN4P5/NPCHEmj9zUxxmPSecOCHwVF+jya0AQsZxLCTwR2BkMnL1v3yMNCDfrs+zBch7vEvVMC/1Qn/jStt1PwXaNCXTgMBEAZi3P teststruct_0003 +LGeSPCfUbQA0yocBwVmdQCXcxzAE4SHEwjFfRC7FzTBUQTEAwBSMSCHfKJCkvwDBw/zGRCP5Ph/zCKwHwHfSQCvgh9+T2lYKwJyZPC7c7PA0L29KwKujQC73hA8jjYsLwx0/OC/APo+jHRUCwpeJQCHT7nBUjoyGwAtORCTVtT9TAKjFwyWGSCDJOGAk6UeIw teststruct_0003 +LSlbRCHq3hAk15L1vbxUSCrxnzAECtapPuJpRCXTkrBU27t6PXfHRCfyiLB0heVBQVkzSCjFSA/zhM62PT2yTC3FFY/zvOTAQ0+HVCD4qOA0NTl8P5p/VCbtOsAknOwCQEguQCzr9n/jFVmzvtfMTCDg9VBEI+tavaKSTC7Vmh9TtpHjPjx8RCPPpy9jDOi6Pbu9TCnmB78zYnRCQ2XYTC3ZlYAkp3NDQrg8UCHmWEBkybY2P1mpVCTtf5+DWOL4P3X3WC/UpCBUAeQBQKtLWCj2h1/jQwPFQpvhVCHkWbB0umyEQ teststruct_0003 + +[END 5: teststruct_0003] +[BEGIN 6: teststruct_0009] +SEQUENCE: DXDXDXDX +SCORE: score fa_atr fa_rep fa_sol fa_intra_rep fa_intra_sol_xover4 lk_ball_wtd fa_elec pro_close hbond_sr_bb hbond_lr_bb hbond_bb_sc hbond_sc dslf_fa13 omega fa_dun p_aa_pp yhh_planarity ref chainbreak rama_prepro description +REMARK BINARY SILENTFILE +ANNOTATED_SEQUENCE: D[DASP]X[DORN]DX[DORN]DX[ORN]DX[ORN] teststruct_0009 +NONCANONICAL_CONNECTION: 8 C 1 N +LdNPTCvE7NCUqjLoP05DTCzAhuCUjpR6PK9NSCDRpTDEMRW0Ptj4RCb99wDUcnL8PFyaUCL9K/CkGyG+PIiPVCfSJdCE9A6BQu3qUCP6/DC0MlxEQD+bWCXQocCESMMBQbtcTC/hGXCUTECzvnDjSCnyCgCEBWiAQFQ/UCfY+KDEY8j2PUHRUCDzAaDUIgxBQ teststruct_0009 +LOI4RCLhMSDUN4Mwvm2/QCvwKyDE0B34vFtjPCPnNsDEtMSyvIDzOCXBhFEEN4vwvEhERCHHIwDEFSiCwmsbSCTUi7D0J02EwHObSC3O44DkO2dJw21vTCznHCE0ngoKwuFPSCrOU6CE3Zu4vsMVRCHw0IEEDBc0vAU0QC7K7PDEK+3Dw/eVQCna+CE0R6PEwA6sSCTY/NEkbVqDwU0LTCf2llDEgLTDwMxKSC3saYDEFRFKw0LrRCjUXHEk9yQKwX2sTCHPDBEEVZpMwBW/TCbRPREUHxGKwZ2cUC/s3vDEUI8Jw teststruct_0009 +LWJMPCvpZED0baarvP72NCbTm6CExVlhPi41MC7lP4CkZ6u3v5XWMCnjzVCEppj6vOn3NCv1SQCUJRv2PKXhMCnesFCUvlY8PyfxLC7W0iCk5Mi+PaLQMC7qKBBE5BB+PRX2PCLUUsCEYhzvvuljNCPSDUDU2JT1PUonOCzGwRC0x9r9PDmJOCvbqsBkPF8nP teststruct_0009 +LQDiMC3cHdDUv3i8vAHjLCLDffDE7LkCwzNGMCbFeKDkIRkHwgfHNCf3HYDUkS3IwKWKLCvr9GEEpFuDwQLdKCbZOSEkzoO+vFgFKCbdFpE0o0lAwEcZJCjLV0E0dBQ4vGX/MCbpN4DUGpF6v7/kKCPnDRD0tAXBwMmDMCT1IQEU2tsEwTLgKCLxhHEEbQMHwjEjJC3JfJEUnGK8vdAHLCrWfSEEfzg2v0S/KCHh9xE0M/nBwpMbJCDp9oEEcrDEwh0KJC71ZDFE7ph6vzIjICDoasEUhhs0vWYAKCXQ00EkoCdmv teststruct_0009 +LOHdLCvqjoC0sW0Iwkm7LCXJkTCkYjPLwVZ/MCv3ukBEjBlKwt5jNC/Dq8A0qbXMwWcxKCvUo8BkgRvMwW4xJCXkfeC0a13NwQnKKCXdXCD0ShVOwDOpIC/A5SC0x3QOw9CoKCzPSdCkM0zHwD8SMCf15rCU9GqMwJePKCL6mRBU17YLw8mKLCzaGWBUcMYOw teststruct_0009 +LXXQNCHRHZBEKAAIw60SOCXVMeA0toNGwNeoPC3jsLBUyPnFwzvvPC37RFCUQOrCw3V5NCXsbo/Dt66AwsxpMCrzow9TMsPBw7IVMCHztf6DGza3v9B7LCjwSq+TLIrSPRQuMCv335BU6uPFwZCaOC7gEY/zhhmIwcptNCztmlA04t27vN8tOC7vRZ+zPw8+vEC0MCr82W4j7BLEwodzLCbzYF/jNZiCwvSNNCnOXe5r8XbxvhKhLCfakP7rrwp4vU5tLC3w2f9z2it2PtVGLCDmgo/ThsIpvUFrMCrsD//DAtKjP teststruct_0009 +L/OpQCDHprAUEVNIwCH8RCzQbWBkRFVIwmliSCH31gBUUPGDw3vFTC3eCSCUSpxBwI/5SCj6VkAU+QHKwLHlSCHofsA0a9ENwnU0RCfHNkBkiexNwzJGTCLN41/zxfnOwM3gQCXweo/DryNJw0W0RCP5iKC0YdTJwNW4SCXdoB/zjRkJwdF7TCjuJ7A0bHyJw teststruct_0009 +L9cSSCvKwjA09CN/vF0zSC3g3mAUkeowvZ16RCXgGdBkMNjrPGMERCXek7AkHHn4PAg8SCLhBZ+zQjcQP2slTCHLSR+jb3S7PiKEVC7Oy/+TXty6PjZpVCjCjZ/zrL0CQwauRCzDfi/jCCvAwDOzTCjw9DBU2bCxvg1iTC/KrV8jjYSyvla9RCPxL88T8RQdPuQfTC3lYC4j+Ki+PGMFTCXLEq/DVxUAQMJMVCbytaA0KeZ0PNXnVCTXez8jEel1Pa/nWCbJE4/jDbeCQ7ajVCTJRZ9DZq9EQ2GKVCfItcA0mPsEQ teststruct_0009 + +[END 6: teststruct_0009] +End full poses at pareto front +``` + +### Author and history + +Created Friday, 8 April 2022 by Vikram K. Mulligan, Center for Computational Biology, Flatiron Institute (vmulligan@flatironinstitute.org). This was the fourth [[EnsembleMetric|EnsembleMetrics]] completed. + +### Interface + +[[include:ensemble_metric_ParetoFront_type]] + +### Named values produced + +The ParetoFront ensemble metric does not produce any named values. + +##See Also + +* [[SimpleMetrics]]: Available SimpleMetrics. +* [[EnsembleMetrics]]: Available EnsembleMetrics. +* [[CentralTendency ensemble metric|CentralTendency]]: An ensemble metric that computes the mean, median, mode, standard deviation, etc. for a simple metric over an ensemble of poses. +* [[I want to do x]]: Guide to choosing a tool in Rosetta. \ No newline at end of file From 13405ec5e1c1d3fe666a841d42d7f7c05b0676de Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Fri, 8 Apr 2022 14:39:50 -0400 Subject: [PATCH 30/34] Adding image. --- .../pareto_front/pareto_front.png | Bin 0 -> 23255 bytes .../ensemble_metric_pages/ParetoFront.md | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 images/ensemble_metrics/pareto_front/pareto_front.png diff --git a/images/ensemble_metrics/pareto_front/pareto_front.png b/images/ensemble_metrics/pareto_front/pareto_front.png new file mode 100644 index 0000000000000000000000000000000000000000..18571626506f0ba28d8fd140766fa3bb17577cec GIT binary patch literal 23255 zcmd74XINEPwl#dzQd9&?h!PDYs3avT$%F|I5dq1Hk~2s=1Qih#0TsznP(Y9%Iinyd zAR-wKNy(CP4(~WvZB=zw-P>>9`-LCfKE+9UuRYhCV~#QAx_{yPX{z<~>j?w`)!8#A zFA@l=WC(Dre~Ba2n6av^8Z$RFp0iSASmBId-B*No1lSaO4X-Y zvr8jHp-`!{G%IY^%0AL^ue|sxf9WwNhld>F*jCLYNTmr$69^))mm{e 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 literal 0 HcmV?d00001 diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md index ea790fbd6..5db30d18b 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md @@ -8,6 +8,10 @@ The Pareto front is the subset of elements in a set that are optimal for more than one property, in the sense that no element in the set has a value that is more optimal for one property without also having a value that is less optimal for another property. In other words, you can't make one property better without sacrificing another property. When plotted in N-dimensional space (where N is the number of properties), the Pareto front is the "rim" of the point cloud, as shown below. The ParetoFront ensemble metric identify the poses at the Pareto front for two or more properties (as measured by [[SimpleMetrics]]). This is useful in situations in which one is seeking diverse structures optimized for more than one property, and the optimal trade-off between one property and another is unknown. For example, if one were designing proteins to bind to a target, one might want the proteins to have low overall Rosetta scores in isolation, low interface interaction scores, and low numbers of buried unsatisfied hydrogen bond donors and acceptors. In this case, the Pareto optimal designs would be the ones in which, for instance, one couldn't improve the Rosetta score without worsening either the interface score or the number of buried unsatisfied hydrogen bond donors/acceptors. +[[/images/ensemble_metrics/pareto_front/pareto_front.png]] + +In the plot above, a set of structures are plotted by Rosetta energy (horizontal axis) and solvent-exposed polar surface area (vertical axis). If low energy and high exposed polar surface area were both desirable properties, the set of orange points, lying at the Pareto front, would be the ones of interest, since these are the ones in which one of these properties cannot be made better without sacrificing the other property. + #### Details The ParetoFront ensemble metric accepts as input two or more real-valued [[SimpleMetrics]], as well as a comma-separated list of Boolean values indicating whether it is desirable to have lower (true) or higher (false) value for each property measured by each [[SimpleMetric|SimpleMetrics]]. It then applies these [[SimpleMetrics]] to each pose in an ensemble, collecting a series of values. At reporting time, the metric returns three lists: From 29b758ab4c8c323a619645cc2781479cdecc8b7b Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Fri, 8 Apr 2022 14:41:31 -0400 Subject: [PATCH 31/34] Small tweaks. --- .../ensemble_metric_pages/ParetoFront.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md index 5db30d18b..fd79768ea 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md @@ -4,6 +4,10 @@ [[_TOC_]] +### Author and history + +Created Friday, 8 April 2022 by Vikram K. Mulligan, Center for Computational Biology, Flatiron Institute (vmulligan@flatironinstitute.org). This was the fourth [[EnsembleMetric|EnsembleMetrics]] completed. + ### Description The Pareto front is the subset of elements in a set that are optimal for more than one property, in the sense that no element in the set has a value that is more optimal for one property without also having a value that is less optimal for another property. In other words, you can't make one property better without sacrificing another property. When plotted in N-dimensional space (where N is the number of properties), the Pareto front is the "rim" of the point cloud, as shown below. The ParetoFront ensemble metric identify the poses at the Pareto front for two or more properties (as measured by [[SimpleMetrics]]). This is useful in situations in which one is seeking diverse structures optimized for more than one property, and the optimal trade-off between one property and another is unknown. For example, if one were designing proteins to bind to a target, one might want the proteins to have low overall Rosetta scores in isolation, low interface interaction scores, and low numbers of buried unsatisfied hydrogen bond donors and acceptors. In this case, the Pareto optimal designs would be the ones in which, for instance, one couldn't improve the Rosetta score without worsening either the interface score or the number of buried unsatisfied hydrogen bond donors/acceptors. @@ -20,6 +24,12 @@ The ParetoFront ensemble metric accepts as input two or more real-valued [[Simpl - A table of _all_ poses seen with the values of each [[SimpleMetric|SimpleMetrics]] and a Boolean "TRUE" or "FALSE" indicating whether each is at the Pareto Front. - Optionally, a list of binary silent strings representing those poses at the Pareto front. These can be copied into separate text files and converted to PDB files using Rosetta's [[extract_pdbs|Apps]] application. Note that if this option is used, more memory is required. +### Usage + +#### Interface + +[[include:ensemble_metric_ParetoFront_type]] + #### Example configuration in RosettaScripts In this example, an input PDB file containing a single 8-residue cyclic peptide is perturbed and redesigned. The score and polar solvent-exposed surface area of each design are measured using a [[TotalEnergyMetric]] and a [[SasaMetric]] (two [[SimpleMetrics]]), respectively. The ParetoFront ensemble metric then returns a list of the peptides that have high polar solvent-exposed surface area and low total score (i.e. those at the Pareto front for these two properties). @@ -252,14 +262,6 @@ L9cSSCvKwjA09CN/vF0zSC3g3mAUkeowvZ16RCXgGdBkMNjrPGMERCXek7AkHHn4PAg8SCLhBZ+zQjcQ End full poses at pareto front ``` -### Author and history - -Created Friday, 8 April 2022 by Vikram K. Mulligan, Center for Computational Biology, Flatiron Institute (vmulligan@flatironinstitute.org). This was the fourth [[EnsembleMetric|EnsembleMetrics]] completed. - -### Interface - -[[include:ensemble_metric_ParetoFront_type]] - ### Named values produced The ParetoFront ensemble metric does not produce any named values. From 5d3c627a13edbbbdc5a224ed71e475389086b8a9 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Fri, 8 Apr 2022 14:43:04 -0400 Subject: [PATCH 32/34] Adding ParetoFront ensemble metric to list of ensemble metrics. --- .../RosettaScripts/EnsembleMetrics/EnsembleMetrics.md | 1 + 1 file changed, 1 insertion(+) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index 0340f35ca..04bc402af 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -14,6 +14,7 @@ Just as [[SimpleMetrics]] measure some property of a pose, EnsembleMetrics measu EnsembleMetric | Description | MPI support? -------------- | ----------- | ------------ **[[CentralTendency]]** | Takes a [[real-valued SimpleMetric|SimpleMetrics]], applies it to each pose in an ensemble, and returns measures of central tendency (mean, median, mode) and other measures of the distribution (standard deviation, standard error, etc.). | YES +**[[ParetoFront]]** | Takes a set of [[real-valued SimpleMetrics|SimpleMetrics]], applies them to each pose in an ensemble, and returns a list of poses that are at the Pareto front, optimizing all of the properties measured by the [[SimpleMetrics]]. | YES ## 2. Usage modes From b8d94e5e88dc8f0313203a1eb72cd30cf75a7325 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Fri, 8 Apr 2022 14:45:54 -0400 Subject: [PATCH 33/34] Typo. --- .../EnsembleMetrics/ensemble_metric_pages/ParetoFront.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md index fd79768ea..fe0aa9270 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/ensemble_metric_pages/ParetoFront.md @@ -14,7 +14,7 @@ The Pareto front is the subset of elements in a set that are optimal for more th [[/images/ensemble_metrics/pareto_front/pareto_front.png]] -In the plot above, a set of structures are plotted by Rosetta energy (horizontal axis) and solvent-exposed polar surface area (vertical axis). If low energy and high exposed polar surface area were both desirable properties, the set of orange points, lying at the Pareto front, would be the ones of interest, since these are the ones in which one of these properties cannot be made better without sacrificing the other property. +In the plot above, a set of structures is plotted by Rosetta energy (horizontal axis) and solvent-exposed polar surface area (vertical axis). If low energy and high exposed polar surface area were both desirable properties, the set of orange points, lying at the Pareto front, would be the ones of interest, since these are the ones in which one of these properties cannot be made better without sacrificing the other property. #### Details From 4fa4729ea786438f99d56d0708755ac1b4c571e3 Mon Sep 17 00:00:00 2001 From: "Vikram K. Mulligan" Date: Mon, 18 Apr 2022 19:07:09 -0400 Subject: [PATCH 34/34] Update documentation with mention of support in MPIFileBufJobDistributor for ensemble metrics. --- .../RosettaScripts/EnsembleMetrics/EnsembleMetrics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md index 0340f35ca..3e373d7d9 100644 --- a/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md +++ b/scripting_documentation/RosettaScripts/EnsembleMetrics/EnsembleMetrics.md @@ -335,7 +335,7 @@ Note that if one simply wants the value produced by the EnsembleMetric to be rec ## 4. Note about running in MPI mode -The [[Message Passing Interface (MPI)|MPI]] permits massively parallel execution of a Rosetta protocol. If an EnsembleMetric is used in basic mode (Section 2.1) using the [[MPI build|Build-Documentation]] of Rosetta, all poses seen _by all processes_ are considered part of the ensemble that is being analysed. At the end of the protocol, all of the instances of the EnsembleMetric on worker processes will report back to the director process with the measurements needed to allow the director process to perform the analysis on the whole ensemble. This can be convenient for rapidly analysing very large ensembles generated in memory across a large cluster, without needing to write thousands or millions of structuers to disk. This functionality is currently only available in the [[JD2]] version of the [[RosettaScripts]] application, and only when the [[MPIWorkPoolJobDistributor|JD2]] (the default MPI JD2 job distributor) is used. Support for [[JD3|RosettaScripts-JD3]] is planned. +The [[Message Passing Interface (MPI)|MPI]] permits massively parallel execution of a Rosetta protocol. If an EnsembleMetric is used in basic mode (Section 2.1) using the [[MPI build|Build-Documentation]] of Rosetta, all poses seen _by all processes_ are considered part of the ensemble that is being analysed. At the end of the protocol, all of the instances of the EnsembleMetric on worker processes will report back to the director process with the measurements needed to allow the director process to perform the analysis on the whole ensemble. This can be convenient for rapidly analysing very large ensembles generated in memory across a large cluster, without needing to write thousands or millions of structuers to disk. This functionality is currently only available in the [[JD2]] version of the [[RosettaScripts]] application, and only when the [[MPIWorkPoolJobDistributor|JD2]] (the default MPI JD2 job distributor) or the MPIFileBufJobDistributor (the default MPI JD2 job distributor for use with Rosetta silent files) is used. Support for [[JD3|RosettaScripts-JD3]] is planned. Note that EnsembleMetrics that run in different MPI processes, and which generate ensembles internally using either a generating protocol (Section 2.2) or a multiple pose mover (Section 2.3), report immediately on the ensemble seen locally _in that process_. In this case, no information is shared between processes.