/***********************************************************************/
-SequenceDB::SequenceDB() {}
+SequenceDB::SequenceDB() { m = MothurOut::getInstance(); length = 0; samelength = true; }
/***********************************************************************/
//the clear function free's the memory
SequenceDB::~SequenceDB() { clear(); }
SequenceDB::SequenceDB(int newSize) {
data.resize(newSize, Sequence());
+ length = 0; samelength = true;
}
/***********************************************************************/
SequenceDB::SequenceDB(ifstream& filehandle) {
try{
- string name, sequence, line;
- sequence = "";
- int c;
- string temp;
-
-
+ length = 0; samelength = true;
+
//read through file
- while ((c = filehandle.get()) != EOF) {
- name = ""; sequence = "";
- //is this a name
- if (c == '>') {
- name = readName(filehandle);
- sequence = readSequence(filehandle);
- }else { cout << "Error fasta in your file. Please correct." << endl; }
-
+ while (!filehandle.eof()) {
//input sequence info into sequencedb
- Sequence newSequence(name, sequence);
- data.push_back(newSequence);
+ Sequence newSequence(filehandle);
+
+ if (newSequence.getName() != "") {
+ if (length == 0) { length = newSequence.getAligned().length(); }
+ if (length != newSequence.getAligned().length()) { samelength = false; }
+ data.push_back(newSequence);
+ }
//takes care of white space
- gobble(filehandle);
+ m->gobble(filehandle);
}
filehandle.close();
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function SequenceDB. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the SequenceDB class function SequenceDB. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "SequenceDB", "SequenceDB");
exit(1);
}
}
return name;
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function readName. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the SequenceDB class function readName. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "SequenceDB", "readName");
exit(1);
}
}
break;
}else { sequence += line; }
}
-
+
+ if (length == 0) { length = sequence.length(); }
+ if (length != sequence.length()) { samelength = false; }
+
return sequence;
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function readSequence. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the SequenceDB class function readSequence. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "SequenceDB", "readSequence");
exit(1);
}
}
void SequenceDB::set(int index, string newUnaligned) {
try {
+ if (length == 0) { length = newUnaligned.length(); }
+ if (length != newUnaligned.length()) { samelength = false; }
+
data[index] = Sequence(data[index].getName(), newUnaligned);
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function set. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the SequenceDB class function set. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "SequenceDB", "set");
exit(1);
}
}
void SequenceDB::set(int index, Sequence newSeq) {
try {
+ if (length == 0) { length = newSeq.getAligned().length(); }
+ if (length != newSeq.getAligned().length()) { samelength = false; }
+
data[index] = newSeq;
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function set. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the SequenceDB class function set. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "SequenceDB", "set");
exit(1);
}
}
data.resize(newSize);
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function resize. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the SequenceDB class function resize. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "SequenceDB", "resize");
exit(1);
}
}
data.clear();
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function clear. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the SequenceDB class function clear. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "SequenceDB", "clear");
exit(1);
}
}
}
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the SequenceDB class function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "SequenceDB", "print");
exit(1);
}
}
void SequenceDB::push_back(Sequence newSequence) {
try {
+ if (length == 0) { length = newSequence.getAligned().length(); }
+ if (length != newSequence.getAligned().length()) { samelength = false; }
+
data.push_back(newSequence);
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function add. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the SequenceDB class function add. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ m->errorOut(e, "SequenceDB", "push_back");
exit(1);
}
}