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 Types | Private Member Functions | Private Attributes | List of all members
protocols::jd3::full_model::FullModelJobQueen Class Referenceabstract

The FullModelJobQueen is meant to handle the most common form of Rosetta jobs where a protocol is applied to a single input structure to generate a single output structure. Most JobQueens in Rosetta will to derive from this JobQueen. To make the process of deriving new JobQueens easy, this class's API has been carefully designed to be easy to work with and the class itself has been designed to do as much heavy lifting as possible and to leave only the responsibilities that the FullModelJobQueen could not perform to the derived classes. More...

#include <FullModelJobQueen.hh>

Inheritance diagram for protocols::jd3::full_model::FullModelJobQueen:
Inheritance graph
[legend]

Public Member Functions

 FullModelJobQueen ()
 The FullModelJobQueen constructor asks the FullModelInputterFactory for a FullModelInputter and creates a ResourceManager. More...
 
 ~FullModelJobQueen () override
 
std::string job_definition_xsd () const override
 The FullModelJobQueen assembles the XSD from virtual functions she invokes on the derived JobQueen: append_job_tag_subelements, append_common_tag_subelements, and add_option/add_options. More...
 
std::string resource_definition_xsd () const override
 JobQueens may optionally define an XSD for their resource definition file which is fed to their resource manager (if they control one). If the JobDistributor is awakened with the flag "jd3::output_resource_xsd <output file>" on the command line, and if the derived JobQueen defines an XSD for resources she uses, then the JobDistributor will write out the resource definition XSD to the output file. The derived queen may return an empty string to indicate that no resources are definable for the resource manager. More...
 
JobDigraphOP create_initial_job_dag () override
 The FullModelJobQueen provides an implementation of this function which returns the most straight-forward DAG representing a set of jobs that have no interdependencies: a DAG with a single node and no edges. More...
 
void update_job_dag (JobDigraphUpdater &updater) override
 The FullModelJobQueen's implementation is to not update the JobDAG at all: the most basic protocol defines a job DAG with only a single node. More...
 
LarvalJobs determine_job_list (JobDAGNodeID job_dag_node_index, core::Size max_njobs) override
 The FullModelJobQueen manages the process of creating the list of LarvalJobs that will be later matured into actual jobs and run by the JobDistributor. Classes derived from the FullModelJobQueen need answer a few virtual functions that the FullModelJobQueen will invoke during this process. More...
 
bool has_job_previously_been_output (protocols::jd3::LarvalJobCOP job) override
 
protocols::jd3::JobOP mature_larval_job (protocols::jd3::LarvalJobCOP job, utility::vector1< JobResultCOP > const &input_job_results) override
 Mature the input larval job into a full fledged job that will be run within this process (i.e. on this CPU), and thus can hold pointers to data that may persist inside the ResourceManager or may even be used by another process running in this thread. To pull that off, the Job object must share no non-bitwise-const data with any other Job object. That means if the Job were to contain a Pose and a Mover (as the MoverJob does), then so each Mover should be freshly constructed, and if the Pose had been copied from an existing Pose, must use the Poses "deep_copy" method (since Pose's sometimes share non-constant data between them, e.g. the AtomTree observer system, and sometimes Constraints ). The JobResults vector, which is supplied by the Jobdistributor, has entries corresponding to the JobResults from JobIDs in its input_job_result_indices vector. More...
 
void note_job_completed (LarvalJobCOP job, JobStatus status, core::Size nresults) override
 The JobDistributor will call this function to inform the JobQueen that a job has "completed" – in the sense that it will not be run in the future. It does not guarantee that the job was run on this CPU or that it successfully completed anywhere. The JobStatus indicates whether the job completed or whether it failed. The nresults count lists how many JobSummary/JobResult pairs were produced by the completed job. More...
 
void completed_job_summary (LarvalJobCOP job, ResultIndex result_index, JobSummaryOP summary) override
 If the job result that is summarized here should be output, then the SJQ needs to have access to the LarvalJob in order to do that. More...
 
std::list
< output::OutputSpecificationOP
jobs_that_should_be_output () override
 The JobDistributor asks the JobQueen which JobResults should be queued for output. The JobQueen should reply by returning a list of OutputSpecification objects. Each OutputSpecification indicates a particular JobResult using the JobResultID object that the Specification holds. It also indicates how the JobResult should be output by whatever object will be doing to job outputting. The JobQueen should ask for a given JobResult to be output only once. After a job result is output, the JobDistributor will discard the JobResult, so the JobQueen should not tell the JobDistributor to output a job if it will be used as an input to another job in the future. Note that this method will only be called on the master-node JobQueen (aka JQ0), but that she will not necessarily be the JobQueen to actually return the ResultOutputter for the jobs that will be output. The JobDistributor holds the option to distribute output to other nodes. More...
 
std::list< JobResultIDjob_results_that_should_be_discarded () override
 
output::ResultOutputterOP result_outputter (output::OutputSpecification const &spec) override
 Return the bag of of PoseOutputters (in the form of a MultipleOutputter) for the Pose that has been requested and specified by a particular OutputSpecification; this function guarantees that for each individual outputter-name (respecting the JD-provided filename suffix) that a separate set of PoseOutputters are returned so that multiple threads can potentially output at the same time. More...
 
void determine_preliminary_job_list_from_xml_file (std::string const &job_def_string)
 Read from an input string representing the contents of the job-definiton XML file and construct a set of LarvalJobs; this function is primarily useful for testing, but could be used to organize jobs by an enterprising job distributor or by another JobQueen. More...
 
void flush () override
 Send all buffered output to disk – called by the JobDistributor right before it shuts down if it hits an error or catches an exception that it cannot ignore. More...
 
std::list
< deallocation::DeallocationMessageOP
deallocation_messages () override
 Are there any deallocation messages that the JobQueen would like to have delivered to the JobQueens living on remote hosts? If there are none, the derived JobQueen may return an empty list. The JobDistributor guarantees to send the deallocation message to all remote hosts. The JobDistributor will ask the JobQueen on the head node for a set of deallocation messages after each set of jobs from determine_job_list have been distributed. (i.e., before the next call to determine_job_list is made). More...
 
void process_deallocation_message (deallocation::DeallocationMessageOP message) override
 A deallocation message first sent to the JobDistributor on this host originating from a remote JobQueen. More...
 
- Public Member Functions inherited from protocols::jd3::JobQueen
 JobQueen ()
 
 ~JobQueen () override
 
JobDigraphOP create_and_set_initial_job_dag ()
 Creates the initial job dag using create_initial_job_dag function and sets it to the JQ. More...
 
void note_job_completed_and_track (LarvalJobCOP job, JobStatus status, core::Size nresults)
 Call note_job_completed in derived classes and track the job using the JobTracker. More...
 
LarvalJobs determine_job_list_and_track (JobDAGNodeID job_dag_node_index, core::Size max_njobs)
 Call determine_job_list in derived classes and track the jobs using the JobTracker. More...
 

Static Public Member Functions

static std::string job_def_complex_type_name (std::string const &type)
 Naming function for the complexTypes in the job-definition XSD. More...
 

Protected Member Functions

void do_not_accept_all_full_model_inputters_from_factory ()
 The derived job queen (DJQ) may tell the FullModelJobQueen to only accept a subset of FullModelInputters. First the DJQ says "do_not_accept_all_full_model_inputters_from_factory" and then she can call "allow_full_model_inputter." This function must only be called the DJQ's constructor. More...
 
void allow_full_model_inputter (full_model_inputters::FullModelInputterCreatorOP creator)
 If the derived job queen (DJQ) wants to allow a FullModelInputter to be used either because it is not registered with the FullModelInputterFactory, or because she wants to allow only a subset of the inputters that are registered with the Factory, then she may indicate that to the FullModelJobQueen with this function. If the derived job queen does not want to use all of the pose inputters provided by the factory, then she must call "do_not_accept_all_full_model_inputters_from_factory()" before she calls this function. This function must only be called in the DJQ's constructor. More...
 
void do_not_accept_all_pose_outputters_from_factory ()
 The derived job queen (DJQ) may tell the FullModelJobQueen to only accept a subset of PoseOutputters. First the DJQ says "do_not_accept_all_pose_outputters_from_factory" and then she can call "allow_pose_outputter." This function must only be called the DJQ's constructor. More...
 
void allow_pose_outputter (pose_outputters::PoseOutputterCreatorOP creator)
 If the derived job queen (DJQ) wants to allow a PoseOutputter to be used either because it is not registered with the PoseOutputterFactory, or because she wants to allow only a subset of the outputters that are registered with the Factory, then she may indicate that to the FullModelJobQueen with this function. If the derived job queen does not want to use all of the pose outputters provided by the factory, then she must call "do_not_accept_all_pose_outputters_from_factory()" before she calls this function. If the DJQ has called the "do_not_accept_all_pose_outputters_from_factory" function, then she specifies the default outputter on the first time she calls "allow_pose_outputter." This function must only be called in the DJQ's constructor. More...
 
void set_default_outputter (pose_outputters::PoseOutputterCreatorOP creator)
 If the derived job queen wants the user to get a particular PoseOutputter by default (i.e. when the user hasn't specified which outputter to use in a job definition file and in the absence of a command-line flag that says which outputter to use) instead of the default PoseOutputter chosen by the PoseOutputterFactory, then the DJQ should call this function. If the DJQ has previously called "do_not_accept_all_pose_outputters_from_factory", then the first call to "allow_pose_outputter" specified the default outputter, and a separate call to this function is not absolutely necessary. This function must only be called in the DJQ's constructor. More...
 
virtual void append_job_tag_subelements (utility::tag::XMLSchemaDefinition &job_definition_xsd, utility::tag::XMLSchemaComplexTypeGenerator &ct_gen) const
 The derived JobQueen must inform the FullModelJobQueen of any additional tags that belong as sub elements of the <Job> tag. The FullModelJobQueen will have already appended the <Input>, <Output>, and <Options> subtags before this function executes, so the only functions that the derived class should invoke of the XMLSchemaComplexTypeGenerator are its add_ordered_subelement_set_* functions, if you have additional subelements to add. Adding additional subelements to the complexType generator may require writing additional complexTypes to the XML Schema for the job definition file, and so that job definition xsd is passed in as well. More...
 
virtual void append_common_tag_subelements (utility::tag::XMLSchemaDefinition &xsd, utility::tag::XMLSchemaComplexTypeGenerator &ct_gen) const
 The derived JobQueen must inform the FullModelJobQueen of any additional tags that belong as sub elements of the <Common> tag. The FullModelJobQueen will have already appended the <Options> subtag before this function executes, so the only functions that the derived class should invoke of the XMLSchemaComplexTypeGenerator are its add_ordered_subelement_set_* functions, if you have additional subelements to add. Adding additional subelements to the complexType generator may require writing additional complexTypes to the XML Schema for the job definition file, and so that job definition xsd is passed in as well. The Tags in the <Common> block should be parsed for each Job in the mature_larval_job step; these tags are available to the derived class through the common_block_tags method. This is where data that is not constant over the course of the job can be declared (e.g. ScoreFunctions, the weights of which are often modified during the course of protocol execution), but data that is constant and that can be shared between multiple jobs ought to be initialized and held by the ResourceManager. Options provided in the <Common> block will supercede the command line, but will be overriden by any options provided for a particular job. (This is logic the FullModelJobQueen manages). More...
 
virtual void determine_preliminary_job_list ()
 Allow the derived JobQueen to tell the FullModelJobQueen to initialize the preliminary job list; this is perhaps necessary in the context of multi-round protocols when job-definition file specifies the JobDAG. More...
 
utility::vector1< core::Size >
const & 
preliminary_job_nodes () const
 Read access for the subset of nodes in the job DAG which the FullModelJobQueen is responsible for producing the larval_jobs. They are called "preliminary" jobs because they do not depend on outputs from any previous node in the graph. (The set of job nodes that contain no incoming edges, though, could perhaps be different from the set of preliminary job nodes, so the FullModelJobQueen requires that the deried job queen inform her of which nodes are the preliminary job nodes.) More...
 
bool all_jobs_assigned_for_preliminary_job_node (core::Size node_id) const
 Returns true if all of the jobs for the given input preliminary-job node have been created and returned in a call to determine_job_list. Even if all jobs have been created, not all jobs have necessarily been completed. More...
 
utility::vector1
< FullModelPreliminaryLarvalJob >
const & 
get_preliminary_larval_jobs () const
 Read access to derived JobQueens to the preliminary job list. This will return an empty list if determine_preliminary_jobs has not yet been called. More...
 
numeric::DiscreteIntervalEncodingTree
< core::Size > const & 
completed_jobs () const
 Read access for which jobs have completed and how; if a job-id is a member of this DIET, then it has completed (either in success or failure). More...
 
numeric::DiscreteIntervalEncodingTree
< core::Size > const & 
successful_jobs () const
 Read access for which jobs have completed and how; if a job-id is a member of this DIET, then it completed successfully. More...
 
numeric::DiscreteIntervalEncodingTree
< core::Size > const & 
failed_jobs () const
 Read access for which jobs have completed and how; if a job-id is a member of this DIET, then it completed unsuccessfully. More...
 
numeric::DiscreteIntervalEncodingTree
< core::Size > const & 
processed_jobs () const
 Read access for which jobs have completed and how; if a job-id is a member of this DIET, then the job has already been output. More...
 
virtual FullModelInnerLarvalJobs refine_preliminary_job (FullModelPreliminaryLarvalJob const &prelim_job)
 Ask the derived JobQueen to expand / refine a preliminary larval job, by possibly reading per-job data out of the Tag associated with each job. If there is nothing that needs to be done by the derived class, it may elect to use the base-class implementation of this function which simply returns a list of the inner-job pointers in the input list. Why all the back and forth? So that the derived job queens can take one input structure and multiply it into several sepearate jobs; e.g. in a ddG protocol, you need to run a separate set of jobs for the WT sequence and also for the mutant sequence. The preliminary job will reflect the structure of the WT, and then that will get expanded out. This funciton is non-const so that the derived class can even track which WT sequences it has seen so that after the first WT sequence for a particular input structure, it only expands out the mutant sequences if many mutants on that input. More...
 
virtual LarvalJobs expand_job_list (FullModelInnerLarvalJobOP inner_job, core::Size max_larval_jobs_to_create)
 Expand a FullModelInnerLarvalJob into a full set of LarvalJobs, creating nstruct LarvalJob objects The base class implementation of this function invokes the create_larval_job factory method so that dervied JobQueens can ensure the instantiation of derived LarvalJobs. More...
 
virtual JobOP complete_larval_job_maturation (protocols::jd3::LarvalJobCOP larval_job, utility::options::OptionCollectionCOP job_options, utility::vector1< JobResultCOP > const &input_job_results)=0
 The derived JobQueen must define the method that takes a larval job and the job-specific options and matures the larval job into a full job. More...
 
void create_and_store_output_specification_for_job_result (LarvalJobCOP job, ResultIndex result_index, core::Size nresults)
 Create an output specification for a given job + result index and store it in the recent_successes_ list, which will be given to the JobDistributor upon request. This function invokes the factory method create_output_specification_for_job_result which derive job queens may override. This version of the function will create an OptionCollection and then invoke the version of the function that expects one. More...
 
void create_and_store_output_specification_for_job_result (LarvalJobCOP job, utility::options::OptionCollection const &job_options, ResultIndex result_index, core::Size nresults)
 Create an output specification for a given job + result index and store it in the recent_successes_ list, which will be given to the JobDistributor upon request. This function invokes the factory method create_output_specification_for_job_result which derive job queens may override. This version of the function accepts an OptionCollection if there are multiple results for a particular job, and you can reuse the OptionCollection between calls. More...
 
virtual
output::OutputSpecificationOP 
create_output_specification_for_job_result (LarvalJobCOP job, utility::options::OptionCollection const &job_options, ResultIndex result_index, core::Size nresults)
 Construct the OutputSpecification for a completed successful job. More...
 
JobOutputIndex build_output_index (protocols::jd3::LarvalJobCOP larval_job, ResultIndex result_index_for_job, core::Size n_results_for_job)
 Construct a JobOutputIndex for a given job based on "the obvious", but giving derived classes the chance to assign their own indices via the assign_output_index function. More...
 
virtual void assign_output_index (protocols::jd3::LarvalJobCOP larval_job, ResultIndex result_index_for_job, core::Size n_results_for_job, JobOutputIndex &output_index)
 The derived job queen may assign her own numbering to output Poses if she chooses. More...
 
virtual void derived_process_deallocation_message (deallocation::DeallocationMessageOP message)
 If the derived class has deallocation messages that it needs to broadcast to remote nodes and then to process on those remote nodes, then the StanardJobQueen will pass them along to the derived job queen using this function. More...
 
void add_options (utility::options::OptionKeyList const &opts)
 
void add_option (utility::options::OptionKey const &key)
 
void remove_default_input_element ()
 Override the basic specification of input elements as either PDBs, Silent Structures, or ResourceManager defined structures. This should be called during the derived class's constructor if it is to be used. More...
 
utility::tag::TagCOP common_block_tags () const
 Return the set of subtags that are common to the whole set of jobs in the Job definition file, if any are given. This set of tags is read from disk at most once per execution. More...
 
core::pose::PoseOP pose_for_job (LarvalJobCOP job, utility::options::OptionCollection const &options)
 Return a copy of the Pose to be used with the given job. More...
 
full_model_inputters::FullModelInputterOP full_model_inputter_for_job (FullModelInnerLarvalJob const &inner_job) const
 Access the pose inputter. More...
 
pose_outputters::PoseOutputterOP pose_outputter_for_job (FullModelInnerLarvalJob const &innerJob)
 Access the pose outputter for a particular job; perhaps this outputter has already been created, or perhaps it needs to be created and stored. More...
 
pose_outputters::PoseOutputterOP pose_outputter_for_job (FullModelInnerLarvalJob const &innerJob, utility::options::OptionCollection const &job_options)
 
pose_outputters::PoseOutputterOP pose_outputter_for_job (pose_outputters::PoseOutputSpecification const &spec)
 Find the PoseOutputter for a job specification, respecting the Job-distributor provided output file suffix. The StandardJobQueen guarantees that a different Outputter is used for each unique name as long as that name is not the empty string. This allows multiple threads to write to separate files concurrently. More...
 
utility::vector1
< pose_outputters::SecondaryPoseOutputterOP
secondary_outputters_for_job (FullModelInnerLarvalJob const &innerJob, utility::options::OptionCollection const &job_options)
 
core::Size nstruct_for_job (utility::tag::TagCOP job_tag) const
 
utility::options::OptionCollectionOP options_for_job (FullModelInnerLarvalJob const &inner_job) const
 
utility::options::OptionCollectionOP options_from_tag (utility::tag::TagCOP job_options_tags) const
 
- Protected Member Functions inherited from protocols::jd3::JobQueen
JobDigraph const & get_job_graph () const
 Get read access to the current job graph. More...
 
JobTrackerget_job_tracker ()
 Get write access to the current job tracker. More...
 
JobTracker const & get_job_tracker () const
 Get read access to the current job tracker. More...
 

Private Types

typedef std::map< std::string,
pose_outputters::PoseOutputterOP
RepresentativeOutputterMap
 
typedef std::map< std::string,
pose_outputters::SecondaryPoseOutputterOP
SecondaryRepresentativeOutputterMap
 
typedef std::map< std::pair
< std::string, std::string >
, pose_outputters::PoseOutputterOP
PoseOutputterMap
 
typedef std::map< std::pair
< std::string, std::string >
, pose_outputters::SecondaryPoseOutputterOP
SecondaryOutputterMap
 

Private Member Functions

void determine_preliminary_job_list_from_xml_file (std::string const &job_def_string, std::string const &job_def_schema)
 After generating the job-definition XSD, construct the preliminary job list. This is invoked both from determine_job_list_from_xml_file and determine_job_list – the latter always constructs an XSD to ensure that the derived JobQueen has properly constructed an XSD, even if a job definition file has not been provided on the command line. More...
 
void load_job_definition_file (std::string const &job_def_string, std::string const &job_def_schema)
 
void determine_preliminary_job_list_from_command_line ()
 Instead of reading a JobDefinition file, construct the set of FullModelPreliminaryLarvalJobs reading from the command line. Invoked by determine_preliminary_job_list. More...
 
LarvalJobs next_batch_of_larval_jobs_from_prelim (PrelimJobNodeID job_node_index, core::Size max_njobs)
 
pose_outputters::SecondaryPoseOutputterOP secondary_outputter_for_job (FullModelInnerLarvalJob const &inner_job, utility::options::OptionCollection const &job_options, std::string const &secondary_outputter_type)
 
pose_outputters::SecondaryPoseOutputterOP secondary_outputter_for_job (pose_outputters::PoseOutputSpecification const &)
 
utility::options::OptionKeyList concatenate_all_options () const
 The FMJQ will keep track of all discarded jobs in the discarded_jobs_ diet. More...
 
pose_outputters::PoseOutputterOP get_outputter_from_job_tag (utility::tag::TagCOP tag) const
 

Private Attributes

utility::options::OptionKeyList options_
 
utility::options::OptionKeyList inputter_options_
 
utility::options::OptionKeyList outputter_options_
 
utility::options::OptionKeyList secondary_outputter_options_
 
bool use_factory_provided_full_model_inputters_
 
std::map< std::string,
full_model_inputters::FullModelInputterCreatorCOP
inputter_creators_
 
std::list
< full_model_inputters::FullModelInputterCreatorCOP
inputter_creator_list_
 
bool use_factory_provided_pose_outputters_
 
std::map< std::string,
pose_outputters::PoseOutputterCreatorCOP
outputter_creators_
 
std::list
< pose_outputters::PoseOutputterCreatorCOP
outputter_creator_list_
 
bool override_default_outputter_
 
pose_outputters::PoseOutputterCreatorOP default_outputter_creator_
 
std::map< std::string,
pose_outputters::PoseOutputterOP
pose_outputters_
 
bool required_initialization_performed_
 
utility::tag::TagCOP job_definition_file_tags_
 
utility::tag::TagCOP common_block_tags_
 
JobDigraphOP job_graph_
 
core::Size larval_job_counter_
 
bool preliminary_larval_jobs_determined_
 
utility::vector1
< FullModelPreliminaryLarvalJob
preliminary_larval_jobs_
 
FullModelInnerLarvalJobs inner_larval_jobs_for_curr_prelim_job_
 
core::Size curr_inner_larval_job_index_
 
core::Size njobs_made_for_curr_inner_larval_job_
 
utility::vector1< core::Sizepreliminary_job_node_inds_
 
utility::vector1< core::Sizepjn_job_ind_begin_
 
utility::vector1< core::Sizepjn_job_ind_end_
 
utility::vector1< char > preliminary_job_nodes_complete_
 
std::list
< output::OutputSpecificationOP
recent_successes_
 
RepresentativeOutputterMap representative_pose_outputter_map_
 
SecondaryRepresentativeOutputterMap representative_secondary_outputter_map_
 
PoseOutputterMap pose_outputter_map_
 
SecondaryOutputterMap secondary_outputter_map_
 
std::list
< pose_outputters::SecondaryPoseOutputterOP
cl_outputters_
 
core::Size input_pose_counter_
 
std::map< core::Size,
core::pose::PoseOP
input_pose_index_map_
 
std::map< core::Size, core::Sizelast_job_for_input_pose_
 

Detailed Description

The FullModelJobQueen is meant to handle the most common form of Rosetta jobs where a protocol is applied to a single input structure to generate a single output structure. Most JobQueens in Rosetta will to derive from this JobQueen. To make the process of deriving new JobQueens easy, this class's API has been carefully designed to be easy to work with and the class itself has been designed to do as much heavy lifting as possible and to leave only the responsibilities that the FullModelJobQueen could not perform to the derived classes.

Member Typedef Documentation

typedef std::map< std::pair< std::string, std::string >, pose_outputters::PoseOutputterOP > protocols::jd3::full_model::FullModelJobQueen::PoseOutputterMap
private

Constructor & Destructor Documentation

protocols::jd3::full_model::FullModelJobQueen::FullModelJobQueen ( )
protocols::jd3::full_model::FullModelJobQueen::~FullModelJobQueen ( )
overridedefault

Member Function Documentation

void protocols::jd3::full_model::FullModelJobQueen::add_option ( utility::options::OptionKey const &  key)
protected

Referenced by FullModelJobQueen().

void protocols::jd3::full_model::FullModelJobQueen::add_options ( utility::options::OptionKeyList const &  opts)
protected
bool protocols::jd3::full_model::FullModelJobQueen::all_jobs_assigned_for_preliminary_job_node ( core::Size  node_id) const
protected

Returns true if all of the jobs for the given input preliminary-job node have been created and returned in a call to determine_job_list. Even if all jobs have been created, not all jobs have necessarily been completed.

void protocols::jd3::full_model::FullModelJobQueen::allow_full_model_inputter ( full_model_inputters::FullModelInputterCreatorOP  creator)
protected

If the derived job queen (DJQ) wants to allow a FullModelInputter to be used either because it is not registered with the FullModelInputterFactory, or because she wants to allow only a subset of the inputters that are registered with the Factory, then she may indicate that to the FullModelJobQueen with this function. If the derived job queen does not want to use all of the pose inputters provided by the factory, then she must call "do_not_accept_all_full_model_inputters_from_factory()" before she calls this function. This function must only be called in the DJQ's constructor.

Referenced by FullModelJobQueen().

void protocols::jd3::full_model::FullModelJobQueen::allow_pose_outputter ( pose_outputters::PoseOutputterCreatorOP  creator)
protected

If the derived job queen (DJQ) wants to allow a PoseOutputter to be used either because it is not registered with the PoseOutputterFactory, or because she wants to allow only a subset of the outputters that are registered with the Factory, then she may indicate that to the FullModelJobQueen with this function. If the derived job queen does not want to use all of the pose outputters provided by the factory, then she must call "do_not_accept_all_pose_outputters_from_factory()" before she calls this function. If the DJQ has called the "do_not_accept_all_pose_outputters_from_factory" function, then she specifies the default outputter on the first time she calls "allow_pose_outputter." This function must only be called in the DJQ's constructor.

Referenced by FullModelJobQueen().

void protocols::jd3::full_model::FullModelJobQueen::append_common_tag_subelements ( utility::tag::XMLSchemaDefinition &  xsd,
utility::tag::XMLSchemaComplexTypeGenerator &  ct_gen 
) const
protectedvirtual

The derived JobQueen must inform the FullModelJobQueen of any additional tags that belong as sub elements of the <Common> tag. The FullModelJobQueen will have already appended the <Options> subtag before this function executes, so the only functions that the derived class should invoke of the XMLSchemaComplexTypeGenerator are its add_ordered_subelement_set_* functions, if you have additional subelements to add. Adding additional subelements to the complexType generator may require writing additional complexTypes to the XML Schema for the job definition file, and so that job definition xsd is passed in as well. The Tags in the <Common> block should be parsed for each Job in the mature_larval_job step; these tags are available to the derived class through the common_block_tags method. This is where data that is not constant over the course of the job can be declared (e.g. ScoreFunctions, the weights of which are often modified during the course of protocol execution), but data that is constant and that can be shared between multiple jobs ought to be initialized and held by the ResourceManager. Options provided in the <Common> block will supercede the command line, but will be overriden by any options provided for a particular job. (This is logic the FullModelJobQueen manages).

Derived classes may choose to not override this method as a way to indicate that they have no common-block data that needs to be defined.

void protocols::jd3::full_model::FullModelJobQueen::append_job_tag_subelements ( utility::tag::XMLSchemaDefinition &  job_definition_xsd,
utility::tag::XMLSchemaComplexTypeGenerator &  ct_gen 
) const
protectedvirtual

The derived JobQueen must inform the FullModelJobQueen of any additional tags that belong as sub elements of the <Job> tag. The FullModelJobQueen will have already appended the <Input>, <Output>, and <Options> subtags before this function executes, so the only functions that the derived class should invoke of the XMLSchemaComplexTypeGenerator are its add_ordered_subelement_set_* functions, if you have additional subelements to add. Adding additional subelements to the complexType generator may require writing additional complexTypes to the XML Schema for the job definition file, and so that job definition xsd is passed in as well.

Derived classes may choose to not override this method as a way to indicate that they have no additional subtags of the <Job> tag they wish to add. This is a no-op implementation.

void protocols::jd3::full_model::FullModelJobQueen::assign_output_index ( protocols::jd3::LarvalJobCOP  larval_job,
ResultIndex  result_index_for_job,
core::Size  n_results_for_job,
JobOutputIndex output_index 
)
protectedvirtual

The derived job queen may assign her own numbering to output Poses if she chooses.

No-op implementation – leave the indices the way they were initialized.

Just before a job result is written to disk, the StandardJobQueen asks the derived job queen what indices should be used to identify the soon-to-be-output Pose. The default behavior is to use the nstruct index for the primary output index, and if there are multiple result Poses from a job, to use the result index (as is) for the secondary output index. These values will already have been loaded into the output_index before this function is called. This function will possibly be invoked more than a single time for a single job result, so it is important that the derived JobQueen not assume that it only happens once. This function will only be called on JQ0; it will not be called on any other JQs, so it is welcome to use information that would only be known on the "head node"

JobOutputIndex protocols::jd3::full_model::FullModelJobQueen::build_output_index ( protocols::jd3::LarvalJobCOP  larval_job,
ResultIndex  result_index_for_job,
core::Size  n_results_for_job 
)
protected

Construct a JobOutputIndex for a given job based on "the obvious", but giving derived classes the chance to assign their own indices via the assign_output_index function.

References protocols::jd3::JobOutputIndex::n_primary_outputs, protocols::jd3::JobOutputIndex::n_secondary_outputs, protocols::jd3::JobOutputIndex::primary_output_index, and protocols::jd3::JobOutputIndex::secondary_output_index.

utility::tag::TagCOP protocols::jd3::full_model::FullModelJobQueen::common_block_tags ( ) const
protected

Return the set of subtags that are common to the whole set of jobs in the Job definition file, if any are given. This set of tags is read from disk at most once per execution.

virtual JobOP protocols::jd3::full_model::FullModelJobQueen::complete_larval_job_maturation ( protocols::jd3::LarvalJobCOP  larval_job,
utility::options::OptionCollectionCOP  job_options,
utility::vector1< JobResultCOP > const &  input_job_results 
)
protectedpure virtual

The derived JobQueen must define the method that takes a larval job and the job-specific options and matures the larval job into a full job.

void protocols::jd3::full_model::FullModelJobQueen::completed_job_summary ( LarvalJobCOP  job,
ResultIndex  result_index,
JobSummaryOP  summary 
)
overridevirtual

If the job result that is summarized here should be output, then the SJQ needs to have access to the LarvalJob in order to do that.

Implements protocols::jd3::JobQueen.

numeric::DiscreteIntervalEncodingTree< core::Size > const& protocols::jd3::full_model::FullModelJobQueen::completed_jobs ( ) const
protected

Read access for which jobs have completed and how; if a job-id is a member of this DIET, then it has completed (either in success or failure).

utility::options::OptionKeyList protocols::jd3::full_model::FullModelJobQueen::concatenate_all_options ( ) const
private

The FMJQ will keep track of all discarded jobs in the discarded_jobs_ diet.

void protocols::jd3::full_model::FullModelJobQueen::create_and_store_output_specification_for_job_result ( LarvalJobCOP  job,
ResultIndex  result_index,
core::Size  nresults 
)
protected

Create an output specification for a given job + result index and store it in the recent_successes_ list, which will be given to the JobDistributor upon request. This function invokes the factory method create_output_specification_for_job_result which derive job queens may override. This version of the function will create an OptionCollection and then invoke the version of the function that expects one.

References protocols::jd3::full_model::bad_inner_job_exception(), and protocols::jd3::options_for_job().

void protocols::jd3::full_model::FullModelJobQueen::create_and_store_output_specification_for_job_result ( LarvalJobCOP  job,
utility::options::OptionCollection const &  job_options,
ResultIndex  result_index,
core::Size  nresults 
)
protected

Create an output specification for a given job + result index and store it in the recent_successes_ list, which will be given to the JobDistributor upon request. This function invokes the factory method create_output_specification_for_job_result which derive job queens may override. This version of the function accepts an OptionCollection if there are multiple results for a particular job, and you can reuse the OptionCollection between calls.

JobDigraphOP protocols::jd3::full_model::FullModelJobQueen::create_initial_job_dag ( )
overridevirtual

The FullModelJobQueen provides an implementation of this function which returns the most straight-forward DAG representing a set of jobs that have no interdependencies: a DAG with a single node and no edges.

The base class provides a digraph with a single node – that is, all the jobs are independent of each other. This is equivalent to the kind of jobs that could be run in JD2.

Implements protocols::jd3::JobQueen.

output::OutputSpecificationOP protocols::jd3::full_model::FullModelJobQueen::create_output_specification_for_job_result ( LarvalJobCOP  job,
utility::options::OptionCollection const &  job_options,
ResultIndex  result_index,
core::Size  nresults 
)
protectedvirtual

Construct the OutputSpecification for a completed successful job.

Creates a MultipleOutputSpecification and packs it with one OutputSpecification per PoseOutputter / SecondaryPoseOutputter. The order of the OutputSpecifications that are given here needs to be recapitulated for the PoseMultipleOutputter that will be created by the call to result_outputter, as the OutputSpecifiations are iterated across in the same order as the PoseOutputters in the PoseMultipleOutputter.

References protocols::jd3::full_model::bad_inner_job_exception().

std::list< deallocation::DeallocationMessageOP > protocols::jd3::full_model::FullModelJobQueen::deallocation_messages ( )
overridevirtual

Are there any deallocation messages that the JobQueen would like to have delivered to the JobQueens living on remote hosts? If there are none, the derived JobQueen may return an empty list. The JobDistributor guarantees to send the deallocation message to all remote hosts. The JobDistributor will ask the JobQueen on the head node for a set of deallocation messages after each set of jobs from determine_job_list have been distributed. (i.e., before the next call to determine_job_list is made).

Implements protocols::jd3::JobQueen.

void protocols::jd3::full_model::FullModelJobQueen::derived_process_deallocation_message ( deallocation::DeallocationMessageOP  message)
protectedvirtual

If the derived class has deallocation messages that it needs to broadcast to remote nodes and then to process on those remote nodes, then the StanardJobQueen will pass them along to the derived job queen using this function.

LarvalJobs protocols::jd3::full_model::FullModelJobQueen::determine_job_list ( JobDAGNodeID  job_dag_node_index,
core::Size  max_njobs 
)
overridevirtual

The FullModelJobQueen manages the process of creating the list of LarvalJobs that will be later matured into actual jobs and run by the JobDistributor. Classes derived from the FullModelJobQueen need answer a few virtual functions that the FullModelJobQueen will invoke during this process.

The process begins by first constructing the job definition and resource definition XSDs. With these schemas, the FullModelJobQueen validates the input XML files (if present). The FullModelJobQueen then populates preliminary versions of LarvalJob objects./ If the XSD includes "command line options" (which may be specified either from the command line or in the <options> sections of the Job XML file), the FullModelJobQueen loads the preliminary LarvalJob objects with the options. These preliminary LarvalJob objects will not have been nstruct expanded (i.e. if there are 100 nstruct for each of 5 different jobs, then there will only be 5 preliminary larval jobs created). It then passes the preliminary LarvalJob list and the TagOP objects for each preliminary LarvalJob to the derived class through the refine_job_list method.

Implements protocols::jd3::JobQueen.

void protocols::jd3::full_model::FullModelJobQueen::determine_preliminary_job_list ( )
protectedvirtual

Allow the derived JobQueen to tell the FullModelJobQueen to initialize the preliminary job list; this is perhaps necessary in the context of multi-round protocols when job-definition file specifies the JobDAG.

In most JobQueens, this function will often generate a bunch of 'inner' jobs. (Perhaps think of these as input states, or modeling problems.) For this one, the command line can ONLY ever specify a single input state – just because of how the CL is put together – and EVENTUALLY a job definition file can perhaps do more.

void protocols::jd3::full_model::FullModelJobQueen::determine_preliminary_job_list_from_command_line ( )
private
void protocols::jd3::full_model::FullModelJobQueen::determine_preliminary_job_list_from_xml_file ( std::string const &  job_def_string)

Read from an input string representing the contents of the job-definiton XML file and construct a set of LarvalJobs; this function is primarily useful for testing, but could be used to organize jobs by an enterprising job distributor or by another JobQueen.

Construct the XSD and then invoke the (private) determine_preliminary_job_list_from_xml_file method, which is also invoked by determine_preliminary_job_list.

void protocols::jd3::full_model::FullModelJobQueen::determine_preliminary_job_list_from_xml_file ( std::string const &  job_def_string,
std::string const &  job_def_schema 
)
private

After generating the job-definition XSD, construct the preliminary job list. This is invoked both from determine_job_list_from_xml_file and determine_job_list – the latter always constructs an XSD to ensure that the derived JobQueen has properly constructed an XSD, even if a job definition file has not been provided on the command line.

References protocols::jd3::full_model::FullModelPreliminaryLarvalJob::full_model_inputter, protocols::jd3::full_model::FullModelPreliminaryLarvalJob::inner_job, protocols::jd3::full_model::FullModelPreliminaryLarvalJob::job_options, protocols::jd3::full_model::FullModelPreliminaryLarvalJob::job_tag, protocols::jd3::nstruct_for_job(), and protocols::jd3::options_from_tag().

void protocols::jd3::full_model::FullModelJobQueen::do_not_accept_all_full_model_inputters_from_factory ( )
protected

The derived job queen (DJQ) may tell the FullModelJobQueen to only accept a subset of FullModelInputters. First the DJQ says "do_not_accept_all_full_model_inputters_from_factory" and then she can call "allow_full_model_inputter." This function must only be called the DJQ's constructor.

Referenced by FullModelJobQueen().

void protocols::jd3::full_model::FullModelJobQueen::do_not_accept_all_pose_outputters_from_factory ( )
protected

The derived job queen (DJQ) may tell the FullModelJobQueen to only accept a subset of PoseOutputters. First the DJQ says "do_not_accept_all_pose_outputters_from_factory" and then she can call "allow_pose_outputter." This function must only be called the DJQ's constructor.

Referenced by FullModelJobQueen().

LarvalJobs protocols::jd3::full_model::FullModelJobQueen::expand_job_list ( FullModelInnerLarvalJobOP  inner_job,
core::Size  max_larval_jobs_to_create 
)
protectedvirtual

Expand a FullModelInnerLarvalJob into a full set of LarvalJobs, creating nstruct LarvalJob objects The base class implementation of this function invokes the create_larval_job factory method so that dervied JobQueens can ensure the instantiation of derived LarvalJobs.

References protocols::mean_field::min().

numeric::DiscreteIntervalEncodingTree< core::Size > const& protocols::jd3::full_model::FullModelJobQueen::failed_jobs ( ) const
protected

Read access for which jobs have completed and how; if a job-id is a member of this DIET, then it completed unsuccessfully.

void protocols::jd3::full_model::FullModelJobQueen::flush ( )
overridevirtual

Send all buffered output to disk – called by the JobDistributor right before it shuts down if it hits an error or catches an exception that it cannot ignore.

Implements protocols::jd3::JobQueen.

full_model_inputters::FullModelInputterOP protocols::jd3::full_model::FullModelJobQueen::full_model_inputter_for_job ( FullModelInnerLarvalJob const &  inner_job) const
protected
pose_outputters::PoseOutputterOP protocols::jd3::full_model::FullModelJobQueen::get_outputter_from_job_tag ( utility::tag::TagCOP  tag) const
private
utility::vector1< FullModelPreliminaryLarvalJob > const & protocols::jd3::full_model::FullModelJobQueen::get_preliminary_larval_jobs ( ) const
protected

Read access to derived JobQueens to the preliminary job list. This will return an empty list if determine_preliminary_jobs has not yet been called.

bool protocols::jd3::full_model::FullModelJobQueen::has_job_previously_been_output ( protocols::jd3::LarvalJobCOP  job)
overridevirtual

The JobQueen must be able to determine if a particular job has already been output. The JobQueen returns "true" if the job has already been written, and "false" otherwise. Used for overwrite behavior.

Implements protocols::jd3::JobQueen.

References protocols::jd3::full_model::bad_inner_job_exception(), and protocols::jd3::options_for_job().

std::string protocols::jd3::full_model::FullModelJobQueen::job_def_complex_type_name ( std::string const &  type)
static

Naming function for the complexTypes in the job-definition XSD.

std::string protocols::jd3::full_model::FullModelJobQueen::job_definition_xsd ( ) const
overridevirtual
std::list< JobResultID > protocols::jd3::full_model::FullModelJobQueen::job_results_that_should_be_discarded ( )
overridevirtual

Default implementation does not discard any job results.

Implements protocols::jd3::JobQueen.

std::list< output::OutputSpecificationOP > protocols::jd3::full_model::FullModelJobQueen::jobs_that_should_be_output ( )
overridevirtual

The JobDistributor asks the JobQueen which JobResults should be queued for output. The JobQueen should reply by returning a list of OutputSpecification objects. Each OutputSpecification indicates a particular JobResult using the JobResultID object that the Specification holds. It also indicates how the JobResult should be output by whatever object will be doing to job outputting. The JobQueen should ask for a given JobResult to be output only once. After a job result is output, the JobDistributor will discard the JobResult, so the JobQueen should not tell the JobDistributor to output a job if it will be used as an input to another job in the future. Note that this method will only be called on the master-node JobQueen (aka JQ0), but that she will not necessarily be the JobQueen to actually return the ResultOutputter for the jobs that will be output. The JobDistributor holds the option to distribute output to other nodes.

Implements protocols::jd3::JobQueen.

void protocols::jd3::full_model::FullModelJobQueen::load_job_definition_file ( std::string const &  job_def_string,
std::string const &  job_def_schema 
)
private
JobOP protocols::jd3::full_model::FullModelJobQueen::mature_larval_job ( protocols::jd3::LarvalJobCOP  job,
utility::vector1< JobResultCOP > const &  input_job_results 
)
overridevirtual

Mature the input larval job into a full fledged job that will be run within this process (i.e. on this CPU), and thus can hold pointers to data that may persist inside the ResourceManager or may even be used by another process running in this thread. To pull that off, the Job object must share no non-bitwise-const data with any other Job object. That means if the Job were to contain a Pose and a Mover (as the MoverJob does), then so each Mover should be freshly constructed, and if the Pose had been copied from an existing Pose, must use the Poses "deep_copy" method (since Pose's sometimes share non-constant data between them, e.g. the AtomTree observer system, and sometimes Constraints ). The JobResults vector, which is supplied by the Jobdistributor, has entries corresponding to the JobResults from JobIDs in its input_job_result_indices vector.

Implements protocols::jd3::JobQueen.

References protocols::jd3::full_model::bad_inner_job_exception(), and protocols::jd3::options_for_job().

LarvalJobs protocols::jd3::full_model::FullModelJobQueen::next_batch_of_larval_jobs_from_prelim ( PrelimJobNodeID  job_node_index,
core::Size  max_njobs 
)
private
void protocols::jd3::full_model::FullModelJobQueen::note_job_completed ( LarvalJobCOP  job,
JobStatus  status,
core::Size  nresults 
)
overridevirtual

The JobDistributor will call this function to inform the JobQueen that a job has "completed" – in the sense that it will not be run in the future. It does not guarantee that the job was run on this CPU or that it successfully completed anywhere. The JobStatus indicates whether the job completed or whether it failed. The nresults count lists how many JobSummary/JobResult pairs were produced by the completed job.

Implements protocols::jd3::JobQueen.

References protocols::jd3::full_model::bad_inner_job_exception(), protocols::jd3::jd3_job_status_success, and protocols::jd3::options_for_job().

core::Size protocols::jd3::full_model::FullModelJobQueen::nstruct_for_job ( utility::tag::TagCOP  job_tag) const
protected

the nstruct count is taken from either the Job tag, or the command line. "nstruct" is not a valid option to be provided in the <Options> element.

utility::options::OptionCollectionOP protocols::jd3::full_model::FullModelJobQueen::options_for_job ( FullModelInnerLarvalJob const &  inner_job) const
protected
utility::options::OptionCollectionOP protocols::jd3::full_model::FullModelJobQueen::options_from_tag ( utility::tag::TagCOP  job_options_tag) const
protected

Note that jobs specified on the command line but which the FullModelJobQueen does not know about do not get set or added to the per-job options. Functions trying to read per-job options that the FullModelJobQueen does not know about will die. This is intentional.

References protocols::jd3::full_model::option_type_from_key().

core::pose::PoseOP protocols::jd3::full_model::FullModelJobQueen::pose_for_job ( LarvalJobCOP  job,
utility::options::OptionCollection const &  options 
)
protected

Return a copy of the Pose to be used with the given job.

References protocols::jd3::full_model::bad_inner_job_exception().

pose_outputters::PoseOutputterOP protocols::jd3::full_model::FullModelJobQueen::pose_outputter_for_job ( FullModelInnerLarvalJob const &  innerJob)
protected

Access the pose outputter for a particular job; perhaps this outputter has already been created, or perhaps it needs to be created and stored.

References protocols::jd3::options_for_job().

pose_outputters::PoseOutputterOP protocols::jd3::full_model::FullModelJobQueen::pose_outputter_for_job ( FullModelInnerLarvalJob const &  innerJob,
utility::options::OptionCollection const &  job_options 
)
protected
pose_outputters::PoseOutputterOP protocols::jd3::full_model::FullModelJobQueen::pose_outputter_for_job ( pose_outputters::PoseOutputSpecification const &  spec)
protected

Find the PoseOutputter for a job specification, respecting the Job-distributor provided output file suffix. The StandardJobQueen guarantees that a different Outputter is used for each unique name as long as that name is not the empty string. This allows multiple threads to write to separate files concurrently.

utility::vector1< core::Size > const & protocols::jd3::full_model::FullModelJobQueen::preliminary_job_nodes ( ) const
protected

Read access for the subset of nodes in the job DAG which the FullModelJobQueen is responsible for producing the larval_jobs. They are called "preliminary" jobs because they do not depend on outputs from any previous node in the graph. (The set of job nodes that contain no incoming edges, though, could perhaps be different from the set of preliminary job nodes, so the FullModelJobQueen requires that the deried job queen inform her of which nodes are the preliminary job nodes.)

Read access for the subset of nodes in the job DAG which the FullModelJobQueen is responsible for producing the larval_jobs. They are called "preliminary" jobs because they do not depend on outputs from any previous node in the graph. (The set of job nodes that contain no incoming edges, though, could perhaps be different from the set of preliminary job nodes, so the FullModelJobQueen requires that the derived job queen inform her of which nodes are the preliminary job nodes.)

void protocols::jd3::full_model::FullModelJobQueen::process_deallocation_message ( deallocation::DeallocationMessageOP  message)
overridevirtual

A deallocation message first sent to the JobDistributor on this host originating from a remote JobQueen.

Implements protocols::jd3::JobQueen.

References protocols::jd3::deallocation::input_pose_deallocation_msg.

numeric::DiscreteIntervalEncodingTree< core::Size > const& protocols::jd3::full_model::FullModelJobQueen::processed_jobs ( ) const
protected

Read access for which jobs have completed and how; if a job-id is a member of this DIET, then the job has already been output.

FullModelInnerLarvalJobs protocols::jd3::full_model::FullModelJobQueen::refine_preliminary_job ( FullModelPreliminaryLarvalJob const &  prelim_job)
protectedvirtual

Ask the derived JobQueen to expand / refine a preliminary larval job, by possibly reading per-job data out of the Tag associated with each job. If there is nothing that needs to be done by the derived class, it may elect to use the base-class implementation of this function which simply returns a list of the inner-job pointers in the input list. Why all the back and forth? So that the derived job queens can take one input structure and multiply it into several sepearate jobs; e.g. in a ddG protocol, you need to run a separate set of jobs for the WT sequence and also for the mutant sequence. The preliminary job will reflect the structure of the WT, and then that will get expanded out. This funciton is non-const so that the derived class can even track which WT sequences it has seen so that after the first WT sequence for a particular input structure, it only expands out the mutant sequences if many mutants on that input.

This base class implementation merely returns a one-element list containing the input inner_job. Derived classes have the flexibility to create several preliminary jobs from this input job

References protocols::jd3::full_model::FullModelPreliminaryLarvalJob::inner_job.

void protocols::jd3::full_model::FullModelJobQueen::remove_default_input_element ( )
protected

Override the basic specification of input elements as either PDBs, Silent Structures, or ResourceManager defined structures. This should be called during the derived class's constructor if it is to be used.

TO DO

std::string protocols::jd3::full_model::FullModelJobQueen::resource_definition_xsd ( ) const
overridevirtual

JobQueens may optionally define an XSD for their resource definition file which is fed to their resource manager (if they control one). If the JobDistributor is awakened with the flag "jd3::output_resource_xsd <output file>" on the command line, and if the derived JobQueen defines an XSD for resources she uses, then the JobDistributor will write out the resource definition XSD to the output file. The derived queen may return an empty string to indicate that no resources are definable for the resource manager.

Implements protocols::jd3::JobQueen.

output::ResultOutputterOP protocols::jd3::full_model::FullModelJobQueen::result_outputter ( output::OutputSpecification const &  spec)
overridevirtual

Return the bag of of PoseOutputters (in the form of a MultipleOutputter) for the Pose that has been requested and specified by a particular OutputSpecification; this function guarantees that for each individual outputter-name (respecting the JD-provided filename suffix) that a separate set of PoseOutputters are returned so that multiple threads can potentially output at the same time.

Implements protocols::jd3::JobQueen.

pose_outputters::SecondaryPoseOutputterOP protocols::jd3::full_model::FullModelJobQueen::secondary_outputter_for_job ( FullModelInnerLarvalJob const &  inner_job,
utility::options::OptionCollection const &  job_options,
std::string const &  secondary_outputter_type 
)
private

helper function that should only be called by the above secondary_outputter_for_job function because of its assumption that the representative_secondary_outputter_map_ map contains an entry for the requested secondary_outputter_type

References protocols::jd3::InnerLarvalJob::jobdef_tag().

pose_outputters::SecondaryPoseOutputterOP protocols::jd3::full_model::FullModelJobQueen::secondary_outputter_for_job ( pose_outputters::PoseOutputSpecification const &  spec)
private
utility::vector1< pose_outputters::SecondaryPoseOutputterOP > protocols::jd3::full_model::FullModelJobQueen::secondary_outputters_for_job ( FullModelInnerLarvalJob const &  innerJob,
utility::options::OptionCollection const &  job_options 
)
protected
void protocols::jd3::full_model::FullModelJobQueen::set_default_outputter ( pose_outputters::PoseOutputterCreatorOP  creator)
protected

If the derived job queen wants the user to get a particular PoseOutputter by default (i.e. when the user hasn't specified which outputter to use in a job definition file and in the absence of a command-line flag that says which outputter to use) instead of the default PoseOutputter chosen by the PoseOutputterFactory, then the DJQ should call this function. If the DJQ has previously called "do_not_accept_all_pose_outputters_from_factory", then the first call to "allow_pose_outputter" specified the default outputter, and a separate call to this function is not absolutely necessary. This function must only be called in the DJQ's constructor.

numeric::DiscreteIntervalEncodingTree< core::Size > const& protocols::jd3::full_model::FullModelJobQueen::successful_jobs ( ) const
protected

Read access for which jobs have completed and how; if a job-id is a member of this DIET, then it completed successfully.

void protocols::jd3::full_model::FullModelJobQueen::update_job_dag ( JobDigraphUpdater updater)
overridevirtual

The FullModelJobQueen's implementation is to not update the JobDAG at all: the most basic protocol defines a job DAG with only a single node.

Implements protocols::jd3::JobQueen.

Member Data Documentation

std::list< pose_outputters::SecondaryPoseOutputterOP > protocols::jd3::full_model::FullModelJobQueen::cl_outputters_
private
utility::tag::TagCOP protocols::jd3::full_model::FullModelJobQueen::common_block_tags_
private
core::Size protocols::jd3::full_model::FullModelJobQueen::curr_inner_larval_job_index_
private
pose_outputters::PoseOutputterCreatorOP protocols::jd3::full_model::FullModelJobQueen::default_outputter_creator_
private
FullModelInnerLarvalJobs protocols::jd3::full_model::FullModelJobQueen::inner_larval_jobs_for_curr_prelim_job_
private
core::Size protocols::jd3::full_model::FullModelJobQueen::input_pose_counter_
private
std::map< core::Size, core::pose::PoseOP > protocols::jd3::full_model::FullModelJobQueen::input_pose_index_map_
private
std::list< full_model_inputters::FullModelInputterCreatorCOP > protocols::jd3::full_model::FullModelJobQueen::inputter_creator_list_
private
std::map< std::string, full_model_inputters::FullModelInputterCreatorCOP > protocols::jd3::full_model::FullModelJobQueen::inputter_creators_
private
utility::options::OptionKeyList protocols::jd3::full_model::FullModelJobQueen::inputter_options_
private

Referenced by FullModelJobQueen().

utility::tag::TagCOP protocols::jd3::full_model::FullModelJobQueen::job_definition_file_tags_
private
JobDigraphOP protocols::jd3::full_model::FullModelJobQueen::job_graph_
private
core::Size protocols::jd3::full_model::FullModelJobQueen::larval_job_counter_
private
std::map< core::Size, core::Size > protocols::jd3::full_model::FullModelJobQueen::last_job_for_input_pose_
private
core::Size protocols::jd3::full_model::FullModelJobQueen::njobs_made_for_curr_inner_larval_job_
private
utility::options::OptionKeyList protocols::jd3::full_model::FullModelJobQueen::options_
private
std::list< pose_outputters::PoseOutputterCreatorCOP > protocols::jd3::full_model::FullModelJobQueen::outputter_creator_list_
private
std::map< std::string, pose_outputters::PoseOutputterCreatorCOP > protocols::jd3::full_model::FullModelJobQueen::outputter_creators_
private
utility::options::OptionKeyList protocols::jd3::full_model::FullModelJobQueen::outputter_options_
private

Referenced by FullModelJobQueen().

bool protocols::jd3::full_model::FullModelJobQueen::override_default_outputter_
private
utility::vector1< core::Size > protocols::jd3::full_model::FullModelJobQueen::pjn_job_ind_begin_
private
utility::vector1< core::Size > protocols::jd3::full_model::FullModelJobQueen::pjn_job_ind_end_
private
PoseOutputterMap protocols::jd3::full_model::FullModelJobQueen::pose_outputter_map_
private
std::map< std::string, pose_outputters::PoseOutputterOP > protocols::jd3::full_model::FullModelJobQueen::pose_outputters_
private
utility::vector1< core::Size > protocols::jd3::full_model::FullModelJobQueen::preliminary_job_node_inds_
private
utility::vector1< char > protocols::jd3::full_model::FullModelJobQueen::preliminary_job_nodes_complete_
private
utility::vector1< FullModelPreliminaryLarvalJob > protocols::jd3::full_model::FullModelJobQueen::preliminary_larval_jobs_
private
bool protocols::jd3::full_model::FullModelJobQueen::preliminary_larval_jobs_determined_
private
std::list< output::OutputSpecificationOP > protocols::jd3::full_model::FullModelJobQueen::recent_successes_
private
RepresentativeOutputterMap protocols::jd3::full_model::FullModelJobQueen::representative_pose_outputter_map_
private
SecondaryRepresentativeOutputterMap protocols::jd3::full_model::FullModelJobQueen::representative_secondary_outputter_map_
private
bool protocols::jd3::full_model::FullModelJobQueen::required_initialization_performed_
private
SecondaryOutputterMap protocols::jd3::full_model::FullModelJobQueen::secondary_outputter_map_
private
utility::options::OptionKeyList protocols::jd3::full_model::FullModelJobQueen::secondary_outputter_options_
private

Referenced by FullModelJobQueen().

bool protocols::jd3::full_model::FullModelJobQueen::use_factory_provided_full_model_inputters_
private
bool protocols::jd3::full_model::FullModelJobQueen::use_factory_provided_pose_outputters_
private

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