Rosetta
Public Member Functions | Private Member Functions | Private Attributes | List of all members
protocols::ligand_evolution::Population Class Reference

@ Summarizes and contains all Individuals of one generation More...

#include <Population.hh>

Public Member Functions

 Population ()=default
 
 ~Population ()=default
 
void initialize_from_evotoptions (EvolutionOptions const &options, FragmentLibrary const &library, Scorer const &scorer)
 initializes setting from options object More...
 
utility::vector1< Individual > const & individuals () const
 Exposes the individuals vector for const iterator access. More...
 
utility::vector1< Individual > & individuals ()
 Expose the individuals vector for normal iterator access. More...
 
void sort ()
 Sorts all individuals depending on their score. More...
 
bool is_sorted ()
 Returns true if the individuals are sorted with lowest (and therefore best) score first. More...
 
core::Size size () const
 Returns the size of this population. More...
 
void set_supported_size (core::Size supported_size)
 Sets the supported size of this population. It will get reduced to this size through selective pressure. More...
 
Individual const & individual (core::Size index) const
 Access specific individual. More...
 
Individualindividual (core::Size index)
 Non-const access specific individual. More...
 
void add_random (core::Size n_random_individuals, FragmentLibrary const &lib)
 Adds random individuals to a population. More...
 
void add_individuals (utility::vector1< Individual > const &new_individuals)
 Adds new (and potentially unscored individuals to the population) More...
 
void add_individuals (utility::vector1< LigandIdentifier > const &new_individuals)
 Adds new individuals based on provided LigandIdentifiers. More...
 
void next_generation (Selector const &selector)
 Removes unselected individuals, raises the generation counter and sorts individuals. More...
 
void add_individual (Individual const &individual)
 Adds an individual to this population and sets its id. More...
 
core::Size generation () const
 Returns the current generation. More...
 
utility::vector1< Individualremove_individuals (utility::vector1< core::Size > indices)
 Removes individuals with the given index and returns them. More...
 
utility::vector1< Individualindividuals (utility::vector1< core::Size > const &indices)
 Returns a copy of selected individuals. More...
 
void replace_population (utility::vector1< Individual > const &individuals)
 Replaces the internal population with a new one. More...
 
utility::vector1< utility::vector1< core::Size > > const & expose_generation_log () const
 For debugging and benchmarking purpose to observe population development. More...
 
utility::vector1< std::pair< core::Size, core::Size > > const & expose_inheritance_graph () const
 For debugging and benchmarking purpose to observe population development. More...
 

Private Member Functions

bool check_sorting ()
 Updates and returns the sorting state. Shouldn't be needed to be called usually. More...
 
void log_generation ()
 Saves ids of all sorted individuals. More...
 
void expand_inheritance_graph (Individual const &individual)
 Saves the data of the given individual in the inheritance graph. More...
 

Private Attributes

utility::vector1< Individualindividuals_
 
core::Size generation_ = 0
 
bool sorting_guaranteed_ = false
 
core::Size next_id_ = 1
 Keeps track of the next available and unused id. More...
 
core::Size supported_size_ = 0
 
utility::vector1< utility::vector1< core::Size > > generation_log_
 
utility::vector1< std::pair< core::Size, core::Size > > inheritance_graph_
 For debugging and benchmarking purposes. Each entry represents a node in an inheritance graph First is child, second is the parent. If more than one parent is present, more than one entry is created. More...
 

Detailed Description

@ Summarizes and contains all Individuals of one generation

Constructor & Destructor Documentation

◆ Population()

protocols::ligand_evolution::Population::Population ( )
default

◆ ~Population()

protocols::ligand_evolution::Population::~Population ( )
default

Member Function Documentation

◆ add_individual()

void protocols::ligand_evolution::Population::add_individual ( Individual const &  individual)

Adds an individual to this population and sets its id.

References expand_inheritance_graph(), individual(), individuals_, next_id_, and sorting_guaranteed_.

Referenced by add_individuals(), and add_random().

◆ add_individuals() [1/2]

void protocols::ligand_evolution::Population::add_individuals ( utility::vector1< Individual > const &  new_individuals)

Adds new (and potentially unscored individuals to the population)

References add_individual(), individual(), size(), and protocols::TR().

Referenced by add_individuals(), initialize_from_evotoptions(), and replace_population().

◆ add_individuals() [2/2]

void protocols::ligand_evolution::Population::add_individuals ( utility::vector1< LigandIdentifier > const &  new_individuals)

Adds new individuals based on provided LigandIdentifiers.

References add_individuals().

◆ add_random()

void protocols::ligand_evolution::Population::add_random ( core::Size  n_random_individuals,
FragmentLibrary const &  lib 
)

Adds random individuals to a population.

References add_individual(), individual(), and protocols::ligand_evolution::FragmentLibrary::random_ligand().

Referenced by initialize_from_evotoptions().

◆ check_sorting()

bool protocols::ligand_evolution::Population::check_sorting ( )
private

Updates and returns the sorting state. Shouldn't be needed to be called usually.

References individual(), individuals_, protocols::ligand_evolution::Individual::is_scored(), protocols::ligand_evolution::Individual::score(), and sorting_guaranteed_.

Referenced by is_sorted().

◆ expand_inheritance_graph()

void protocols::ligand_evolution::Population::expand_inheritance_graph ( Individual const &  individual)
private

Saves the data of the given individual in the inheritance graph.

References protocols::ligand_evolution::Individual::id(), individual(), inheritance_graph_, and protocols::ligand_evolution::Individual::parents().

Referenced by add_individual().

◆ expose_generation_log()

utility::vector1< utility::vector1< core::Size > > const & protocols::ligand_evolution::Population::expose_generation_log ( ) const

For debugging and benchmarking purpose to observe population development.

References generation_log_.

Referenced by protocols::ligand_evolution::EvolutionManager::write_population_information().

◆ expose_inheritance_graph()

utility::vector1< std::pair< core::Size, core::Size > > const & protocols::ligand_evolution::Population::expose_inheritance_graph ( ) const

For debugging and benchmarking purpose to observe population development.

References inheritance_graph_.

Referenced by protocols::ligand_evolution::EvolutionManager::write_population_information().

◆ generation()

core::Size protocols::ligand_evolution::Population::generation ( ) const

Returns the current generation.

References generation_.

◆ individual() [1/2]

Individual & protocols::ligand_evolution::Population::individual ( core::Size  index)

Non-const access specific individual.

References individuals_, and sorting_guaranteed_.

◆ individual() [2/2]

Individual const & protocols::ligand_evolution::Population::individual ( core::Size  index) const

◆ individuals() [1/3]

utility::vector1< Individual > & protocols::ligand_evolution::Population::individuals ( )

Expose the individuals vector for normal iterator access.

References individuals_, and sorting_guaranteed_.

◆ individuals() [2/3]

utility::vector1< Individual > const & protocols::ligand_evolution::Population::individuals ( ) const

◆ individuals() [3/3]

utility::vector1< Individual > protocols::ligand_evolution::Population::individuals ( utility::vector1< core::Size > const &  indices)

Returns a copy of selected individuals.

References individuals_.

◆ initialize_from_evotoptions()

void protocols::ligand_evolution::Population::initialize_from_evotoptions ( EvolutionOptions const &  options,
FragmentLibrary const &  library,
Scorer const &  scorer 
)

◆ is_sorted()

bool protocols::ligand_evolution::Population::is_sorted ( )

Returns true if the individuals are sorted with lowest (and therefore best) score first.

References check_sorting(), and sorting_guaranteed_.

Referenced by sort().

◆ log_generation()

void protocols::ligand_evolution::Population::log_generation ( )
private

Saves ids of all sorted individuals.

References generation_log_, individuals_, size(), and sort().

Referenced by next_generation().

◆ next_generation()

void protocols::ligand_evolution::Population::next_generation ( Selector const &  selector)

Removes unselected individuals, raises the generation counter and sorts individuals.

References protocols::ligand_evolution::Selector::apply(), generation_, log_generation(), replace_population(), size(), sort(), supported_size_, and protocols::TR().

Referenced by protocols::ligand_evolution::EvolutionManager::run().

◆ remove_individuals()

utility::vector1< Individual > protocols::ligand_evolution::Population::remove_individuals ( utility::vector1< core::Size indices)

◆ replace_population()

void protocols::ligand_evolution::Population::replace_population ( utility::vector1< Individual > const &  individuals)

Replaces the internal population with a new one.

References add_individuals(), individuals(), and individuals_.

Referenced by next_generation(), and protocols::ligand_evolution::EvolutionManager::run().

◆ set_supported_size()

void protocols::ligand_evolution::Population::set_supported_size ( core::Size  supported_size)

Sets the supported size of this population. It will get reduced to this size through selective pressure.

References supported_size_, and protocols::TR().

Referenced by initialize_from_evotoptions().

◆ size()

core::Size protocols::ligand_evolution::Population::size ( ) const

◆ sort()

void protocols::ligand_evolution::Population::sort ( )

Member Data Documentation

◆ generation_

core::Size protocols::ligand_evolution::Population::generation_ = 0
private

Referenced by generation(), and next_generation().

◆ generation_log_

utility::vector1< utility::vector1< core::Size > > protocols::ligand_evolution::Population::generation_log_
private

◆ individuals_

utility::vector1< Individual > protocols::ligand_evolution::Population::individuals_
private

◆ inheritance_graph_

utility::vector1< std::pair< core::Size, core::Size > > protocols::ligand_evolution::Population::inheritance_graph_
private

For debugging and benchmarking purposes. Each entry represents a node in an inheritance graph First is child, second is the parent. If more than one parent is present, more than one entry is created.

Referenced by expand_inheritance_graph(), and expose_inheritance_graph().

◆ next_id_

core::Size protocols::ligand_evolution::Population::next_id_ = 1
private

Keeps track of the next available and unused id.

Referenced by add_individual().

◆ sorting_guaranteed_

bool protocols::ligand_evolution::Population::sorting_guaranteed_ = false
private

◆ supported_size_

core::Size protocols::ligand_evolution::Population::supported_size_ = 0
private

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