X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=filterseqscommand.cpp;h=e8c96b3a42b88b6dbd4a003fe3a2454d2bbb4cb3;hb=ab750bdf95b4eb92186e4ce333edbd77396cda23;hp=a6bd54982e9ca509463f5d40822d1ae232e83bb1;hpb=5b7ac70116137b52dd7884b76c5bca660a5fea38;p=mothur.git diff --git a/filterseqscommand.cpp b/filterseqscommand.cpp index a6bd549..e8c96b3 100644 --- a/filterseqscommand.cpp +++ b/filterseqscommand.cpp @@ -14,18 +14,16 @@ FilterSeqsCommand::FilterSeqsCommand(){ globaldata = GlobalData::getInstance(); - if(globaldata->getFastaFile() != "") { readSeqs = new ReadFasta(globaldata->inputFileName); } - else if(globaldata->getNexusFile() != "") { readSeqs = new ReadNexus(globaldata->inputFileName); } - else if(globaldata->getClustalFile() != "") { readSeqs = new ReadClustal(globaldata->inputFileName); } - else if(globaldata->getPhylipFile() != "") { readSeqs = new ReadPhylip(globaldata->inputFileName); } - - readSeqs->read(); - db = readSeqs->getDB(); - numSeqs = db->size(); - - alignmentLength = db->get(0).getAlignLength(); - - filter = string(alignmentLength, '1'); + if(globaldata->getFastaFile() == "") { cout << "You must enter a fasta formatted file" << endl; } + trump = globaldata->getTrump()[0]; +// vertical = +// readSeqs->read(); +// db = readSeqs->getDB(); +// numSeqs = db->size(); +// +// alignmentLength = db->get(0).getAlignLength(); +// +// filter = string(alignmentLength, '1'); } /**************************************************************************************/ @@ -46,87 +44,98 @@ void FilterSeqsCommand::doHard() { else{ filter = hardFilter; } - + } /**************************************************************************************/ -void FilterSeqsCommand::doTrump() { +void FilterSeqsCommand::doTrump(Sequence seq) { - char trump = globaldata->getTrump()[0]; - for(int i = 0; i < numSeqs; i++) { - string curAligned = db->get(i).getAligned();; - - for(int j = 0; j < alignmentLength; j++) { - if(curAligned[j] == trump){ - filter[j] = '0'; - } - } - } +// for(int i = 0; i < numSeqs; i++) { +// string curAligned = db->get(i).getAligned();; +// +// for(int j = 0; j < alignmentLength; j++) { +// if(curAligned[j] == trump){ +// filter[j] = '0'; +// } +// } +// } } /**************************************************************************************/ -void FilterSeqsCommand::doVertical() { - - vector counts(alignmentLength, 0); - - for(int i = 0; i < numSeqs; i++) { - string curAligned = db->get(i).getAligned();; - - for(int j = 0; j < alignmentLength; j++) { - if(curAligned[j] == '-' || curAligned[j] == '.'){ - counts[j]++; - } - } - } - for(int i=0;i counts(alignmentLength, 0); +// +// for(int i = 0; i < numSeqs; i++) { +// string curAligned = db->get(i).getAligned();; +// +// for(int j = 0; j < alignmentLength; j++) { +// if(curAligned[j] == '-' || curAligned[j] == '.'){ +// counts[j]++; +// } +// } +// } +// for(int i=0;igetSoft().c_str()) / 100.0; - - vector a(alignmentLength, 0); - vector t(alignmentLength, 0); - vector g(alignmentLength, 0); - vector c(alignmentLength, 0); - vector x(alignmentLength, 0); - - for(int i=0;iget(i).getAligned();; - - for(int j=0;jgetSoft().c_str()) / 100.0; +// +// vector a(alignmentLength, 0); +// vector t(alignmentLength, 0); +// vector g(alignmentLength, 0); +// vector c(alignmentLength, 0); +// vector x(alignmentLength, 0); +// +// for(int i=0;iget(i).getAligned();; +// +// for(int j=0;jgetHard().compare("") != 0) { doHard(); } // has to be applied first! - if(globaldata->getTrump().compare("") != 0) { doTrump(); } - if(globaldata->getVertical() == "T") { doVertical(); } - if(globaldata->getSoft().compare("") != 0) { doSoft(); } - + ifstream inFASTA; + openInputFile(globaldata->getFastaFile(), inFASTA); + + Sequence testSeq(inFASTA); + alignmentLength = testSeq.getAlignLength(); + inFASTA.seekg(0); + int numSeqs = 0; + + if(globaldata->getHard().compare("") != 0) { doHard(); } + else { filter = string(alignmentLength, '1'); } + while(!inFASTA.eof()){ + Sequence seq(inFASTA); + if(globaldata->getTrump().compare("") != 0) { doTrump(seq); } + if(isTrue(globaldata->getVertical()) == 1) { doVertical(seq); } +// if(globaldata->getSoft().compare("") != 0) { doSoft(seq); } + numSeqs++; + } + ofstream outfile; string filterFile = getRootName(globaldata->inputFileName) + "filter"; openOutputFile(filterFile, outfile); @@ -137,17 +146,17 @@ int FilterSeqsCommand::execute() { string filteredFasta = getRootName(globaldata->inputFileName) + "filter.fasta"; openOutputFile(filteredFasta, outfile); - for(int i=0;iget(i).getAligned(); - outfile << '>' << db->get(i).getName() << endl; - for(int j=0;jget(i).getAligned(); +// outfile << '>' << db->get(i).getName() << endl; +// for(int j=0;j