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

#include <JobGenealogist.hh>

Inheritance diagram for protocols::jd3::JobGenealogist:
Inheritance graph
[legend]

Classes

struct  JGJobNodeOP_hash
 
struct  JGResultNodeOP_hash
 

Public Member Functions

 JobGenealogist (core::Size num_job_dag_nodes, core::Size num_input_sources)
 
 ~JobGenealogist () override
 
JGJobNodeOP register_new_job (core::Size job_dag_node_id, core::Size global_job_id, core::Size input_source_id)
 register a new job that does not depend on a previous job result but rather takes a pose directly from an input source More...
 
JGJobNodeOP register_new_job (core::Size job_dag_node_id, core::Size global_job_id, core::Size job_dag_node_id_of_parent, core::Size global_job_id_of_parent, core::Size result_id_of_parent)
 register a new job that depends on a single parent job result More...
 
JGJobNodeOP register_new_job (core::Size job_dag_node_id, core::Size global_job_id, core::Size job_dag_node_id_of_parent, jd3::JobResultID const &id)
 register a new job that depends on a single parent job result More...
 
JGJobNodeOP register_new_job (core::Size job_dag_node_id, core::Size global_job_id, JGResultNodeAP parent)
 register a new job that depends on a single parent job result More...
 
JGJobNodeOP register_new_job (core::Size job_dag_node_id, core::Size global_job_id, utility::vector1< JGResultNodeAP > const &parents)
 register a new job that depends on multiple parent job results More...
 
void note_job_completed (JGJobNodeAP job_node, core::Size nresults)
 Creates nresults new JGResultNodes for this job_node. More...
 
void note_job_completed (core::Size dag_node_id, core::Size global_job_id, core::Size nresults)
 wrapper for the other overload. This one is designed to more closely match the argument provided to JobQueen::note_job_completed More...
 
void discard_job_result (core::Size job_dag_node, core::Size global_job_id, core::Size result_id)
 At the end of job_results_that_should_be_discarded(), call this funciton for every JobResultID in the list. More...
 
void discard_job_result (core::Size job_dag_node, jd3::JobResultID const &id)
 At the end of job_results_that_should_be_discarded(), call this funciton for every JobResultID in the list. More...
 
void garbage_collection (core::Size job_dag_node, bool delete_downstream_job_if_it_has_no_results, std::list< jd3::JobResultID > &container_for_discarded_result_ids)
 return every job result id in this job_dag_node that does not have any jobs spawned after it. More...
 
void all_job_results_for_node (core::Size job_dag_node, std::list< jd3::JobResultID > &container_for_output) const
 This method populates the list with every JobResultID for this job dag node. More...
 
std::string newick_tree () const
 This returns the connectivity of the graph as a newick tree. If you graph is not a tree, this will have duplicate elements. More...
 
core::Size input_source_for_job (core::Size job_dag_node, core::Size global_job_id) const
 
JGJobNodeCOP get_const_job_node (core::Size job_dag_node, core::Size global_job_id) const
 
JGResultNodeCAP get_const_result_node (core::Size node, core::Size global_job_id, core::Size result_id) const
 
void print_all_nodes ()
 This is more for debugging than anything. Print the global_job_ids for every job dag node to the screen. More...
 

Protected Member Functions

JGJobNodeOP get_job_node (core::Size job_dag_node, core::Size global_job_id)
 
JGResultNodeAP get_result_node (core::Size node, core::Size global_job_id, core::Size result_id)
 
void delete_node (JGJobNodeAP job_node, unsigned int job_dag_node, bool delete_from_vec=true)
 Are you all done with this JGJobNode? If so, this method deletes it and removes all traces of it. THIS DOES NOT DELETE ANY OF THE CHILDREN. More...
 
void delete_node (JGJobNodeAP job_node, bool delete_from_vec=true)
 Are you all done with this JGJobNode? If so, this method deletes it and removes all traces of it. THIS DOES NOT DELETE ANY OF THE CHILDREN. More...
 
void delete_node (JGResultNodeAP result_node)
 Are you all done with this JGResultNode? If so, this method deletes it and removes all traces of it. THIS DOES NOT DELETE ANY OF THE CHILDREN. More...
 
unsigned int input_source_for_node (JGJobNodeCAP job_node) const
 This is currently just a wrapper for JGJobNode::input_source_id(). I am leaving it as a method because it may become more complicated in the future. More...
 

Private Member Functions

void add_newick_tree_for_node (JGResultNodeCAP, std::stringstream &) const
 recursive utility function for std::string newick_tree(); More...
 

Private Attributes

core::Size num_input_sources_
 
utility::vector1
< utility::vector1
< JGJobNodeOP > > 
job_nodes_for_dag_node_
 
std::unordered_set
< JGJobNodeOP,
JGJobNodeOP_hash
all_job_nodes_
 
std::unordered_set
< JGResultNodeOP,
JGResultNodeOP_hash
all_result_nodes_
 
compare_job_nodes sorter_
 

Constructor & Destructor Documentation

protocols::jd3::JobGenealogist::JobGenealogist ( core::Size  num_job_dag_nodes,
core::Size  num_input_sources 
)
protocols::jd3::JobGenealogist::~JobGenealogist ( )
override

Member Function Documentation

void protocols::jd3::JobGenealogist::add_newick_tree_for_node ( JGResultNodeCAP  result_node,
std::stringstream &  ss 
) const
private

recursive utility function for std::string newick_tree();

Referenced by newick_tree().

void protocols::jd3::JobGenealogist::all_job_results_for_node ( core::Size  job_dag_node,
std::list< jd3::JobResultID > &  container_for_output 
) const

This method populates the list with every JobResultID for this job dag node.

Parameters
[out]container_for_output

References job_nodes_for_dag_node_.

void protocols::jd3::JobGenealogist::delete_node ( JGJobNodeAP  job_node,
unsigned int  job_dag_node,
bool  delete_from_vec = true 
)
protected

Are you all done with this JGJobNode? If so, this method deletes it and removes all traces of it. THIS DOES NOT DELETE ANY OF THE CHILDREN.

References all_job_nodes_, core::sequence::end, protocols::jd3::JGJobNode::global_job_id(), job_nodes_for_dag_node_, and sorter_.

Referenced by delete_node(), discard_job_result(), and garbage_collection().

void protocols::jd3::JobGenealogist::delete_node ( JGJobNodeAP  job_node,
bool  delete_from_vec = true 
)
inlineprotected

Are you all done with this JGJobNode? If so, this method deletes it and removes all traces of it. THIS DOES NOT DELETE ANY OF THE CHILDREN.

References delete_node().

void protocols::jd3::JobGenealogist::delete_node ( JGResultNodeAP  result_node)
inlineprotected

Are you all done with this JGResultNode? If so, this method deletes it and removes all traces of it. THIS DOES NOT DELETE ANY OF THE CHILDREN.

References all_result_nodes_.

void protocols::jd3::JobGenealogist::discard_job_result ( core::Size  job_dag_node,
core::Size  global_job_id,
core::Size  result_id 
)

At the end of job_results_that_should_be_discarded(), call this funciton for every JobResultID in the list.

References delete_node(), and get_result_node().

Referenced by discard_job_result().

void protocols::jd3::JobGenealogist::discard_job_result ( core::Size  job_dag_node,
jd3::JobResultID const &  id 
)
inline

At the end of job_results_that_should_be_discarded(), call this funciton for every JobResultID in the list.

References discard_job_result().

void protocols::jd3::JobGenealogist::garbage_collection ( core::Size  job_dag_node,
bool  delete_downstream_job_if_it_has_no_results,
std::list< jd3::JobResultID > &  container_for_discarded_result_ids 
)

return every job result id in this job_dag_node that does not have any jobs spawned after it.

Parameters
[out]container_for_discarded_result_ids

Consider the patter Job1 -> Result1 -> Job5 and Job5 has no children (results). Should Job1/Result1 be garbage collected? If so, set delete_downstream_job_if_it_has_no_results to true.

References protocols::cluster::calibur::aa, delete_node(), job_nodes_for_dag_node_, print_all_nodes(), core::id::swap(), and protocols::jd3::TR().

JGJobNodeCOP protocols::jd3::JobGenealogist::get_const_job_node ( core::Size  job_dag_node,
core::Size  global_job_id 
) const
JGResultNodeCAP protocols::jd3::JobGenealogist::get_const_result_node ( core::Size  node,
core::Size  global_job_id,
core::Size  result_id 
) const

References get_const_job_node().

JGJobNodeOP protocols::jd3::JobGenealogist::get_job_node ( core::Size  job_dag_node,
core::Size  global_job_id 
)
protected
JGResultNodeAP protocols::jd3::JobGenealogist::get_result_node ( core::Size  node,
core::Size  global_job_id,
core::Size  result_id 
)
protected

References get_job_node().

Referenced by discard_job_result(), and register_new_job().

core::Size protocols::jd3::JobGenealogist::input_source_for_job ( core::Size  job_dag_node,
core::Size  global_job_id 
) const
inline
unsigned int protocols::jd3::JobGenealogist::input_source_for_node ( JGJobNodeCAP  job_node) const
inlineprotected

This is currently just a wrapper for JGJobNode::input_source_id(). I am leaving it as a method because it may become more complicated in the future.

Referenced by input_source_for_job().

std::string protocols::jd3::JobGenealogist::newick_tree ( ) const

This returns the connectivity of the graph as a newick tree. If you graph is not a tree, this will have duplicate elements.

References add_newick_tree_for_node(), job_nodes_for_dag_node_, and num_input_sources_.

void protocols::jd3::JobGenealogist::note_job_completed ( JGJobNodeAP  job_node,
core::Size  nresults 
)

Creates nresults new JGResultNodes for this job_node.

References all_result_nodes_.

Referenced by note_job_completed().

void protocols::jd3::JobGenealogist::note_job_completed ( core::Size  dag_node_id,
core::Size  global_job_id,
core::Size  nresults 
)
inline

wrapper for the other overload. This one is designed to more closely match the argument provided to JobQueen::note_job_completed

References get_job_node(), and note_job_completed().

void protocols::jd3::JobGenealogist::print_all_nodes ( )

This is more for debugging than anything. Print the global_job_ids for every job dag node to the screen.

References job_nodes_for_dag_node_, and protocols::jd3::TR().

Referenced by garbage_collection().

JGJobNodeOP protocols::jd3::JobGenealogist::register_new_job ( core::Size  job_dag_node_id,
core::Size  global_job_id,
core::Size  input_source_id 
)

register a new job that does not depend on a previous job result but rather takes a pose directly from an input source

References all_job_nodes_, core::sequence::end, job_nodes_for_dag_node_, num_input_sources_, and sorter_.

Referenced by register_new_job().

JGJobNodeOP protocols::jd3::JobGenealogist::register_new_job ( core::Size  job_dag_node_id,
core::Size  global_job_id,
core::Size  job_dag_node_id_of_parent,
core::Size  global_job_id_of_parent,
core::Size  result_id_of_parent 
)

register a new job that depends on a single parent job result

References all_job_nodes_, core::sequence::end, get_result_node(), job_nodes_for_dag_node_, and sorter_.

JGJobNodeOP protocols::jd3::JobGenealogist::register_new_job ( core::Size  job_dag_node_id,
core::Size  global_job_id,
core::Size  job_dag_node_id_of_parent,
jd3::JobResultID const &  id 
)
inline

register a new job that depends on a single parent job result

References register_new_job().

JGJobNodeOP protocols::jd3::JobGenealogist::register_new_job ( core::Size  job_dag_node_id,
core::Size  global_job_id,
JGResultNodeAP  parent 
)

register a new job that depends on a single parent job result

References all_job_nodes_, core::sequence::end, job_nodes_for_dag_node_, and sorter_.

JGJobNodeOP protocols::jd3::JobGenealogist::register_new_job ( core::Size  job_dag_node_id,
core::Size  global_job_id,
utility::vector1< JGResultNodeAP > const &  parents 
)

register a new job that depends on multiple parent job results

References all_job_nodes_, core::sequence::end, job_nodes_for_dag_node_, and sorter_.

Member Data Documentation

std::unordered_set< JGJobNodeOP, JGJobNodeOP_hash > protocols::jd3::JobGenealogist::all_job_nodes_
private
std::unordered_set< JGResultNodeOP, JGResultNodeOP_hash > protocols::jd3::JobGenealogist::all_result_nodes_
private
utility::vector1< utility::vector1< JGJobNodeOP > > protocols::jd3::JobGenealogist::job_nodes_for_dag_node_
private
core::Size protocols::jd3::JobGenealogist::num_input_sources_
private

Referenced by newick_tree(), and register_new_job().

compare_job_nodes protocols::jd3::JobGenealogist::sorter_
private

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