MOOSE - Multiscale Object Oriented Simulation Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Stats Class Reference

#include <Stats.h>

+ Inheritance diagram for Stats:
+ Collaboration diagram for Stats:

Public Member Functions

void doWindowCalculation () const
 
double getMean () const
 
unsigned int getNum () const
 
double getSdev () const
 
double getSum () const
 
unsigned int getWindowLength () const
 
double getWmean () const
 
unsigned int getWnum () const
 
double getWsdev () const
 
double getWsum () const
 
void innerWindowCalculation ()
 
void input (double v)
 
void process (const Eref &e, ProcPtr p)
 
void reinit (const Eref &e, ProcPtr p)
 
void setWindowLength (unsigned int len)
 
 Stats ()
 
virtual void vProcess (const Eref &e, ProcPtr p)
 Virtual func for handling process calls for derived classes. More...
 
virtual void vReinit (const Eref &e, ProcPtr p)
 

Static Public Member Functions

static const CinfoinitCinfo ()
 

Private Attributes

bool isWindowDirty_
 
double lastt_
 
double mean_
 
unsigned int num_
 
vector< double > samples_
 
double sdev_
 
double sum_
 
double sumsq_
 
double wmean_
 
unsigned int wnum_
 
double wsdev_
 
double wsum_
 

Detailed Description

Definition at line 12 of file Stats.h.

Constructor & Destructor Documentation

Stats::Stats ( )

Definition at line 134 of file Stats.cpp.

135  :
136  mean_( 0.0 ), sdev_( 0.0 ), sum_( 0.0 ), num_( 0 ),
137  wmean_( 0.0 ), wsdev_( 0.0 ), wsum_( 0.0 ), wnum_( 0 ),
138  sumsq_( 0.0 ), isWindowDirty_( true )
139 {
140  ;
141 }
unsigned int num_
Definition: Stats.h:58
bool isWindowDirty_
Definition: Stats.h:66
double wsdev_
Definition: Stats.h:60
double mean_
Definition: Stats.h:55
double sdev_
Definition: Stats.h:56
double sumsq_
Definition: Stats.h:63
double wsum_
Definition: Stats.h:61
double sum_
Definition: Stats.h:57
unsigned int wnum_
Definition: Stats.h:62
double wmean_
Definition: Stats.h:59

Member Function Documentation

void Stats::doWindowCalculation ( ) const

Definition at line 262 of file Stats.cpp.

References innerWindowCalculation().

Referenced by getWmean(), getWnum(), getWsdev(), and getWsum().

263 {
264  Stats* temp = const_cast< Stats* >( this );
265  temp->innerWindowCalculation();
266 }
Definition: Stats.h:12
void innerWindowCalculation()
Definition: Stats.cpp:268

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double Stats::getMean ( ) const

Definition at line 197 of file Stats.cpp.

References num_, and sum_.

Referenced by initCinfo().

198 {
199  if ( num_ > 0 )
200  return sum_ / num_;
201  return 0.0;
202 }
unsigned int num_
Definition: Stats.h:58
double sum_
Definition: Stats.h:57

+ Here is the caller graph for this function:

unsigned int Stats::getNum ( ) const

Definition at line 216 of file Stats.cpp.

References num_.

Referenced by initCinfo().

217 {
218  return num_;
219 }
unsigned int num_
Definition: Stats.h:58

+ Here is the caller graph for this function:

double Stats::getSdev ( ) const

Definition at line 204 of file Stats.cpp.

References num_, sum_, and sumsq_.

Referenced by initCinfo().

205 {
206  if ( num_ > 0 )
207  return sqrt( ( sumsq_ - sum_ * sum_ / num_ ) / num_ );
208  return 0.0;
209 }
unsigned int num_
Definition: Stats.h:58
double sumsq_
Definition: Stats.h:63
double sum_
Definition: Stats.h:57

+ Here is the caller graph for this function:

double Stats::getSum ( ) const

Definition at line 211 of file Stats.cpp.

References sum_.

Referenced by initCinfo().

212 {
213  return sum_;
214 }
double sum_
Definition: Stats.h:57

+ Here is the caller graph for this function:

unsigned int Stats::getWindowLength ( ) const

Definition at line 255 of file Stats.cpp.

References samples_.

Referenced by initCinfo().

256 {
257  return samples_.size();
258 }
vector< double > samples_
Definition: Stats.h:65

+ Here is the caller graph for this function:

double Stats::getWmean ( ) const

Definition at line 221 of file Stats.cpp.

References doWindowCalculation(), and wmean_.

Referenced by initCinfo().

222 {
224  return wmean_;
225 }
double wmean_
Definition: Stats.h:59
void doWindowCalculation() const
Definition: Stats.cpp:262

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

unsigned int Stats::getWnum ( ) const

Definition at line 239 of file Stats.cpp.

References doWindowCalculation(), and wnum_.

Referenced by initCinfo().

240 {
242  return wnum_;
243 }
unsigned int wnum_
Definition: Stats.h:62
void doWindowCalculation() const
Definition: Stats.cpp:262

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double Stats::getWsdev ( ) const

Definition at line 227 of file Stats.cpp.

References doWindowCalculation(), and wsdev_.

Referenced by initCinfo().

228 {
230  return wsdev_;
231 }
double wsdev_
Definition: Stats.h:60
void doWindowCalculation() const
Definition: Stats.cpp:262

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double Stats::getWsum ( ) const

Definition at line 233 of file Stats.cpp.

References doWindowCalculation(), and wsum_.

Referenced by initCinfo().

234 {
236  return wsum_;
237 }
double wsum_
Definition: Stats.h:61
void doWindowCalculation() const
Definition: Stats.cpp:262

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

const Cinfo * Stats::initCinfo ( )
static

Definition at line 21 of file Stats.cpp.

References getMean(), getNum(), getSdev(), getSum(), getWindowLength(), getWmean(), getWnum(), getWsdev(), getWsum(), Neutral::initCinfo(), input(), process(), reinit(), requestOut(), setWindowLength(), and statsCinfo.

Referenced by SpikeStats::initCinfo().

22 {
24  // Field Definitions
27  "mean",
28  "Mean of all sampled values or of spike rate.",
30  );
32  "sdev",
33  "Standard Deviation of all sampled values, or of rate.",
35  );
37  "sum",
38  "Sum of all sampled values, or total number of spikes.",
40  );
42  "num",
43  "Number of all sampled values, or total number of spikes.",
45  );
46  static ValueFinfo< Stats, unsigned int > windowLength(
47  "windowLength",
48  "Number of bins for windowed stats. "
49  "Ignores windowing if this value is zero. ",
52  );
54  "wmean",
55  "Mean of sampled values or of spike rate within window.",
57  );
59  "wsdev",
60  "Standard Deviation of sampled values, or rate, within window.",
62  );
64  "wsum",
65  "Sum of all sampled values, or total number of spikes, within window.",
67  );
69  "wnum",
70  "Number of all sampled values, or total number of spikes, "
71  "within window.",
73  );
74 
76  // MsgDest Definitions
78  static DestFinfo process( "process",
79  "Handles process call",
81  static DestFinfo reinit( "reinit",
82  "Handles reinit call",
84 
85  static DestFinfo input( "input",
86  "Handles continuous value input as a time-series. "
87  "Multiple inputs are allowed, they will be merged. ",
89 
91  // SharedFinfo Definitions
93  static Finfo* procShared[] = {
94  &process, &reinit
95  };
96  static SharedFinfo proc( "proc",
97  "Shared message for process and reinit",
98  procShared, sizeof( procShared ) / sizeof( const Finfo* )
99  );
100 
101  static Finfo* statsFinfos[] = {
102  &mean, // ReadOnlyValue
103  &sdev, // ReadOnlyValue
104  &sum, // ReadOnlyValue
105  &num, // ReadOnlyValue
106  &wmean, // ReadOnlyValue
107  &wsdev, // ReadOnlyValue
108  &wsum, // ReadOnlyValue
109  &wnum, // ReadOnlyValue
110  &windowLength, // Value
111  &input, // DestFinfo
112  requestOut(), // SrcFinfo
113  &proc // SharedFinfo
114  };
115 
116  static Dinfo< Stats > dinfo;
117  static Cinfo statsCinfo (
118  "Stats",
120  statsFinfos,
121  sizeof( statsFinfos ) / sizeof ( Finfo* ),
122  &dinfo
123  );
124 
125  return &statsCinfo;
126 }
double getSdev() const
Definition: Stats.cpp:204
unsigned int getWindowLength() const
Definition: Stats.cpp:255
double getWmean() const
Definition: Stats.cpp:221
static SrcFinfo1< vector< double > * > * requestOut()
Definition: Stats.cpp:13
void setWindowLength(unsigned int len)
Definition: Stats.cpp:245
Definition: Dinfo.h:60
static const Cinfo * statsCinfo
Definition: Stats.cpp:128
void process(const Eref &e, ProcPtr p)
Definition: Stats.cpp:147
double getSum() const
Definition: Stats.cpp:211
double getWsdev() const
Definition: Stats.cpp:227
double getMean() const
Definition: Stats.cpp:197
double getWsum() const
Definition: Stats.cpp:233
unsigned int getNum() const
Definition: Stats.cpp:216
unsigned int getWnum() const
Definition: Stats.cpp:239
Definition: OpFunc.h:27
void reinit(const Eref &e, ProcPtr p)
Definition: Stats.cpp:161
void input(double v)
Definition: Stats.cpp:183
static const Cinfo * initCinfo()
Definition: Neutral.cpp:16
Definition: Cinfo.h:18
Definition: Finfo.h:12

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void Stats::innerWindowCalculation ( )

Definition at line 268 of file Stats.cpp.

References isWindowDirty_, num_, samples_, wmean_, wnum_, wsdev_, and wsum_.

Referenced by doWindowCalculation().

269 {
270  if ( isWindowDirty_ ) {
271  double wsumsq = 0.0;
272  wsum_ = 0.0;
273  unsigned int max = samples_.size();
274  if ( max > num_ )
275  max = num_;
276  for ( unsigned int i = 0; i < max; ++i ) {
277  wsum_ += samples_[i];
278  wsumsq += samples_[i] * samples_[i];
279  }
280  if ( max > 0 ) {
281  wmean_ = wsum_ / max;
282  wsdev_ = sqrt( ( wsumsq - wsum_ * wsum_ / max ) / max );
283  }
284  wnum_ = max;
285  isWindowDirty_ = false;
286  }
287 }
vector< double > samples_
Definition: Stats.h:65
unsigned int num_
Definition: Stats.h:58
bool isWindowDirty_
Definition: Stats.h:66
double wsdev_
Definition: Stats.h:60
double wsum_
Definition: Stats.h:61
unsigned int wnum_
Definition: Stats.h:62
double wmean_
Definition: Stats.h:59

+ Here is the caller graph for this function:

void Stats::input ( double  v)

Definition at line 183 of file Stats.cpp.

References isWindowDirty_, num_, samples_, sum_, and sumsq_.

Referenced by initCinfo(), SpikeStats::vProcess(), and vProcess().

184 {
185  sum_ += v;
186  sumsq_ += v * v;
187  if ( samples_.size() > 0 )
188  samples_[ num_ % samples_.size() ] = v;
189  ++num_;
190  isWindowDirty_ = true;
191 }
vector< double > samples_
Definition: Stats.h:65
unsigned int num_
Definition: Stats.h:58
bool isWindowDirty_
Definition: Stats.h:66
double sumsq_
Definition: Stats.h:63
double sum_
Definition: Stats.h:57

+ Here is the caller graph for this function:

void Stats::process ( const Eref e,
ProcPtr  p 
)

Definition at line 147 of file Stats.cpp.

References vProcess().

Referenced by initCinfo().

148 {
149  this->vProcess( e, p );
150 }
virtual void vProcess(const Eref &e, ProcPtr p)
Virtual func for handling process calls for derived classes.
Definition: Stats.cpp:152

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void Stats::reinit ( const Eref e,
ProcPtr  p 
)

Definition at line 161 of file Stats.cpp.

References vReinit().

Referenced by initCinfo().

162 {
163  this->vReinit( e, p );
164 }
virtual void vReinit(const Eref &e, ProcPtr p)
Definition: Stats.cpp:166

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void Stats::setWindowLength ( unsigned int  len)

Definition at line 245 of file Stats.cpp.

References isWindowDirty_, and samples_.

Referenced by initCinfo().

246 {
247  if ( len < 1e6 ) {
248  samples_.resize( len, 0.0 );
249  isWindowDirty_ = true;
250  } else {
251  samples_.resize( 0 );
252  }
253 }
vector< double > samples_
Definition: Stats.h:65
bool isWindowDirty_
Definition: Stats.h:66

+ Here is the caller graph for this function:

void Stats::vProcess ( const Eref e,
ProcPtr  p 
)
virtual

Virtual func for handling process calls for derived classes.

Reimplemented in SpikeStats.

Definition at line 152 of file Stats.cpp.

References input(), and requestOut().

Referenced by process().

153 {
154  vector< double > v;
155  requestOut()->send( e, &v );
156  for ( vector< double >::const_iterator
157  i = v.begin(); i != v.end(); ++i )
158  input( *i );
159 }
static SrcFinfo1< vector< double > * > * requestOut()
Definition: Stats.cpp:13
void input(double v)
Definition: Stats.cpp:183

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void Stats::vReinit ( const Eref e,
ProcPtr  p 
)
virtual

Reimplemented in SpikeStats.

Definition at line 166 of file Stats.cpp.

References mean_, num_, samples_, sdev_, sum_, sumsq_, wmean_, wnum_, wsdev_, and wsum_.

Referenced by reinit(), and SpikeStats::vReinit().

167 {
168  mean_ = 0.0;
169  sdev_ = 0.0;
170  sum_ = 0.0;
171  num_ = 0;
172  sumsq_ = 0.0;
173  wmean_ = 0.0;
174  wsdev_ = 0.0;
175  wsum_ = 0.0;
176  wnum_ = 0;
177  samples_.assign( samples_.size(), 0.0 );
178 }
vector< double > samples_
Definition: Stats.h:65
unsigned int num_
Definition: Stats.h:58
double wsdev_
Definition: Stats.h:60
double mean_
Definition: Stats.h:55
double sdev_
Definition: Stats.h:56
double sumsq_
Definition: Stats.h:63
double wsum_
Definition: Stats.h:61
double sum_
Definition: Stats.h:57
unsigned int wnum_
Definition: Stats.h:62
double wmean_
Definition: Stats.h:59

+ Here is the caller graph for this function:

Member Data Documentation

bool Stats::isWindowDirty_
private

Definition at line 66 of file Stats.h.

Referenced by innerWindowCalculation(), input(), and setWindowLength().

double Stats::lastt_
private

Definition at line 64 of file Stats.h.

double Stats::mean_
private

Definition at line 55 of file Stats.h.

Referenced by vReinit().

unsigned int Stats::num_
private

Definition at line 58 of file Stats.h.

Referenced by getMean(), getNum(), getSdev(), innerWindowCalculation(), input(), and vReinit().

vector< double > Stats::samples_
private

Definition at line 65 of file Stats.h.

Referenced by getWindowLength(), innerWindowCalculation(), input(), setWindowLength(), and vReinit().

double Stats::sdev_
private

Definition at line 56 of file Stats.h.

Referenced by vReinit().

double Stats::sum_
private

Definition at line 57 of file Stats.h.

Referenced by getMean(), getSdev(), getSum(), input(), and vReinit().

double Stats::sumsq_
private

Definition at line 63 of file Stats.h.

Referenced by getSdev(), input(), and vReinit().

double Stats::wmean_
private

Definition at line 59 of file Stats.h.

Referenced by getWmean(), innerWindowCalculation(), and vReinit().

unsigned int Stats::wnum_
private

Definition at line 62 of file Stats.h.

Referenced by getWnum(), innerWindowCalculation(), and vReinit().

double Stats::wsdev_
private

Definition at line 60 of file Stats.h.

Referenced by getWsdev(), innerWindowCalculation(), and vReinit().

double Stats::wsum_
private

Definition at line 61 of file Stats.h.

Referenced by getWsum(), innerWindowCalculation(), and vReinit().


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