*/
#include "command.hpp"
+#include "groupmap.h"
-
-/**********************************************************/
-struct CommonHeader {
- unsigned int magicNumber;
- string version;
- unsigned long long indexOffset;
- unsigned int indexLength;
- unsigned int numReads;
- unsigned short headerLength;
- unsigned short keyLength;
- unsigned short numFlowsPerRead;
- 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 {
- unsigned short headerLength;
- unsigned short nameLength;
- unsigned int numBases;
- unsigned short clipQualLeft;
- unsigned short clipQualRight;
- unsigned short clipAdapterLeft;
- unsigned short clipAdapterRight;
- 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<unsigned short> flowgram;
- vector<unsigned int> flowIndex;
- string bases;
- vector<unsigned int> qualScores;
-
- seqRead() { }
- ~seqRead() { }
-};
/**********************************************************/
class SffInfoCommand : public Command {
void help() { m->mothurOut(getHelpString()); }
private:
- string sffFilename, sfftxtFilename, outputDir, accnosName, currentFileName, oligosfile, noMatchFile;
- vector<string> filenames, outputNames, accnosFileNames, oligosFileNames;
- bool abort, fasta, qual, trim, flow, sfftxt, hasAccnos, hasOligos;
+ string sffFilename, sfftxtFilename, outputDir, accnosName, currentFileName, oligosfile, noMatchFile, groupfile;
+ vector<string> filenames, outputNames, accnosFileNames, oligosFileNames, groupFileNames;
+ bool abort, fasta, qual, trim, flow, sfftxt, hasAccnos, hasOligos, hasGroup;
int mycount, split, numFPrimers, numLinkers, numSpacers, pdiffs, bdiffs, ldiffs, sdiffs, tdiffs, numNoMatch;
set<string> seqNames;
map<string, int> barcodes;
map<string, int> primers;
+ GroupMap* groupMap;
vector<string> linker, spacer, primerNameVector, barcodeNameVector, revPrimer;
vector<vector<int> > numSplitReads;
- vector<vector<map<string, ofstream*> > > filehandles;
- vector<vector<map<string, ofstream*> > > filehandlesHeaders;
+ vector<vector<string> > filehandles;
+ vector<vector<string> > filehandlesHeaders;
//extract sff file functions
int extractSffInfo(string, string, string);
bool readSeqData(ifstream&, seqRead&, int, Header&);
int decodeName(string&, string&, string&, string);
bool readOligos(string oligosFile);
+ bool readGroup(string oligosFile);
int printCommonHeader(ofstream&, CommonHeader&);
int printHeader(ofstream&, Header&);
bool sanityCheck(Header&, seqRead&);
int adjustCommonHeader(CommonHeader);
int findGroup(Header header, seqRead read, int& barcode, int& primer);
+ int findGroup(Header header, seqRead read, int& barcode, int& primer, string);
string reverseOligo(string oligo);
//parsesfftxt file functions