]> git.donarmstrong.com Git - mothur.git/blob - sffinfocommand.h
6e9d87c30d0898e0b6027bb5d3e4a22bfaa388bd
[mothur.git] / sffinfocommand.h
1 #ifndef SFFINFOCOMMAND_H
2 #define SFFINFOCOMMAND_H
3
4 /*
5  *  sffinfocommand.h
6  *  Mothur
7  *
8  *  Created by westcott on 7/7/10.
9  *  Copyright 2010 Schloss Lab. All rights reserved.
10  *
11  */
12
13 #include "command.hpp"
14
15 #define SFF_MAGIC   0x2e736666 /* ".sff" */
16 #define SFF_VERSION "\0\0\0\1"
17
18 /**********************************************************/
19 struct CommonHeader {
20         unsigned int magicNumber;
21         char* version;
22         unsigned long int indexOffset;
23         unsigned int indexLength;
24         unsigned int numReads;
25         unsigned short headerLength;
26         unsigned short keyLength;
27         unsigned short numFlowsPerRead;
28         char flogramFormatCode;
29         char* flowChars; //length depends on number flow reads
30         char* keySequence; //length depends on key length
31 };
32 /**********************************************************/
33 struct Header {
34         unsigned short headerLength;
35         unsigned short nameLength;
36         unsigned int numBases;
37         unsigned short clipQualLeft;
38         unsigned short clipQualRight;
39         unsigned short clipAdapterLeft;
40         unsigned short clipAdapterRight;
41         char* name; //length depends on nameLength
42 };
43 /**********************************************************/
44 struct seqRead {
45         vector<unsigned short> flowgram;
46         vector<unsigned int> flowIndex;
47         char* bases;
48         vector<unsigned int> qualScores;
49 };
50 /**********************************************************/
51
52 class SffInfoCommand : public Command {
53         
54 public:
55         SffInfoCommand(string);
56         ~SffInfoCommand();
57         int execute();
58         void help();
59         
60 private:
61         string sffFilename, outputDir;
62         vector<string> filenames, outputNames;
63         bool abort;
64         
65         int extractSffInfo(string, string);
66         int readCommonHeader(ifstream&, CommonHeader*&);
67         int readHeader(ifstream&, Header*&);
68         int readSeqData(ifstream&, seqRead*&, int, int);
69         
70         int printCommonHeader(ofstream&, CommonHeader*, bool); //bool is debug mode
71         int printHeader(ofstream&, Header*, bool);
72         int printSeqData(ofstream&, seqRead*, bool);
73                 
74 };
75
76 /**********************************************************/
77  
78 #endif
79
80