Nemo  2.4.0
Simulate forward-in-time genetic evolution in a spatially explicit, individual-based stochastic simulator
statservices.h
Go to the documentation of this file.
1 
29 #ifndef STATSERVICES_H
30 #define STATSERVICES_H
31 
32 #include <list>
33 #include <string>
34 #include <fstream>
35 #include <map>
36 #include <vector>
37 #include <assert.h>
38 #include <cstring> //for memcpy
39 #include "service.h"
40 #include "statrecorder.h"
41 
42 using namespace std;
43 
44 class Metapop;
45 
46 class StatHandlerBase;
47 
49 class StatServices : public Service {
50 
51 private:
52 
54 
56  list< StatHandlerBase* > _statHandlers;
57 
59  list< StatRecBase *> _statRecorders;
60 
62  unsigned int _numRecorders;
63 
65  vector< vector< double*> > _statValues;
66 
69 
71  string _statArg;
72 
74  unsigned int _occurrence;
75 
77  list< unsigned int > _occurrences;
78 
82  list< unsigned int >::const_iterator _current_occurrence;
83 
84  //output format:
85  unsigned int _width, _precision;
86 
87  unsigned char _separator;
88 
90 
91 public:
92 
93  typedef list< StatHandlerBase* >::const_iterator stat_it;
94 
95  typedef list< StatRecBase* >::const_iterator rec_it;
96 
97  StatServices ( ) : _popPtr(0), _occurrence(0), _currentStatValues(0),
98  _numRecorders(0), _width(12), _precision(6), _separator('\t'), _printAverages(1)
99  { }
100 
101  virtual ~StatServices ( ) { reset_stat_table(); }
102 
103  virtual bool init ( );
104 
105  Metapop* get_pop_ptr ( ) {return _popPtr;}
106 
107  void set_pop_ptr (Metapop* pop) {_popPtr=pop;}
108 
109  void set (string& str, unsigned int occ)
110  {_statArg = str; _occurrence = occ;}
111 
112  void setStatOptions (string& str) {_statArg = str;}
113 
114  string& getStatArg ( ) {return _statArg;}
115 
116  //OCURRENCE
117  unsigned int getOccurrence ( ) {return _occurrence;}
118 
119  void setOcccurrence (unsigned int value) {_occurrence = value;}
123  void setOccurrences (map<unsigned int, unsigned int> timeTable);
125  unsigned int getNumOccurrences( ) {return _occurrences.size();}
126 
130  unsigned int getNumOccurrences(unsigned int replicate)
131  {
132  return _statValues[replicate-1].size();
133  }
135  unsigned int getCurrentOccurrence () {return *_current_occurrence;}
137  void resetCurrentOccurrence () {_current_occurrence = _occurrences.begin();}
138 
139  //PRINT
140  void printStatHeaders (ofstream& FH);
141  void doPrintAverages ( ) {_printAverages = 1;}
142  void cancelPrintAverages ( ) {_printAverages = 0;}
143  bool getPrintAveragesOpt ( ) {return _printAverages;}
144 
148  void printStatValue (ofstream& FH, unsigned int repl_idx);
149 
150  void printStatAverage (ofstream& FH);
151 
152  void setCompactOutputFormat () {_width = 0; _separator = ' ';}
153 
154  void setFieldWidth (unsigned int val) {_width = val;}
155 
156  void setFieldPrecision (unsigned int val) {_precision = val;}
157 
158  void setFieldSeparator (unsigned char c) {_separator = c;}
159 
160  void setDefaultOutputFormat () {_width = 12; _precision = 6; _separator = '\t';}
161 
162  //STAT RECORDS
163  list<StatRecBase*> getAllStats ( );
164 
165  unsigned int getNumStats ( ) {return _statRecorders.size();}
166 
167  stat_it getFirst () {return _statHandlers.begin();}
168 
169  stat_it getLast () {return _statHandlers.end();}
170 
171  vector<double*>* getReplicateStatRecords (unsigned int replicate)
172  {
173  return &_statValues[ replicate-1 ];
174  }
175 
176  double* getGenerationStatValues (unsigned int replicate, unsigned int occurence) const
177  {
178  assert(occurence < _occurrences.size());
179  return _statValues[ replicate-1 ][ occurence ];
180  }
181 
182  void copyGenerationStatValues (unsigned int replicate, unsigned int occurence, double* values, unsigned int size)
183  {
184  assert( _statValues[ replicate-1 ].size() < _occurrences.size() );
185 
186  assert( size == _numRecorders+2);
187 
188  double* new_record = new double[size];
189 
190  memcpy(new_record, values, size*sizeof(double));
191 
192  _statValues[ replicate-1 ].push_back(new_record);
193  }
197  void recordStats (unsigned int gen);
198 
199  virtual void notify ();
204  virtual void load ( SimComponent* sc );
209  virtual void attach ( Handler* H);
213  virtual void reset ( );
214 
216  void reset_stat_table();
217 };
218 #endif //STATSERVICES_H
219 
Service handler (an observer).
Definition: handler.h:35
Top class of the metapopulation structure, contains the patches.
Definition: metapop.h:79
Interface for the simulation services (files and stats).
Definition: service.h:42
Interface to all basic components of a simulation (traits, life cycle events, pop,...
Definition: simcomponent.h:44
Base class of the StatHandler class, implements the Handler interface.
Definition: stathandler.h:47
The Service class used to manage the StatHandler objects.
Definition: statservices.h:49
void setFieldPrecision(unsigned int val)
Definition: statservices.h:156
void setDefaultOutputFormat()
Definition: statservices.h:160
void setOcccurrence(unsigned int value)
Definition: statservices.h:119
Metapop * _popPtr
Definition: statservices.h:53
void cancelPrintAverages()
Definition: statservices.h:142
double * getGenerationStatValues(unsigned int replicate, unsigned int occurence) const
Definition: statservices.h:176
unsigned int getNumOccurrences()
Returns the maximum number of generation records per replicate.
Definition: statservices.h:125
Metapop * get_pop_ptr()
Definition: statservices.h:105
void resetCurrentOccurrence()
Resets the occurrence iterator to the beginning of the list of generation occurrences.
Definition: statservices.h:137
unsigned char _separator
Definition: statservices.h:87
void set(string &str, unsigned int occ)
Definition: statservices.h:109
unsigned int getNumOccurrences(unsigned int replicate)
Returns the number of generation records present in the stat table for a replicate.
Definition: statservices.h:130
unsigned int _occurrence
Deprecated.
Definition: statservices.h:74
list< unsigned int > _occurrences
List of all generations to record.
Definition: statservices.h:77
vector< vector< double * > > _statValues
Table containing all recorded stats, replicate x generation x (num recorders + 2) .
Definition: statservices.h:65
StatServices()
Definition: statservices.h:97
string _statArg
The string argument of the 'stat' input option.
Definition: statservices.h:71
void copyGenerationStatValues(unsigned int replicate, unsigned int occurence, double *values, unsigned int size)
Definition: statservices.h:182
void doPrintAverages()
Definition: statservices.h:141
void set_pop_ptr(Metapop *pop)
Definition: statservices.h:107
unsigned int getCurrentOccurrence()
Returns the last generation recorded for current replicate.
Definition: statservices.h:135
void setStatOptions(string &str)
Definition: statservices.h:112
unsigned int _precision
Definition: statservices.h:85
unsigned int _numRecorders
Number of stats to record.
Definition: statservices.h:62
string & getStatArg()
Definition: statservices.h:114
void setFieldSeparator(unsigned char c)
Definition: statservices.h:158
list< StatRecBase * > _statRecorders
List of stat recorders.
Definition: statservices.h:59
void setFieldWidth(unsigned int val)
Definition: statservices.h:154
stat_it getFirst()
Definition: statservices.h:167
list< StatHandlerBase * >::const_iterator stat_it
Definition: statservices.h:93
unsigned int getOccurrence()
Definition: statservices.h:117
vector< double * > * getReplicateStatRecords(unsigned int replicate)
Definition: statservices.h:171
bool getPrintAveragesOpt()
Definition: statservices.h:143
list< StatRecBase * >::const_iterator rec_it
Definition: statservices.h:95
list< unsigned int >::const_iterator _current_occurrence
Iterator pointing to the current generation to record.
Definition: statservices.h:82
virtual ~StatServices()
Definition: statservices.h:101
list< StatHandlerBase * > _statHandlers
List of stat handlers declared by currently active simulation components.
Definition: statservices.h:56
void setCompactOutputFormat()
Definition: statservices.h:152
unsigned int getNumStats()
Definition: statservices.h:165
bool _printAverages
Definition: statservices.h:89
stat_it getLast()
Definition: statservices.h:169
double * _currentStatValues
Pointer to the last recorded stats.
Definition: statservices.h:68
Nemo2.

Generated for Nemo v2.4.0 by  doxygen 1.9.1 -- Nemo is hosted on  Download Nemo

Locations of visitors to this page
Catalogued on GSR