18
|
1 #ifndef INPUT_FILE_PARSER_HPP
|
|
2 #define INPUT_FILE_PARSER_HPP
|
|
3
|
|
4 #include <string>
|
|
5 #include <vector>
|
|
6 #include <map>
|
|
7 #include "genomicInterval.hpp"
|
|
8
|
|
9 typedef vector<Interval *> IntervalsType;
|
|
10 typedef map<string, IntervalsType *> SortedIntervalsTypes;
|
|
11 typedef map<string, unsigned int> CounterType;
|
|
12 typedef pair<Interval *, unsigned int> NumberIntervalType;
|
|
13
|
|
14 static bool operator<(const NumberIntervalType &i1, const NumberIntervalType &i2) {
|
|
15 if (i1.first < i2.first) return true;
|
|
16 return ((i1.first == i2.first) && (i1.second < i2.second));
|
|
17 }
|
|
18
|
|
19 class InputFileParser {
|
|
20
|
|
21 private:
|
|
22 SortedIntervalsTypes sortedIntervals;
|
|
23 CounterType counter;
|
|
24
|
|
25 void addToList(GenomicInterval &genomicInterval);
|
|
26 void writeTmpFile(string &chromosome);
|
|
27 void syncFiles();
|
|
28 string getTmpName(const string &chromosome, unsigned int i);
|
|
29 string getTmpName(const string &chromosome);
|
|
30 void merge();
|
|
31 void merge(const string &chromosome, ofstream &outputFile);
|
|
32
|
|
33 public:
|
|
34 string inputFileName;
|
|
35 string outputFileName;
|
|
36 string outputFilePrefix;
|
|
37
|
|
38 InputFileParser(string inputFileName, string outputFileName);
|
|
39
|
|
40 void parse();
|
|
41
|
|
42 };
|
|
43
|
|
44 #endif
|
|
45
|