Rosetta  2021.16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
protocols::loop_modeling::LoopProtocol Class Reference

Monte Carlo search for low energy loop conformations. More...

#include <LoopProtocol.hh>

Inheritance diagram for protocols::loop_modeling::LoopProtocol:
Inheritance graph
[legend]

Public Member Functions

 LoopProtocol ()
 Default constructor. More...
 
 ~LoopProtocol () override
 Default destructor. More...
 
void parse_my_tag (utility::tag::TagCOP tag, basic::datacache::DataMap &data) override
 Configure from a RosettaScripts tag. More...
 
void add_mover (LoopMoverOP mover)
 Add a LoopMover to the simulation. More...
 
void add_refiner (LoopMoverOP refiner)
 Add a LoopMover to the simulation as a refiner. More...
 
void add_filter (protocols::filters::FilterOP filter)
 Add a Filter to the simulation. More...
 
void add_acceptance_check (string name="loop_move")
 Add an acceptance check to the simulation. More...
 
void clear_movers ()
 Remove all movers from the protocol. More...
 
void clear_refiners ()
 Remove all refiners from the protocol. More...
 
void clear_movers_and_refiners ()
 Remove all movers and refiners from the protocol. More...
 
void mark_as_default ()
 Indicate that every mover that is currently part of the protocol should be removed the next time a mover is added. More...
 
core::scoring::ScoreFunctionOP get_score_function () const
 Get the score function to be used on the next call to apply(). More...
 
void set_score_function (core::scoring::ScoreFunctionOP score_function)
 Set the score function to be used on the next call to apply(). More...
 
void set_sfxn_cycles (core::Size x)
 Set the number of iterations the loop that ramps the score function should make. More...
 
core::Size get_sfxn_cycles () const
 Get the number of iterations the loop that ramps the score function will make. More...
 
void set_temp_cycles (core::Size x, bool times_loop_length=false)
 Set the number of iterations the loop that ramps the temperature should make. More...
 
core::Size get_temp_cycles () const
 Get the number of iterations the loop that ramps the temperature should make. More...
 
void set_mover_cycles (core::Size x)
 Specify how many times the loops movers should be invoked after the score function and temperature have been updated. More...
 
core::Size get_mover_cycles () const
 Return how many times the loops movers will be invoked after the score function and temperature have been updated. More...
 
void mark_as_test_run ()
 Indicate that this protocol is being used for a test run. More...
 
void set_repulsive_term_ramping (bool value)
 Enable or disable ramping the repulsive term of the score function. More...
 
void set_rama_term_ramping (bool value)
 Enable or disable ramping the repulsive term of the score function. More...
 
void set_cst_term_ramping (bool value)
 Enable or disable ramping of constraints terms of the score funciton. More...
 
void set_temperature_ramping (bool value)
 Enable or disable temperature ramping in this simulation. More...
 
void set_temperature_schedule (Real start, Real stop)
 Set the initial and final temperatures for the simulation. More...
 
utilities::TrajectoryLoggerOP get_logger () const
 Return the object that report on the progress of the protocol. More...
 
std::string get_name () const override
 Return the name of this mover. More...
 
- Public Member Functions inherited from protocols::loop_modeling::LoopMover
 LoopMover ()
 Default constructor. More...
 
void apply (Pose &pose) override
 Sample the pose in the regions specified by get_loops(). More...
 
virtual void get_children_names (utility::vector1< std::string > &names, std::string indent="") const
 Add the names of all the algorithms invoked by this loop mover to the given list. Indentation is used to represent hierarchy. More...
 
bool was_successful () const
 Return true if the previous move was successful. More...
 
void was_successful (bool value)
 Set the success status of a loop mover. More...
 
LoopsOP get_loops ()
 Return the loops to be sampled on the next call to apply(). More...
 
LoopsCOP get_loops () const
 Return the loops to be sampled on the next call to apply(). More...
 
Loop const & get_loop (core::Size index) const
 Return the specified loop. More...
 
void set_loops (LoopsOP loops)
 Set the loops to be sampled on the next call to apply(). More...
 
void set_loops (Loops const &loops)
 Set the loops to be sampled on the next call to apply(). More...
 
void set_loop (Loop const &loop)
 Set the loop to be sampled on the next call to apply(). More...
 
template<typename ToolTypeOP >
ToolTypeOP get_tool (std::string key) const
 Request a tool from this mover or any of its parents. More...
 
template<typename ToolTypeOP >
ToolTypeOP get_tool (std::string key, ToolTypeOP fallback) const
 Request a tool from this mover or any of its parents. More...
 
template<typename ToolTypeOP >
ToolTypeOP set_tool (std::string key, ToolTypeOP value)
 Provide a tool for this mover or any of its children to use. More...
 
virtual FoldTreeRequest request_fold_tree () const
 Return an enum representing the kind of fold tree that is compatible with this mover. More...
 
void trust_fold_tree ()
 Promise that the calling code will setup a fold tree compatible with request_fold_tree(). If this method is not called, this mover will setup a fold tree on its own every time apply() is called. More...
 
- Public Member Functions inherited from protocols::moves::Mover
 Mover ()
 
virtual MoverOP create ()
 
MoverCOP get_self_ptr () const
 
MoverOP get_self_ptr ()
 
MoverCAP get_self_weak_ptr () const
 
MoverAP get_self_weak_ptr ()
 
 Mover (std::string const &type_name)
 sets the type for a mover; name_ has been removed (2010/05/14) More...
 
virtual void test_move (Pose &pose)
 : Unit test support function. Apply one move to a given pose. Allows extra test specific functions to be called before applying More...
 
virtual MoverOP clone () const
 Return a clone of the Mover object. More...
 
virtual bool reinitialize_for_each_job () const
 Inform the Job Distributor (August '08 vintage) whether this object needs to be freshly regenerated on each use. More...
 
virtual bool reinitialize_for_new_input () const
 Inform the Job Distributor (August '08 vintage) whether this object needs to be regenerated when the input pose is about to change, (for example, if the Mover has special code on the first apply() that is only valid for that one input pose). More...
 
virtual MoverOP fresh_instance () const
 Generates a new Mover object freshly created with the default ctor. More...
 
MoverStatus get_last_move_status () const
 end parser interface, start Job Distributor interface///////////// More...
 
void reset_status ()
 resets status to SUCCESS, meant to be used before an apply(). The job distributor (august 08 vintage) uses this to ensure non-accumulation of status across apply()s. More...
 
virtual core::pose::PoseOP get_additional_output ()
 Mechanism by which a mover may return multiple output poses from a single input pose. More...
 
void set_type (std::string const &setting)
 Set the 'type' string. More...
 
std::string get_type () const
 
void type (const std::string &type_in)
 Set the 'type' string. More...
 
std::string const & type () const
 Get the set 'type' string. More...
 
virtual void set_input_pose (PoseCOP pose)
 setter for poses contained for rms More...
 
virtual void set_native_pose (PoseCOP pose)
 setter for native poses contained for rms -— we should get rid of this method? it is widely used, but a bit unsafe More...
 
PoseCOP get_input_pose () const
 
PoseCOP get_native_pose () const
 
void set_current_job (protocols::jobdist::BasicJobCOP job)
 
jobdist::BasicJobCOP get_current_job () const
 
virtual void set_current_tag (std::string const &new_tag)
 
std::string get_current_tag () const
 A tag is a unique identifier used to identify structures produced by this Mover. get_current_tag() returns the tag, and set_current_tag( std::string tag ) sets the tag. This functionality is not intended for use with the 2008 job distributor. More...
 
virtual void show (std::ostream &output=std::cout) const
 Outputs details about the Mover, including current settings. More...
 
virtual core::Real last_proposal_density_ratio ()
 
virtual void clear_info ()
 Strings container can be used to return miscellaneous info (as std::string) from a mover, such as notes about the results of apply(). The job distributor (Apr 09 vintage) will check this function to see if your protocol wants to add string info to the Job that ran this mover. One way this can be useful is that later, a JobOutputter may include/append this info to an output file. More...
 
virtual Stringsinfo ()
 non-const accessor More...
 
virtual Strings const & info () const
 const accessor More...
 
virtual void provide_citation_info (basic::citation_manager::CitationCollectionList &) const
 Provide citations to the passed CitationCollectionList Subclasses should add the info for themselves and any other classes they use. More...
 

Static Public Member Functions

static std::string mover_name ()
 
static void provide_xml_schema (utility::tag::XMLSchemaDefinition &xsd)
 
static utility::tag::AttributeList loop_protocol_attlist ()
 
static
utility::tag::XMLSchemaComplexTypeGeneratorOP 
complex_type_generator_for_loop_protocol (utility::tag::XMLSchemaDefinition &xsd)
 
- Static Public Member Functions inherited from protocols::loop_modeling::LoopMover
static void setup_fold_tree (Pose &pose, LoopsCOP loops, FoldTreeRequest request)
 Setup the given pose with a fold tree that is compatible with the given loops and requests. More...
 
static void define_composition_schema (utility::tag::XMLSchemaDefinition &xsd, utility::tag::XMLSchemaComplexTypeGenerator &ct_gen, utility::tag::XMLSchemaSimpleSubelementList &subelements)
 
- Static Public Member Functions inherited from protocols::moves::Mover
static std::string name ()
 
static void register_options ()
 Overload this static method if you access options within the mover. More...
 

Protected Member Functions

bool do_apply (Pose &pose) override
 Return the name of this mover. More...
 
- Protected Member Functions inherited from protocols::loop_modeling::LoopMover
virtual bool do_apply (Pose &pose, Loop const &loop)
 Perform the loop sampling move. This method can be overwritten in child classes. More...
 
template<typename ChildSubclassOP >
ChildSubclassOP add_child (ChildSubclassOP child)
 Add a child to this mover. More...
 
void remove_child (LoopMoverOP child)
 Remove a child from this mover. More...
 
void clear_children ()
 Remove all children from this mover. More...
 
LoopMoverOPs get_children () const
 Return all of this mover's children. More...
 
core::Size count_children () const
 Return the number of children this mover has. More...
 
- Protected Member Functions inherited from protocols::moves::Mover
void set_last_move_status (MoverStatus status)
 nonvirtual setter for MoverStatus last_status_. Protected means that only the mover itself will be able to change its own status. The job distributor (august 08 vintage) is aware of status set with this function and will do what the MoverStatus says. More...
 

Private Member Functions

void start_protocol (Pose &pose)
 Setup the aspects of the simulation like the loop movers, the score function, the fold tree, and the temperature. More...
 
void ramp_score_function (core::Size iteration)
 Change the weights of the repulsive score function terms. This is called once every level-2 cycle. More...
 
void ramp_temperature (core::Size iteration)
 Change the temperature of the simulation. This is called once every level-1 cycle. More...
 
void attempt_loop_move (Pose &pose, core::Size i, core::Size j, core::Size k)
 Sample a new conformation by applying all the loop movers. Afterwards apply the Metropolis accept-or-reject criterion. This is called once every level-3 cycle. More...
 
void finish_protocol (Pose &pose)
 No-op right now, but may be useful in the future. More...
 

Private Attributes

utilities::LoopMoverGroupOP protocol_
 
utilities::LoopMoverGroupOP movers_
 
utilities::LoopMoverGroupOP refiners_
 
utilities::TrajectoryLoggerOP logger_
 
protocols::moves::MonteCarloOP monte_carlo_
 
core::scoring::EnergyMap original_sfxn_weights_
 
core::Size sfxn_cycles_
 
core::Size temp_cycles_
 
core::Size mover_cycles_
 
bool ramp_sfxn_rep_
 
bool ramp_sfxn_rama_
 
bool ramp_sfxn_cst_
 
bool ramp_temp_
 
bool scale_temp_cycles_
 
Real initial_temp_
 
Real final_temp_
 
Real original_rama_weight_
 
Real original_rama2b_weight_
 
Real original_repulsive_weight_
 
Real original_cst_weight_
 
bool test_run_
 

Friends

class ::LoopModelerTests
 

Additional Inherited Members

- Public Types inherited from protocols::moves::Mover
typedef utility::tag::TagCOP TagCOP
 
typedef core::pose::Pose Pose
 
typedef core::pose::PoseCOP PoseCOP
 
typedef std::list< std::string > Strings
 

Detailed Description

Monte Carlo search for low energy loop conformations.

This class provides an easy way to run a Monte Carlo simulation searching for the lowest energy conformations for a set of loops. This simulation is organized into three nested loops. On each iteration of the outermost loop, the lowest scoring pose is recovered and the repulsive terms in the score function may be ramped (although this ramping is disabled by default). On each iteration of the intermediate loop, the temperature may be ramped (this ramping is enabled by default). And on each iteration of the innermost loop, a new conformation is sampled and either accepted or rejected according to the Metropolis criterion. The intermediate loop usually goes through more than 100 iterations, while the innermost and outermost loops only go through less than 5.

Like any mover, all the work is done by the apply() method. The rest of the methods of this class are just getters and setters that can be used to control various aspects of the simulation. The add_mover(), add_filter(), and add_acceptance_check() methods are worth drawing some attention to. These methods are used to build up the group of LoopMover objects that samples new loop conformations in the innermost loop. The movers are guaranteed to be applied in the order they are added to the protocol.

Constructor & Destructor Documentation

protocols::loop_modeling::LoopProtocol::LoopProtocol ( )

Default constructor.

protocols::loop_modeling::LoopProtocol::~LoopProtocol ( )
overridedefault

Default destructor.

Member Function Documentation

void protocols::loop_modeling::LoopProtocol::add_acceptance_check ( string  name = "loop_move")

Add an acceptance check to the simulation.

An acceptance check is always performed after all the loop movers have been applied, unless one of the movers failed. This method allows additional acceptance checks to be included in the protocol by adding a loop mover that does nothing but make that check.

void protocols::loop_modeling::LoopProtocol::add_filter ( protocols::filters::FilterOP  filter)

Add a Filter to the simulation.

void protocols::loop_modeling::LoopProtocol::add_mover ( LoopMoverOP  mover)

Add a LoopMover to the simulation.

Loop movers will be applied in the order they're added.

See also
add_refiner()
mark_as_default()
void protocols::loop_modeling::LoopProtocol::add_refiner ( LoopMoverOP  refiner)

Add a LoopMover to the simulation as a refiner.

This method is very similar to add_mover(). Both methods add a new LoopMover to the simulation. This difference is subtle, but relevant when a LoopProtocol is being filled with a default set of movers that might be modified later.

This situation arises when a LoopModeler object is being constructed, or when a <LoopModeler> tag is being parsed by rosetta scripts. In both of these cases, centroid and fullatom LoopProtocols are created right away and filled with default movers. This avoids the necessity of specifying all the usual movers every time loop modeling is invoked. But the default movers may be subsequently overridden. In this case, there is a difference between LoopMovers added via add_mover() (i.e. movers) and add_refiner() (i.e. refiners).

The difference is that movers can be marked as "default" and then be implicitly overridden. Consider the following sequence of calls:

protocol->add_mover(new CcdMover);
protocol->mark_as_default();
protocol->add_mover(new KicMover);

This will result in a LoopProtocol containing only a KicMover. When mark_as_default() is called, all movers within the protocol are set to be replaced the next time add_mover() is called. You can think of those movers as being part of a default configuration that should be replaced when a new configuration is given.

Refiners are not affected by mark_as_default(). Calling add_refiner() will always add a refiner and will never remove old ones, although old refiners can be explicitly removed with clear_refiners(). Refiners are also applied after movers, regardless of the order in which add_mover() and add_refiner() were called. The purpose of all this is to make it easy to replace the parts of a LoopProtocol that are more variable without having to also replace those that are more static.

The variable part of a LoopProtocol is typically the sampling algorithm: KIC or CCD, often with myriad options. The static part is typically the refinement algorithm: minimization, rotamer trials, and repacking, all with carefully tuned parameters. Using add_mover(), mark_as_default(), and add_refiner() makes it easy to change the sampling algorithm without having to worry about the refinement algorithm.

See also
add_mover()
mark_as_default()
void protocols::loop_modeling::LoopProtocol::attempt_loop_move ( Pose pose,
core::Size  i,
core::Size  j,
core::Size  k 
)
private

Sample a new conformation by applying all the loop movers. Afterwards apply the Metropolis accept-or-reject criterion. This is called once every level-3 cycle.

References protocols::loop_modeling::TR().

void protocols::loop_modeling::LoopProtocol::clear_movers ( )

Remove all movers from the protocol.

See also
add_mover()
add_refiner()
clear_refiners()
clear_movers_and_refiners()

References core::pose::Pose::clear().

void protocols::loop_modeling::LoopProtocol::clear_movers_and_refiners ( )

Remove all movers and refiners from the protocol.

See also
add_mover()
add_refiner()
clear_movers()
clear_refiners()
void protocols::loop_modeling::LoopProtocol::clear_refiners ( )

Remove all refiners from the protocol.

See also
add_mover()
add_refiner()
clear_movers()
clear_movers_and_refiners()
utility::tag::XMLSchemaComplexTypeGeneratorOP protocols::loop_modeling::LoopProtocol::complex_type_generator_for_loop_protocol ( utility::tag::XMLSchemaDefinition &  xsd)
static
bool protocols::loop_modeling::LoopProtocol::do_apply ( Pose pose)
overrideprotectedvirtual

Return the name of this mover.

Use a Monte Carlo simulation to search for the best conformations for the given loops.

Reimplemented from protocols::loop_modeling::LoopMover.

References protocols::loop_modeling::TR().

void protocols::loop_modeling::LoopProtocol::finish_protocol ( Pose pose)
private

No-op right now, but may be useful in the future.

References protocols::loop_modeling::TR().

TrajectoryLoggerOP protocols::loop_modeling::LoopProtocol::get_logger ( ) const

Return the object that report on the progress of the protocol.

Size protocols::loop_modeling::LoopProtocol::get_mover_cycles ( ) const

Return how many times the loops movers will be invoked after the score function and temperature have been updated.

std::string protocols::loop_modeling::LoopProtocol::get_name ( ) const
overridevirtual

Return the name of this mover.

Reimplemented from protocols::loop_modeling::LoopMover.

ScoreFunctionOP protocols::loop_modeling::LoopProtocol::get_score_function ( ) const

Get the score function to be used on the next call to apply().

Size protocols::loop_modeling::LoopProtocol::get_sfxn_cycles ( ) const

Get the number of iterations the loop that ramps the score function will make.

Size protocols::loop_modeling::LoopProtocol::get_temp_cycles ( ) const

Get the number of iterations the loop that ramps the temperature should make.

This will throw an exception if the 'times_loop_length' argument was passed to set_temp_cycles() and no loop has been specified yet. The value returned will always be the actual number of iterations that will be carried out.

utility::tag::AttributeList protocols::loop_modeling::LoopProtocol::loop_protocol_attlist ( )
static
void protocols::loop_modeling::LoopProtocol::mark_as_default ( )

Indicate that every mover that is currently part of the protocol should be removed the next time a mover is added.

See also
add_mover()
add_refiner()
void protocols::loop_modeling::LoopProtocol::mark_as_test_run ( )

Indicate that this protocol is being used for a test run.

This method simply limits the number of iterations that will be performed. It can be "undone" by explicitly setting the score function, temperature, and mover cycles back to normal values.

std::string protocols::loop_modeling::LoopProtocol::mover_name ( )
static
void protocols::loop_modeling::LoopProtocol::parse_my_tag ( utility::tag::TagCOP  tag,
basic::datacache::DataMap &  data 
)
overridevirtual
void protocols::loop_modeling::LoopProtocol::provide_xml_schema ( utility::tag::XMLSchemaDefinition &  xsd)
static
void protocols::loop_modeling::LoopProtocol::ramp_score_function ( core::Size  iteration)
private
void protocols::loop_modeling::LoopProtocol::ramp_temperature ( core::Size  iteration)
private

Change the temperature of the simulation. This is called once every level-1 cycle.

References protocols::loop_modeling::TR().

void protocols::loop_modeling::LoopProtocol::set_cst_term_ramping ( bool  value)

Enable or disable ramping of constraints terms of the score funciton.

void protocols::loop_modeling::LoopProtocol::set_mover_cycles ( core::Size  x)

Specify how many times the loops movers should be invoked after the score function and temperature have been updated.

The mover loop is the innermost loop. It is contained by the score function loop and the temperature loop.

void protocols::loop_modeling::LoopProtocol::set_rama_term_ramping ( bool  value)

Enable or disable ramping the repulsive term of the score function.

void protocols::loop_modeling::LoopProtocol::set_repulsive_term_ramping ( bool  value)

Enable or disable ramping the repulsive term of the score function.

void protocols::loop_modeling::LoopProtocol::set_score_function ( core::scoring::ScoreFunctionOP  score_function)

Set the score function to be used on the next call to apply().

void protocols::loop_modeling::LoopProtocol::set_sfxn_cycles ( core::Size  x)

Set the number of iterations the loop that ramps the score function should make.

The score function loop is the outermost loop. It contains the temperature loop and the mover loop.

void protocols::loop_modeling::LoopProtocol::set_temp_cycles ( core::Size  x,
bool  times_loop_length = false 
)

Set the number of iterations the loop that ramps the temperature should make.

The temperature loop is contained by the score function loop. It contains the mover loop. If the second boolean argument is true, the number of iterations will be the first value times the combined length of all the loops being sampled.

void protocols::loop_modeling::LoopProtocol::set_temperature_ramping ( bool  value)

Enable or disable temperature ramping in this simulation.

void protocols::loop_modeling::LoopProtocol::set_temperature_schedule ( Real  start,
Real  stop 
)

Set the initial and final temperatures for the simulation.

The temperature will be linearly interpolated between these values during the simulation.

References protocols::loops::start, and protocols::loops::stop.

void protocols::loop_modeling::LoopProtocol::start_protocol ( Pose pose)
private

Friends And Related Function Documentation

friend class ::LoopModelerTests
friend

Member Data Documentation

Real protocols::loop_modeling::LoopProtocol::final_temp_
private
Real protocols::loop_modeling::LoopProtocol::initial_temp_
private
utilities::TrajectoryLoggerOP protocols::loop_modeling::LoopProtocol::logger_
private
protocols::moves::MonteCarloOP protocols::loop_modeling::LoopProtocol::monte_carlo_
private
core::Size protocols::loop_modeling::LoopProtocol::mover_cycles_
private
utilities::LoopMoverGroupOP protocols::loop_modeling::LoopProtocol::movers_
private
Real protocols::loop_modeling::LoopProtocol::original_cst_weight_
private
Real protocols::loop_modeling::LoopProtocol::original_rama2b_weight_
private
Real protocols::loop_modeling::LoopProtocol::original_rama_weight_
private
Real protocols::loop_modeling::LoopProtocol::original_repulsive_weight_
private
core::scoring::EnergyMap protocols::loop_modeling::LoopProtocol::original_sfxn_weights_
private
utilities::LoopMoverGroupOP protocols::loop_modeling::LoopProtocol::protocol_
private
bool protocols::loop_modeling::LoopProtocol::ramp_sfxn_cst_
private
bool protocols::loop_modeling::LoopProtocol::ramp_sfxn_rama_
private
bool protocols::loop_modeling::LoopProtocol::ramp_sfxn_rep_
private
bool protocols::loop_modeling::LoopProtocol::ramp_temp_
private
utilities::LoopMoverGroupOP protocols::loop_modeling::LoopProtocol::refiners_
private
bool protocols::loop_modeling::LoopProtocol::scale_temp_cycles_
private
core::Size protocols::loop_modeling::LoopProtocol::sfxn_cycles_
private
core::Size protocols::loop_modeling::LoopProtocol::temp_cycles_
private
bool protocols::loop_modeling::LoopProtocol::test_run_
private

The documentation for this class was generated from the following files: