X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flowdata.cpp;h=f4605b6dbe1613fdb3e1a6beb1929a3585ff5fe7;hb=e0c50fc42e953dbe258feb9bc1d1d7dc10fafff0;hp=1420f84b992a54ed6dfb6d3a28d8452a083691de;hpb=0caf3fbabaa3ece404f8ce77f4c883dc5b1bf1dc;p=mothur.git diff --git a/flowdata.cpp b/flowdata.cpp index 1420f84..f4605b6 100644 --- a/flowdata.cpp +++ b/flowdata.cpp @@ -42,14 +42,15 @@ FlowData::FlowData(int numFlows, float signal, float noise, int maxHomoP, string bool FlowData::getNext(ifstream& flowFile){ try { - flowFile >> seqName >> endFlow; - //cout << "in Flowdata " + seqName << endl; - for(int i=0;i> flowData[i]; } - //cout << "in Flowdata read " << seqName + " done" << endl; - updateEndFlow(); - translateFlow(); - - m->gobble(flowFile); + seqName = getSequenceName(flowFile); + flowFile >> endFlow; + if (!m->control_pressed) { + for(int i=0;i> flowData[i]; } + updateEndFlow(); + translateFlow(); + m->gobble(flowFile); + } + if(flowFile){ return 1; } else { return 0; } } @@ -59,22 +60,44 @@ bool FlowData::getNext(ifstream& flowFile){ } } +//******************************************************************************************************************** +string FlowData::getSequenceName(ifstream& flowFile) { + try { + string name = ""; + + flowFile >> name; + + if (name.length() != 0) { + for (int i = 0; i < name.length(); i++) { + if (name[i] == ':') { name[i] = '_'; m->changedSeqNames = true; } + } + }else{ m->mothurOut("Error in reading your flowfile, at position " + toString(flowFile.tellg()) + ". Blank name."); m->mothurOutEndLine(); m->control_pressed = true; } + + return name; + } + catch(exception& e) { + m->errorOut(e, "FlowData", "getSequenceName"); + exit(1); + } +} //********************************************************************************************************************** void FlowData::updateEndFlow(){ try{ + if (baseFlow.length() > 4) { return; } + //int currLength = 0; float maxIntensity = (float) maxHomoP + 0.49; int deadSpot = 0; - + while(deadSpot < endFlow){ int signal = 0; int noise = 0; - for(int i=0;i<4;i++){ + for(int i=0;i signalIntensity){ signal++; @@ -89,7 +112,7 @@ void FlowData::updateEndFlow(){ break; } - deadSpot += 4; + deadSpot += baseFlow.length(); } endFlow = deadSpot; @@ -108,13 +131,13 @@ void FlowData::translateFlow(){ sequence = ""; for(int i=0;i 4){ sequence = sequence.substr(4); }