1 // $Id: sumfilehandler.h,v 1.7 2011/03/07 06:08:47 bobgian Exp $ 2 3 /* 4 Copyright 2005 Peter Beerli, Mary Kuhner, Jon Yamato and Joseph Felsenstein 5 6 This software is distributed free of charge for non-commercial use 7 and is copyrighted. Of course, we do not guarantee that the software 8 works, and are not responsible for any damage you may cause or have. 9 */ 10 11 // The Sumfile Handler is here to handle reading and writing of summary files. 12 // Earlier versions of the functions here can be found in chainmanager directly, 13 // since it was pulled out of there due to this sort of thing taking up too 14 // much space. 15 16 // In general, it is owned by and called from the chainmanager object, and 17 // modifies (by reference) other chainmanager member variables when called 18 // upon to read a summary file, and reads (by reference) other chainmanager 19 // member variables when called upon to write a summary file. 20 21 #ifndef SUMFILEHANDLER_H 22 #define SUMFILEHANDLER_H 23 24 #include <fstream> 25 #include "vectorx.h" 26 27 class ForceParameters; 28 class ChainOut; 29 class ChainPack; 30 class CollectionManager; 31 32 class SumFileHandler 33 { 34 private: 35 std::ifstream m_sumin; // use when reading from a summary file 36 std::ofstream m_sumout; // use when writing to a summary file 37 38 long int m_lastRegion; 39 long int m_lastReplicate; 40 long int m_lastChain; 41 long int m_lastRegionChainSum; 42 long int m_lastReplicateChainSum; 43 long int m_lastReplicateSummary; 44 bool m_regionSummary; 45 46 public: 47 SumFileHandler(); ~SumFileHandler()48 ~SumFileHandler() {}; 49 SumFileHandler(const SumFileHandler& src); // undefined 50 SumFileHandler& operator=(const SumFileHandler& src); // undefined 51 GetLastRegion()52 long int GetLastRegion() {return m_lastRegion;}; GetLastReplicate()53 long int GetLastReplicate() {return m_lastReplicate;}; GetLastChain()54 long int GetLastChain() {return m_lastChain;}; GetLastRegionChainSum()55 long int GetLastRegionChainSum() {return m_lastRegionChainSum;}; GetLastReplicateChainSum()56 long int GetLastReplicateChainSum() {return m_lastReplicateChainSum;}; GetLastReplicateSummary()57 long int GetLastReplicateSummary() {return m_lastReplicateSummary;}; GetRegionSummary()58 bool GetRegionSummary() {return m_regionSummary;}; 59 60 void ReadInChainPack (ChainPack& chainpack); 61 void ReadInChainSum (ChainPack& chainpack, 62 CollectionManager& collectionmanager, long int numchains); 63 void SkipComments (); 64 void ReadInChainOut (ChainOut &c ); 65 void ReadInSumFile (ChainPack& chainpack, 66 CollectionManager& collectionmanager, long int numchains); 67 void ReadInReplicateSummary (ChainPack& chainpack); 68 void ReadInRegionSummary (ChainPack& chainpack); 69 bool ReadInVec1D (DoubleVec1d& vd, string endtag ); 70 bool ReadInVec1D (LongVec1d& vd, string endtag ); 71 void ReadInEndRegion (ChainPack& chainpack); 72 void ReadInRecover (ChainPack& chainpack); 73 // public only so TreeSummary::ReadInTreeSummary() can use, change if merge 74 void ReadInForceParameters (ForceParameters& fp ); 75 static void HandleSumOutFileFormatError( string callingfxn ); 76 static void ReadInCheckFileFormat( string callingfxn, string expectedtag, string readtag ); 77 78 void WriteSumFileStart (); 79 void WriteSumFileEnd (const ChainPack& chainpack); 80 void WriteChainSumStart (long int whichregion, long int whichreplicate, 81 const CollectionManager& collectionmanager); 82 void WriteChainSumEnd (const CollectionManager& collectionmanager); 83 void WriteChainPack (ChainOut& chainout,const ChainPack& chainpack); 84 void WriteLastChain (const ChainPack& chainpack); 85 void WriteRegionSummary (ForceParameters& fp, double maxlike); 86 void WriteReplicateSummary (ForceParameters& fp, double maxlike, 87 const ChainPack& chainpack); 88 void WriteWhatWasRead (bool recoversumfile, 89 long int recover_region, 90 long int recover_replicate, 91 long int recover_chaintype, 92 long int recover_chain, 93 bool recover_redochain, 94 bool recover_redomaximization, 95 long int nregions, 96 long int nreplicates, 97 const ChainPack& chainpack, 98 const CollectionManager& collectionmanager); 99 static void WriteVec1D ( std::ofstream& out, vector<double>& vd ); 100 static void WriteVec1D ( std::ofstream& out, vector<long int>& vd ); 101 void CloseSumOut(); 102 103 }; 104 105 #endif // SUMFILEHANDLER_H 106 107 //____________________________________________________________________________________ 108