Structural Bioinformatics Library
Template C++ / Python API for developping structural bioinformatics applications.
|
Representaiont of the workflow of an application enriched with default options. More...
#include <Module_based_workflow.hpp>
Public Types | |
typedef Workflow_graph_traits::vertex_descriptor | Vertex |
Representation of a verttex in the workflow that could be a module, or the Start or End vertices. More... | |
typedef Workflow_graph_traits::edge_descriptor | Edge |
Representation of the flow of information in the workflow. More... | |
Public Member Functions | |
Module_based_workflow (const std::string &application_name="no-application-name") | |
Initialize this application with a name. More... | |
virtual boost::program_options::options_description | add_options (void) |
Virtual method for adding options to the module. More... | |
virtual bool | check_options (std::string &message) const |
Checks that the input options' values are coherent. More... | |
Static Public Member Functions | |
static boost::program_options::options_description *& | get_options (void) |
Access to the options' description of the module. More... | |
Mandatory Requirements | |
std::string | get_name (void) const override |
Returns the name of the package. More... | |
void | run (unsigned verbose, std::ostream &out) override |
Runs the module following the input options. More... | |
bool | is_runnable (void) const override |
Checks that all the input options were set. More... | |
void | statistics (std::ostream &out) override |
Reports high-level statistics on the module. More... | |
Optional Requirements | |
void | add_options_xrt (boost::program_options::options_description *options, bool pre_module) |
std::string | get_output_prefix (void) const override |
Returns a prefix that concatains the input line options used when running the module. More... | |
void | report (const std::string &prefix) override |
Reports the output and statistics in output files. More... | |
Based Options | |
bool | get_report_at_end (void) const |
void | add_helper (const std::string &helper) |
Set the helper of the application. More... | |
std::ostream & | log (void) |
Stream for the standard output, that can be either the shell or a file. More... | |
unsigned | verbose (void) const |
Return the verbosity level for the workflow : 0 (no output), 1 (output during the run), 2 (output during the statistics) or 3 (all output). More... | |
Modules | |
Vertex | get_start_vertex (void) const |
IO::Loader_base & | get_loader (unsigned i) |
const IO::Loader_base & | get_loader (unsigned i) const |
Module_base & | get_module (Vertex u) |
unsigned | get_number_of_loaders (void) const |
template<class Loader > | |
Loader * | add_loader (const std::string &name="") |
Registers a loader into the automaton: note that loaders are executed before the modules. More... | |
template<class Loader > | |
Loader * | add_loader (Loader &loader, const std::string &name="") |
Registers a loader into the automaton: note that loaders are executed before the modules. More... | |
template<class Module > | |
Vertex | register_module (const std::string &name="") |
Registers a module with an input: note that modules are executed in a FIFO manner. More... | |
Vertex | register_module (Module_base &module, const std::string &name="") |
Registers a module without any input: note that modules are executed in a FIFO manner. More... | |
void | make_optional_module (Vertex u, const std::string &option_name, const std::string &option_helper) |
Registers a module with an input: note that modules are executed in a FIFO manner. More... | |
template<class Module1 , class Module2 > | |
Vertex | make_conjunction (Vertex u, Vertex v) |
Make a module that is the conjunction of the two input modules. More... | |
template<class ModuleOut , class Predicate , class UpdateIfTrue > | |
void | make_start_condition (const Predicate &P, Vertex v, const UpdateIfTrue &update_true, const std::string &predicate_name, const std::string &update_name="") |
Make a condition module with exactly one possible outflow, and a predicate for checking if it is followed. More... | |
template<class ModuleOutTrue , class ModuleOutFalse , class Predicate , class UpdateIfTrue , class UpdateIfFalse > | |
void | make_start_condition (const Predicate &P, Vertex v, const UpdateIfTrue &update_true, Vertex w, const UpdateIfFalse &update_false, const std::string &predicate_name, const std::string &update_name="") |
Make a condition module with exactly two possible outflows, and a predicate for checking which one to follow. More... | |
template<class ModuleIn , class ModuleOut , class Predicate , class UpdateIfTrue > | |
void | make_condition (Vertex u, const Predicate &P, Vertex v, const UpdateIfTrue &update_true, const std::string &predicate_name, const std::string &update_name="") |
Make a condition module with exactly one possible outflow, and a predicate for checking if it is followed. More... | |
template<class ModuleIn , class ModuleOutTrue , class ModuleOutFalse , class Predicate , class UpdateIfTrue , class UpdateIfFalse > | |
void | make_condition (Vertex u, const Predicate &P, Vertex v, const UpdateIfTrue &update_true, Vertex w, const UpdateIfFalse &update_false, const std::string &predicate_name, const std::string &update_name="") |
Make a condition module with exactly two possible outflows, and a predicate for checking which one to follow. More... | |
Flows | |
void | set_start_module (Vertex u) |
Modules connected to the start vertex will be first executed; in case of multiple vertices, the modules are executed in an arbitrary order. More... | |
void | set_end_module (Vertex u) |
The results of all modules connected to the end vertex are reported. More... | |
template<class Transformer > | |
void | make_module_flow (Vertex u, Vertex v, const Transformer &join, const std::string &name="") |
Connect the modules represented by the vertices u (source output) and v (target input); if any output data from u should be passed to the input data of v, it is done through the join functor; the optional name is displayed over the edge of the graph when printing the workflow. More... | |
Running the workflow | |
bool | is_valid_workflow (unsigned verbose, std::ostream &out) const |
void | parse_command_line (int argc, char *argv[]) |
Parses the command line options and store the values of the options: the check_options method is called for all loaders and all modules. More... | |
void | load (std::size_t i) |
Load the data using the loaders. More... | |
void | load (void) |
Load the data using the loaders. More... | |
void | start (void) |
Runs the application by pushing into the stack the Start vertex. More... | |
Modules Management | |
void | set_module_instance_name (const std::string &module_instance_name) |
Sets a name for this instance of this module. In particular, it will be used in the prefix of output files generated by a collection of modules. More... | |
const std::string & | get_module_instance_name (void) const |
Get the name of this instance of this module. More... | |
void | set_report_mode (std::ios_base::openmode report_mode) |
Set a report mode, that is open or append modes. More... | |
void | set_report_mode (std::ios_base::openmode &report_mode) |
Set a report mode, that is open or append modes. More... | |
const std::ios_base::openmode | get_report_mode (void) const |
Get the report mode to be used when reporting. More... | |
Optional Requirements | |
void | check_filesystem_directory_exists (const std::string &output_prefix) |
To avoid later crash: check filesystem / existence of directory / directory exists. More... | |
Others | |
template<class Self_ > | |
Self_ * | clone (const Self_ *s) const |
Clones the object using the copy constructor. More... | |
virtual bool | is_logical_module (void) const |
Checks that this module defines a logical operator. More... | |
virtual bool | is_condition_module (void) const |
Checks that this module defines a condition operator. More... | |
virtual bool | operator() (void) |
Only for condition modules, for returning the predicate value. More... | |
virtual bool | is_modules_collection (void) const |
Checks that this module defines a collection of modules. More... | |
Representaiont of the workflow of an application enriched with default options.
It provides the following functionnality:
|
inherited |
Representation of the flow of information in the workflow.
|
inherited |
Representation of a verttex in the workflow that could be a module, or the Start or End vertices.
|
inline |
Initialize this application with a name.
|
inlineinherited |
Set the helper of the application.
|
inlineinherited |
Registers a loader into the automaton: note that loaders are executed before the modules.
|
inlineinherited |
Registers a loader into the automaton: note that loaders are executed before the modules.
|
inlinevirtualinherited |
Virtual method for adding options to the module.
Reimplemented in T_Union_of_balls_surface_volume_3_module< ModuleTraits, OutputArchive >, T_Union_of_balls_mesh_3_module< ModuleTraits >, T_Union_of_balls_boundary_patch_shelling_3_module< ModuleTraits, OutputArchive >, T_Union_of_balls_boundary_3_module< ModuleTraits, ExactNT >, T_Tertiary_quaternary_structure_annotator_module< ModuleTraits >, T_Spatial_search_module< ModuleTraits, ApproximatedSpatialSearchEngine >, T_Nearest_neighbors_graph_builder_module< ModuleTraits >, T_Morse_theory_based_analyzer_module< ModuleTraits, MorseSmaleWittenChainComplex >, T_Morse_theory_based_analyzer_module< ModuleTraits, SBL::GT::T_Morse_Smale_Witten_chain_complex_from_vertex_weighted_graph_builder< typename ModuleTraits::Graph, typename ModuleTraits::Get_weight >::Morse_Smale_Witten_chain_complex >, T_Morse_theory_based_analyzer_module< ModuleTraits, SBL::GT::T_Morse_Smale_Witten_chain_complex_from_weighted_graph_builder< typename ModuleTraits::Graph, typename ModuleTraits::Get_weight >::Morse_Smale_Witten_chain_complex >, T_Morse_theory_based_analyzer_module< ModuleTraits, SBL::GT::T_Morse_Smale_Witten_chain_complex_from_NNG_builder< ModuleTraits::Nearest_neighbors_graph, ModuleTraits::Morse_function, ModuleTraits::Distance_graph_function >::Morse_Smale_Witten_chain_complex >, T_Molecular_interfaces_module< ModuleTraits >, T_Earth_mover_distance_module< ModuleTraits >, T_Buried_surface_area_without_label_module< ModuleTraits >, T_Buried_surface_area_with_labels_module< ModuleTraits >, T_Alpha_complex_of_molecular_model_module< ModuleTraits >, T_XTC_file_loader< ConformationType, ConformationBuilder, ESBTLMolecularSystem, PDBLineFormat >, T_Spheres_3_file_loader< Sphere3, Point3 >, T_Radius_annotator_for_particles_with_annotated_name< NT, SetRadius >, T_Points_d_file_loader< PointD >, T_Particle_annotator_collector< ParticleAnnotator1, ParticleAnnotator2 >, T_Name_annotator_for_atoms< SetAnnotatedName >, T_Dynamic_annotator_for_residues< SetDynamicAnnotation >, T_Dynamic_annotator_for_atoms< SetDynamicAnnotation >, T_Transition_graph_loader< InputArchive, TransitionGraphTraits >, T_Protein_representation_loader< Protein_representation_ >, T_Primitive_labels_loader< PartnerLabelsTraits, MediatorLabelsTraits, ExtraLabelsTraits >, T_Numbers_file_loader< FT, Tag >, T_Molecular_system_loader< Molecular_system_ >, T_Molecular_system_loader< Molecular_system >, T_Molecular_system_loader< Molecular_covalent_structure_builder_::Molecular_covalent_structure::Particle_info::Particle_traits::Molecular_system >, T_Molecular_covalent_structure_loader_from_MOL< MolecularCovalentStructure >, T_Molecular_covalent_structure_loader< Molecular_covalent_structure_builder_ >, T_Molecular_covalent_structure_loader< SBL::CSB::T_Molecular_covalent_structure_builder_for_proteins< typename Protein_representation_::Polypeptide_chain::Molecular_covalent_structure > >, T_Conformation_loader< Conformation_builder_ >, T_Archive_file_loader< InputArchive, SerializedData >, T_Name_annotator_for_pseudo_atoms< SetAnnotatedName >, T_Generic_annotator_without_file< AnnotationType, SetAnnotation, GetInstanceName >, T_Generic_annotator< KeyType, AnnotationType, MakeKey, SetAnnotation, GetOptionName, GetOptionHelp, GetOptionDisplayName >, T_Domain_annotator_for_particles< Annotations >, T_RMSD_comb_edge_weighted_module< ModuleTraits >, T_Morse_theory_based_analyzer_for_NNG_module< ModuleTraits >, T_Cluster_engine_module< ModuleTraits >, T_Alignment_structures_module< ModuleTraits, AlignmentEngineStructures >, and T_Alignment_sequences_module< ModuleTraits, AlignmentEngineSequences >.
|
inlineinherited |
To avoid later crash: check filesystem / existence of directory / directory exists.
|
inlinevirtualinherited |
Checks that the input options' values are coherent.
Reimplemented in T_Union_of_balls_surface_volume_3_module< ModuleTraits, OutputArchive >, T_Union_of_balls_mesh_3_module< ModuleTraits >, T_Union_of_balls_boundary_patch_shelling_3_module< ModuleTraits, OutputArchive >, T_Union_of_balls_boundary_3_module< ModuleTraits, ExactNT >, T_Tertiary_quaternary_structure_annotator_module< ModuleTraits >, T_Spatial_search_module< ModuleTraits, ApproximatedSpatialSearchEngine >, T_Nearest_neighbors_graph_builder_module< ModuleTraits >, T_Morse_theory_based_analyzer_module< ModuleTraits, MorseSmaleWittenChainComplex >, T_Morse_theory_based_analyzer_module< ModuleTraits, SBL::GT::T_Morse_Smale_Witten_chain_complex_from_vertex_weighted_graph_builder< typename ModuleTraits::Graph, typename ModuleTraits::Get_weight >::Morse_Smale_Witten_chain_complex >, T_Morse_theory_based_analyzer_module< ModuleTraits, SBL::GT::T_Morse_Smale_Witten_chain_complex_from_weighted_graph_builder< typename ModuleTraits::Graph, typename ModuleTraits::Get_weight >::Morse_Smale_Witten_chain_complex >, T_Morse_theory_based_analyzer_module< ModuleTraits, SBL::GT::T_Morse_Smale_Witten_chain_complex_from_NNG_builder< ModuleTraits::Nearest_neighbors_graph, ModuleTraits::Morse_function, ModuleTraits::Distance_graph_function >::Morse_Smale_Witten_chain_complex >, T_Molecular_structure_classifier_module< ModuleTraits >, T_Molecular_interfaces_module< ModuleTraits >, T_Module_conjunction< ModuleOrLoader1, ModuleOrLoader2 >, T_Module_condition< Module, Predicate >, T_Cluster_engine_module< ModuleTraits >, T_Buried_surface_area_without_label_module< ModuleTraits >, T_Buried_surface_area_with_labels_module< ModuleTraits >, T_Alpha_complex_of_molecular_model_module< ModuleTraits >, T_Alignment_structures_module< ModuleTraits, AlignmentEngineStructures >, T_Alignment_sequences_module< ModuleTraits, AlignmentEngineSequences >, T_XTC_file_loader< ConformationType, ConformationBuilder, ESBTLMolecularSystem, PDBLineFormat >, T_Spheres_3_file_loader< Sphere3, Point3 >, T_Radius_annotator_for_particles_with_annotated_name< NT, SetRadius >, T_Points_d_file_loader< PointD >, T_Particle_annotator_collector< ParticleAnnotator1, ParticleAnnotator2 >, T_Name_annotator_for_atoms< SetAnnotatedName >, T_Dynamic_annotator_for_residues< SetDynamicAnnotation >, T_Dynamic_annotator_for_atoms< SetDynamicAnnotation >, T_Transition_graph_loader< InputArchive, TransitionGraphTraits >, T_Protein_representation_loader< Protein_representation_ >, T_Primitive_labels_loader< PartnerLabelsTraits, MediatorLabelsTraits, ExtraLabelsTraits >, T_Numbers_file_loader< FT, Tag >, T_Multiple_archives_xml_archive_file_loader< SecondaryArchive, SecondaryData, SerializedData >, T_Molecular_system_loader< Molecular_system_ >, T_Molecular_system_loader< Molecular_system >, T_Molecular_system_loader< Molecular_covalent_structure_builder_::Molecular_covalent_structure::Particle_info::Particle_traits::Molecular_system >, T_Molecular_covalent_structure_loader_from_MOL< MolecularCovalentStructure >, T_Molecular_covalent_structure_loader< Molecular_covalent_structure_builder_ >, T_Molecular_covalent_structure_loader< SBL::CSB::T_Molecular_covalent_structure_builder_for_proteins< typename Protein_representation_::Polypeptide_chain::Molecular_covalent_structure > >, T_Conformation_loader< Conformation_builder_ >, T_Archive_file_loader< InputArchive, SerializedData >, T_PDB_file_loader< ESBTLMolecularSystem, PDBLineFormat >, No_particle_annotator, T_Name_annotator_for_pseudo_atoms< SetAnnotatedName >, T_Generic_annotator_without_file< AnnotationType, SetAnnotation, GetInstanceName >, T_Generic_annotator< KeyType, AnnotationType, MakeKey, SetAnnotation, GetOptionName, GetOptionHelp, GetOptionDisplayName >, T_Domain_annotator_for_particles< Annotations >, T_Conformations_file_loader< ConformationType, ConformationBuilder, ESBTLMolecularSystem, PDBLineFormat >, and T_Molecular_covalent_structure_loader_from_PDB< ParticleTraits, MolecularCovalentStructure, MolecularCovalentStructureBuilder, PDBLineFormat >.
|
inlineinherited |
Clones the object using the copy constructor.
|
inlineinherited |
Get the name of this instance of this module.
|
inlineoverridevirtualinherited |
Returns the name of the package.
Reimplemented from Module_base.
|
inlinestaticinherited |
Access to the options' description of the module.
|
inlineoverridevirtualinherited |
Returns a prefix that concatains the input line options used when running the module.
Reimplemented from T_Module_option_description< Dummy >.
|
inlineinherited |
Get the report mode to be used when reporting.
|
inlineprotectedvirtualinherited |
Checks that this module defines a condition operator.
|
inlineprotectedvirtualinherited |
Checks that this module defines a logical operator.
|
inlineprotectedvirtualinherited |
Checks that this module defines a collection of modules.
|
inlineoverridevirtualinherited |
Checks that all the input options were set.
Reimplemented from Module_base.
|
inlineinherited |
Check the following properties : – the workflow is connected – each module that is not logical or condition has exactly one input – each logical operator has exactly two input – each condition operator has exactly one input and one to two output
|
inlineinherited |
Load the data using the loaders.
|
inlineinherited |
Load the data using the loaders.
|
inlineinherited |
Stream for the standard output, that can be either the shell or a file.
|
inlineinherited |
Make a condition module with exactly one possible outflow, and a predicate for checking if it is followed.
|
inlineinherited |
Make a condition module with exactly two possible outflows, and a predicate for checking which one to follow.
|
inlineinherited |
Make a module that is the conjunction of the two input modules.
|
inlineinherited |
Connect the modules represented by the vertices u (source output) and v (target input); if any output data from u should be passed to the input data of v, it is done through the join functor; the optional name is displayed over the edge of the graph when printing the workflow.
|
inlineinherited |
Registers a module with an input: note that modules are executed in a FIFO manner.
|
inlineinherited |
Make a condition module with exactly one possible outflow, and a predicate for checking if it is followed.
|
inlineinherited |
Make a condition module with exactly two possible outflows, and a predicate for checking which one to follow.
|
inlineprotectedvirtualinherited |
Only for condition modules, for returning the predicate value.
|
inlineinherited |
Parses the command line options and store the values of the options: the check_options method is called for all loaders and all modules.
|
inlineinherited |
Registers a module with an input: note that modules are executed in a FIFO manner.
|
inlineinherited |
Registers a module without any input: note that modules are executed in a FIFO manner.
|
inlineoverridevirtualinherited |
Reports the output and statistics in output files.
Reimplemented from Module_base.
|
inlineoverridevirtualinherited |
Runs the module following the input options.
Implements Module_base.
|
inlineinherited |
The results of all modules connected to the end vertex are reported.
|
inlineinherited |
Sets a name for this instance of this module. In particular, it will be used in the prefix of output files generated by a collection of modules.
|
inlineinherited |
Set a report mode, that is open or append modes.
|
inlineinherited |
Set a report mode, that is open or append modes.
|
inlineinherited |
Modules connected to the start vertex will be first executed; in case of multiple vertices, the modules are executed in an arbitrary order.
|
inlineinherited |
Runs the application by pushing into the stack the Start vertex.
|
inlineoverridevirtualinherited |
Reports high-level statistics on the module.
Reimplemented from Module_base.
|
inlineinherited |
Return the verbosity level for the workflow : 0 (no output), 1 (output during the run), 2 (output during the statistics) or 3 (all output).