X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=sffinfocommand.h;h=d98edbd3e04f0213a24ed51471d09aab1b74d46a;hb=3b137af694d322b7162e97275c070c41b42597a3;hp=6e9d87c30d0898e0b6027bb5d3e4a22bfaa388bd;hpb=df1ea5f2151b9334c471bf4310f78f51bba098be;p=mothur.git diff --git a/sffinfocommand.h b/sffinfocommand.h index 6e9d87c..d98edbd 100644 --- a/sffinfocommand.h +++ b/sffinfocommand.h @@ -12,22 +12,23 @@ #include "command.hpp" -#define SFF_MAGIC 0x2e736666 /* ".sff" */ -#define SFF_VERSION "\0\0\0\1" /**********************************************************/ struct CommonHeader { unsigned int magicNumber; - char* version; + string version; unsigned long int indexOffset; unsigned int indexLength; unsigned int numReads; unsigned short headerLength; unsigned short keyLength; unsigned short numFlowsPerRead; - char flogramFormatCode; - char* flowChars; //length depends on number flow reads - char* keySequence; //length depends on key length + int flogramFormatCode; + string flowChars; //length depends on number flow reads + string keySequence; //length depends on key length + + CommonHeader(){ magicNumber=0; indexOffset=0; indexLength=0; numReads=0; headerLength=0; keyLength=0; numFlowsPerRead=0; flogramFormatCode='s'; } + ~CommonHeader() { } }; /**********************************************************/ struct Header { @@ -38,14 +39,23 @@ struct Header { unsigned short clipQualRight; unsigned short clipAdapterLeft; unsigned short clipAdapterRight; - char* name; //length depends on nameLength + string name; //length depends on nameLength + string timestamp; + string region; + string xy; + + Header() { headerLength=0; nameLength=0; numBases=0; clipQualLeft=0; clipQualRight=0; clipAdapterLeft=0; clipAdapterRight=0; } + ~Header() { } }; /**********************************************************/ struct seqRead { vector flowgram; vector flowIndex; - char* bases; + string bases; vector qualScores; + + seqRead() { } + ~seqRead() { } }; /**********************************************************/ @@ -53,24 +63,43 @@ class SffInfoCommand : public Command { public: SffInfoCommand(string); + SffInfoCommand(); ~SffInfoCommand(); + vector getRequiredParameters(); + vector getValidParameters(); + vector getRequiredFiles(); + map > getOutputFiles() { return outputTypes; } int execute(); void help(); private: - string sffFilename, outputDir; - vector filenames, outputNames; - bool abort; + string sffFilename, sfftxtFilename, outputDir, accnosName; + vector filenames, outputNames, accnosFileNames; + bool abort, fasta, qual, trim, flow, sfftxt, hasAccnos; + set seqNames; + map > outputTypes; + //extract sff file functions int extractSffInfo(string, string); - int readCommonHeader(ifstream&, CommonHeader*&); - int readHeader(ifstream&, Header*&); - int readSeqData(ifstream&, seqRead*&, int, int); + int readCommonHeader(ifstream&, CommonHeader&); + int readHeader(ifstream&, Header&); + int readSeqData(ifstream&, seqRead&, int, int); + int decodeName(string&, string&, string&, string); + + int printCommonHeader(ofstream&, CommonHeader&); + int printHeader(ofstream&, Header&); + int printSffTxtSeqData(ofstream&, seqRead&, Header&); + int printFlowSeqData(ofstream&, seqRead&, Header&); + int printFastaSeqData(ofstream&, seqRead&, Header&); + int printQualSeqData(ofstream&, seqRead&, Header&); + int readAccnosFile(string); + int parseSffTxt(); - int printCommonHeader(ofstream&, CommonHeader*, bool); //bool is debug mode - int printHeader(ofstream&, Header*, bool); - int printSeqData(ofstream&, seqRead*, bool); - + //parsesfftxt file functions + int parseHeaderLineToInt(ifstream&); + vector parseHeaderLineToFloatVector(ifstream&, int); + vector parseHeaderLineToIntVector(ifstream&, int); + string parseHeaderLineToString(ifstream&); }; /**********************************************************/