Empirical
Classes | Namespaces
Systematics.h File Reference

Track genotypes, species, clades, or lineages of organisms in a world. More...

#include <ostream>
#include <set>
#include <unordered_set>
#include <map>
#include "../base/Ptr.h"
#include "../control/Signal.h"
#include "../data/DataManager.h"
#include "../data/DataNode.h"
#include "../tools/info_theory.h"
#include "../tools/map_utils.h"
#include "../tools/set_utils.h"
#include "../tools/stats.h"
#include "../tools/string_utils.h"

Go to the source code of this file.

Classes

struct  emp::datastruct::no_data
 
struct  emp::datastruct::mut_landscape_info< PHEN_TYPE >
 The default - an empty struct. More...
 
class  emp::Taxon< ORG_INFO, DATA_STRUCT >
 A Taxon represents a type of organism in a phylogeny. More...
 
class  emp::SystematicsBase< ORG >
 
class  emp::Systematics< ORG, ORG_INFO, DATA_STRUCT >
 A tool to track phylogenetic relationships among organisms. The systematics class tracks the relationships among all organisms based on the INFO_TYPE provided. If an offspring has the same value for INFO_TYPE as its parent, it is grouped into the same taxon. Otherwise a new Taxon is created and the old one is used as its parent in the phylogeny. If the provided INFO_TYPE is the organsism's genome, a traditional phylogeny is formed, with genotypes. If the organism's behavior/task set is used, then organisms are grouped by phenotypes. If the organsims's position is used, the evolutionary path through space is tracked. Any other aspect of organisms can be tracked this way as well. More...
 

Namespaces

 emp
 If we are in emscripten, make sure to include the header.
 
 emp::datastruct
 

Detailed Description

Track genotypes, species, clades, or lineages of organisms in a world.

Note
This file is part of Empirical, https://github.com/devosoft/Empirical
Date
2017-2018
Todo:

Technically, we don't need to keep the ancestors in a set in order to track a lineage... If we delete all of their descendants they should automaticaly be deleted.

We should provide an option to back up systematics data to a file so that it doesn't all need to be kept in memory, especially if we're only doing post-analysis.

This inheritance system makes adding new systematics-related data tracking kind of a pain. Over time, this will probably become a maintainability problem. We can probably make the whole inheritance thing go away through judicious use of signals.

This does not currently handle situations where organisms change locations during their lifetimes gracefully.