#ifndef POPULATION_H
#define POPULATION_H
#include <string>
#include <sstream>
#include <vector>
#include <list>
#include "neuron.h"
#include "neuronfactory.h"
#include "serialization.h"
#include "debug.h"
class Population {
public:
// Parameters
std::string name;
std::string ID;
std::string model_type;
double accept_input;
bool spontaneous;
int position;
NeuronParams params;
std::map< std::string, Range > unconstrained; /*<< Collection of unconstrained IDs. */
// Used for GUI to layout populations
int x, y;
// Methods
Population(std::string name, std::string ID, double accept_input, bool spontaneous, int position, std::string model_type, NeuronParams params);
Population();
std::string toString();
struct ConstrainedPopulation {
std::string ID;
std::string name;
NeuronParams params;
std::list<Neuron*> neurons;
std::string model_type;
int position;
double accept_input;
bool spontaneous;
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version) {
ar & ID;
ar & name;
ar & params;
ar & model_type;
ar & neurons;
ar & position;
ar & accept_input;
}
};
void genPopulations(std::map< std::string, Range>::iterator param_in);
std::vector<ConstrainedPopulation>* populationFactory();
private:
std::vector<ConstrainedPopulation> cPopulations; /**< Constrained popuations. **/
void genPopulations();
};
#endif