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

Generated for Nemo v2.4.2 by  doxygen 1.9.1

Catalogued on GSR