X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=sequence.cpp;h=e9487c519e0d3e0378266eb537d15e28979546dc;hb=a6c698b20eda3671d22466ab6b98b36331a30804;hp=2f167c52bb225edce6a31cbc623b8bcfd3d4c61c;hpb=cdcf99b7760701e6869ca8e4e6e91c8e8c4ae186;p=mothur.git diff --git a/sequence.cpp b/sequence.cpp index 2f167c5..e9487c5 100644 --- a/sequence.cpp +++ b/sequence.cpp @@ -13,16 +13,22 @@ using namespace std; /***********************************************************************/ -Sequence::Sequence() {} +Sequence::Sequence(){ + initialize(); +} /***********************************************************************/ Sequence::Sequence(string newName, string sequence) { + + initialize(); name = newName; if(sequence.find_first_of('-') != string::npos) { setAligned(sequence); + isAligned = 1; } setUnaligned(sequence); + } //******************************************************************************************************************** @@ -57,22 +63,22 @@ Sequence::Sequence(ifstream& fastaFile){ //******************************************************************************************************************** -string Sequence::convert2ints() { +void Sequence::initialize(){ - if(unaligned == "") { /* need to throw an error */ } + name = ""; + unaligned = ""; + aligned = ""; + pairwise = ""; - string processed; + numBases = 0; + alignmentLength = 0; + isAligned = 0; + startPos = -1; + endPos = -1; + longHomoPolymer = -1; + ambigBases = -1; - for(int i=0;i=0;i--){ - if(sequence[i] == '-'){ - sequence[i] = '.'; + for(int i=alignmentLength-1;i>=0;i--){ + if(aligned[i] == '-'){ + aligned[i] = '.'; } else{ break; } } } - aligned = sequence; + } //******************************************************************************************************************** @@ -133,6 +142,25 @@ void Sequence::setPairwise(string sequence){ //******************************************************************************************************************** +string Sequence::convert2ints() { + + if(unaligned == "") { /* need to throw an error */ } + + string processed; + + for(int i=0;i aligned.length()) - return unaligned.length(); - return aligned.length(); +int Sequence::getNumBases(){ + return numBases; } //******************************************************************************************************************** void Sequence::printSequence(ostream& out){ - string toPrint = unaligned; - if(aligned.length() > unaligned.length()) - toPrint = aligned; - out << ">" << name << "\n" << toPrint << "\n"; + + out << ">" << name << endl; + if(isAligned){ + out << aligned << endl; + } + else{ + out << unaligned << endl; + } } //******************************************************************************************************************** -int Sequence::getUnalignLength(){ - return unaligned.length(); +int Sequence::getAlignLength(){ + return alignmentLength; } //******************************************************************************************************************** -int Sequence::getAlignLength(){ - return aligned.length(); +int Sequence::getAmbigBases(){ + if(ambigBases == -1){ + ambigBases = 0; + for(int j=0;j longHomoPolymer){ longHomoPolymer = homoPolymer; } + homoPolymer = 1; + } + } + if(homoPolymer > longHomoPolymer){ longHomoPolymer = homoPolymer; } + } + return longHomoPolymer; +} + +//******************************************************************************************************************** + +int Sequence::getStartPos(){ + if(endPos == -1){ + for(int j = 0; j < alignmentLength; j++) { + if(aligned[j] != '.'){ + startPos = j; + break; + } + } + } + return startPos; } //******************************************************************************************************************** +int Sequence::getEndPos(){ + if(endPos == -1){ + for(int j=alignmentLength-1;j>=0;j--){ + if(aligned[j] != '.'){ + endPos = j; + break; + } + } + } + return endPos; +} +//******************************************************************************************************************** + +bool Sequence::getIsAligned(){ + return isAligned; +} +//********************************************************************************************************************