*
*/
-using namespace std;
-
#include "sequence.hpp"
/***********************************************************************/
name = newName;
if(sequence.find_first_of('-') != string::npos) {
setAligned(sequence);
- isAligned = 1;
}
setUnaligned(sequence);
//********************************************************************************************************************
Sequence::Sequence(ifstream& fastaFile){
+ initialize();
string accession; // provided a file handle to a fasta-formatted sequence file, read in the next
fastaFile >> accession; // accession number and sequence we find...
isAligned = 0;
startPos = -1;
endPos = -1;
- longHomoPolymer = 0;
- ambigBases = 0;
+ longHomoPolymer = -1;
+ ambigBases = -1;
}
}
}
}
-
+ isAligned = 1;
}
//********************************************************************************************************************
int Sequence::getAmbigBases(){
if(ambigBases == -1){
-
+ ambigBases = 0;
for(int j=0;j<numBases;j++){
if(unaligned[j] != 'A' && unaligned[j] != 'T' && unaligned[j] != 'G' && unaligned[j] != 'C'){
ambigBases++;
//********************************************************************************************************************
int Sequence::getLongHomoPolymer(){
- if(longHomoPolymer == 0){
-
+ if(longHomoPolymer == -1){
+ longHomoPolymer = 1;
int homoPolymer = 1;
for(int j=1;j<numBases;j++){
if(unaligned[j] == unaligned[j-1]){
if(endPos == -1){
for(int j = 0; j < alignmentLength; j++) {
if(aligned[j] != '.'){
- startPos = j;
+ startPos = j + 1;
break;
}
}
- }
+ }
+ if(isAligned == 0){ startPos = 1; }
+
return startPos;
}
if(endPos == -1){
for(int j=alignmentLength-1;j>=0;j--){
if(aligned[j] != '.'){
- endPos = j;
+ endPos = j + 1;
break;
}
}
}
+ if(isAligned == 0){ endPos = numBases; }
+
return endPos;
}
}
//********************************************************************************************************************
+
+void Sequence::reverseComplement(){
+
+ string temp;
+ for(int i=numBases-1;i>=0;i--){
+ if(unaligned[i] == 'A') { temp += 'T'; }
+ else if(unaligned[i] == 'T'){ temp += 'A'; }
+ else if(unaligned[i] == 'G'){ temp += 'C'; }
+ else if(unaligned[i] == 'C'){ temp += 'G'; }
+ else { temp += 'N'; }
+ }
+ unaligned = temp;
+
+}
+
+//********************************************************************************************************************