Nemo  2.3.56
Simulate forward-in-time genetic evolution in a spatially explicit, individual-based stochastic simulator
LCE_StatFH Class Reference

FileHandler of the LCE_StatServiceNotifier class, writes the recorded stats to txt files. More...

#include <servicenotifiers.h>

+ Inheritance diagram for LCE_StatFH:
+ Collaboration diagram for LCE_StatFH:

Public Member Functions

 LCE_StatFH ()
 
 ~LCE_StatFH ()
 
virtual vector< string > ifExist ()
 
void set_statService (StatServices *srv)
 
virtual void FHwrite ()
 
virtual void FHread (string &filename)
 
void PrintStat_byGen ()
 
- Public Member Functions inherited from FileHandler
 FileHandler (const char *ext)
 
virtual ~FileHandler ()
 
virtual void init ()
 Called by notifier during simulation setup, performs file checking. More...
 
virtual vector< string > ifExist ()
 Checks if any file associated with the current file name already exists on disk. More...
 
virtual void set (bool rpl_per, bool gen_per, int rpl_occ, int gen_occ, int rank, string path)
 Sets the hanlder parameters. More...
 
virtual void set_multi (bool rpl_per, bool gen_per, int rpl_occ, TMatrix *Occ, string path)
 
virtual void FHwrite ()=0
 Default behavior of the class, called by Handler::update(). More...
 
virtual void FHread (string &filename)=0
 Default input function. More...
 
virtual void update ()
 Updates the inner replicate and generation counters and calls FHwrite if needed by the the periodicity of the file. More...
 
Metapopget_pop_ptr ()
 Returns the pointer to the current metapop through the FileServices interface. More...
 
void set_pop_ptr (Metapop *pop_ptr)
 
FileServicesget_service ()
 Returns pointer to the FileServices. More...
 
void set_service (FileServices *srv)
 
std::string & get_path ()
 
void set_path ()
 
std::string & get_extension ()
 
void set_extension (const char *ext)
 
std::string & get_filename ()
 Builds and returns the current file name depending on the periodicity of the file. More...
 
bool get_isInputHandler ()
 
void set_isInputHandler (bool val)
 
bool get_isReplicatePeriodic ()
 
void set_isReplicatePeriodic (bool val)
 
unsigned int get_ReplicateOccurrence ()
 
void set_ReplicateOccurrence (unsigned int val)
 
bool get_isGenerationPeriodic ()
 
void set_isGenerationPeriodic (bool val)
 
unsigned int get_GenerationOccurrence ()
 
void set_GenerationOccurrence (unsigned int val)
 
unsigned int get_ExecRank ()
 unused yet... More...
 
void set_ExecRank (int val)
 
TMatrixget_OccMatrix ()
 
void set_OccMatrix (TMatrix *occ)
 
bool get_isMasterExec ()
 
void set_isMasterExec (bool is)
 
- Public Member Functions inherited from Handler
virtual void init ()=0
 Inits state. More...
 
virtual void update ()=0
 Updates the handler state. More...
 
virtual ~Handler ()
 

Private Attributes

StatServices_statService
 

Additional Inherited Members

- Protected Attributes inherited from FileHandler
Metapop_pop
 Pointer to the current metapop, set during initialization within the init function. More...
 

Detailed Description

FileHandler of the LCE_StatServiceNotifier class, writes the recorded stats to txt files.

Constructor & Destructor Documentation

◆ LCE_StatFH()

LCE_StatFH::LCE_StatFH ( )
inline
137: FileHandler(".txt"), _statService(0)
138{
139 FileHandler::set(false,false,0,0,0,"");
140 set_isMasterExec(true);
141}
Interface to handle file input/output for any SimComponent.
Definition: filehandler.h:53
void set_isMasterExec(bool is)
Definition: filehandler.h:182
virtual void set(bool rpl_per, bool gen_per, int rpl_occ, int gen_occ, int rank, string path)
Sets the hanlder parameters.
Definition: filehandler.h:193
StatServices * _statService
Definition: servicenotifiers.h:132

References FileHandler::set(), and FileHandler::set_isMasterExec().

◆ ~LCE_StatFH()

LCE_StatFH::~LCE_StatFH ( )
inline
143{ };

Member Function Documentation

◆ FHread()

virtual void LCE_StatFH::FHread ( string &  filename)
inlinevirtual

Implements FileHandler.

150{}

◆ FHwrite()

void LCE_StatFH::FHwrite ( )
virtual

Implements FileHandler.

396{
397 ofstream FH;
398
399 string filename = get_path() + get_service()->getBaseFileName() + get_extension();
400
401#ifdef _DEBUG_
402 message("LCE_StatFH::FHwrite (%s)\n",filename.c_str());
403#endif
404
405 if(SIMenv::getCurrentReplicate() == 1) {
406
407 FH.open(filename.c_str(),ios::trunc);
408
409 if(!FH) fatal("LCE_StatFH::FHwrite:: could not open stat output file \"%s\"\n",filename.c_str());
410
411 } else {
412
413 FH.open(filename.c_str(),ios::app);
414
415 if(!FH) fatal("LCE_StatFH::FHwrite:: could not open stat output file \"%s\"\n",filename.c_str());
416
417 }
418
420
421 FH.close();
422
423 //write the stat averages to the 'bygen.txt' file if at last replicate.
425 && SIMenv::getReplicates() > 1
428}
std::string & get_extension()
Definition: filehandler.h:143
std::string & get_path()
Definition: filehandler.h:139
FileServices * get_service()
Returns pointer to the FileServices.
Definition: filehandler.h:135
string & getBaseFileName()
Accessor to the base file name of the simulation.
Definition: fileservices.cc:398
void PrintStat_byGen()
Definition: servicenotifiers.cc:432
static unsigned int getReplicates()
Definition: simenv.h:63
static unsigned int getCurrentReplicate()
Definition: simenv.h:62
bool getPrintAveragesOpt()
Definition: statservices.h:144
void printStatValue(ofstream &FH, unsigned int repl_idx)
Prints the stat values to the '.txt' output file.
Definition: statservices.cc:280
void fatal(const char *str,...)
Definition: output.cc:96
void message(const char *message,...)
Definition: output.cc:40

References _statService, fatal(), FileHandler::get_extension(), FileHandler::get_path(), FileHandler::get_service(), FileServices::getBaseFileName(), SIMenv::getCurrentReplicate(), StatServices::getPrintAveragesOpt(), SIMenv::getReplicates(), message(), PrintStat_byGen(), and StatServices::printStatValue().

◆ ifExist()

vector< string > LCE_StatFH::ifExist ( )
virtual

Reimplemented from FileHandler.

361{
362// bool status = true;
363 ifstream ifExist1, ifExist2;
364 ifExist1.setstate(ios::failbit);
365 ifExist2.setstate(ios::failbit);
366
367 //check if the basefilename is already used on disk:
368 string filename = get_path() + get_service()->getBaseFileName() + ".txt";
369
370 vector< string > list;
371
372 ifExist1.open(filename.c_str(),ios::in);
373 if(ifExist1.is_open()) {
374// warning("filename \"%s\" used by \"%s\"\n",get_service()->getBaseFileName().c_str(),filename.c_str());
375 list.push_back(filename);
376// status = false;
377 }
378 ifExist1.close();
379
380 filename = get_path() + get_service()->getBaseFileName() + "_bygen.txt";
381
382 ifExist2.open(filename.c_str(),ios::in);
383 if(ifExist2.is_open()) {
384// warning("filename \"%s\" used by \"%s\"\n",get_service()->getBaseFileName().c_str(),filename.c_str());
385 list.push_back(filename);
386// status = false;
387 }
388 ifExist2.close();
389
390 return list;
391}

References FileHandler::get_path(), FileHandler::get_service(), and FileServices::getBaseFileName().

◆ PrintStat_byGen()

void LCE_StatFH::PrintStat_byGen ( )
433{
434 ofstream FH;
435
436 string filename = get_path() + get_service()->getBaseFileName() + "_bygen.txt";
437
438 FH.open(filename.c_str(),ios::trunc);
439
440 if(!FH) fatal("PrintStat:: could not open stat output file\n");
441
443
444 FH.close();
445}
void printStatAverage(ofstream &FH)
Definition: statservices.cc:328

References _statService, fatal(), FileHandler::get_path(), FileHandler::get_service(), FileServices::getBaseFileName(), and StatServices::printStatAverage().

Referenced by FHwrite().

+ Here is the caller graph for this function:

◆ set_statService()

void LCE_StatFH::set_statService ( StatServices srv)
inline
147{_statService = srv;}

References _statService.

Referenced by LCE_StatServiceNotifier::loadStatServices().

+ Here is the caller graph for this function:

Member Data Documentation

◆ _statService

StatServices* LCE_StatFH::_statService
private

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

Generated for Nemo v2.3.56 by  doxygen 1.9.0 -- Nemo is hosted on  Download Nemo

Locations of visitors to this page
Catalogued on GSR