1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
#ifndef FILEOUTPUT_H
#define FILEOUTPUT_H
#include "mothurout.h"
#include "utils.hpp"
/***********************************************************************/
class FileOutput {
public:
FileOutput(string n){ m = MothurOut::getInstance(); fileHeader = ""; filename = n; firstLabel = true; }
virtual ~FileOutput(){ printFile(); }
virtual void setLabelName(string) {}
virtual void updateOutput(int, vector<double>) {}
virtual void resetFile() { firstLabel = false; }
virtual void setLabelName(string, vector<string>) {}
virtual void updateOutput(vector<double>) {}
protected:
MothurOut* m;
Utils util;
string filename, fileHeader;
bool firstLabel;
map<int, int> nseqsToRow; //maps number of seqs sampled to row in results
vector< vector<double> > results; //results[0] is the first row in output file. can contain multiple labels is 0.01 0.03
/*
numsampled 0.01 0.03
1.000000 1.000000 1.00000 - results[0]
100.000000 47.000000 30.00000 - results[1]
....
*/
void printFile();
};
/***********************************************************************/
class ThreeColumnFile : public FileOutput {
public:
ThreeColumnFile(string n) : FileOutput(n) { }
~ThreeColumnFile() = default;
void setLabelName(string);
void updateOutput(int, vector<double>);
private:
};
/***********************************************************************/
class OneColumnFile : public FileOutput {
public:
OneColumnFile(string n) : FileOutput(n) { }
~OneColumnFile() = default;
void setLabelName(string);
void updateOutput(int, vector<double>);
private:
};
/***********************************************************************/
class SharedOneColumnFile : public FileOutput {
public:
SharedOneColumnFile(string n) : FileOutput(n) {}
~SharedOneColumnFile() = default;
void setLabelName(string);
void updateOutput(int, vector<double>);
private:
};
/***********************************************************************/
class SharedThreeColumnFile : public FileOutput {
public:
SharedThreeColumnFile(string n, string groups) : FileOutput(n), groupLabel(groups), numGroup(1) { }
~SharedThreeColumnFile() = default;
void setLabelName(string);
void updateOutput(int, vector<double>);
private:
int numGroup;
string groupLabel;
};
/***********************************************************************/
//used by parsimony, unifrac.weighted and unifrac.unweighted
class ColumnFile : public FileOutput {
public:
ColumnFile(string n, string i) : FileOutput(n) {}
~ColumnFile() = default;
void setLabelName(string, vector<string>);
void updateOutput(vector<double>);
private:
};
/***********************************************************************/
#endif
|