X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=sequencedb.cpp;h=e798ee14ac70837e795a7be3191a14f68788c234;hp=bc8523aa78b5d217fd5cfd12c8bade6bbb630721;hb=b206f634aae1b4ce13978d203247fb64757d5482;hpb=cd37904452dc95b183ff313ff05720c562902487 diff --git a/sequencedb.cpp b/sequencedb.cpp index bc8523a..e798ee1 100644 --- a/sequencedb.cpp +++ b/sequencedb.cpp @@ -15,7 +15,7 @@ /***********************************************************************/ -SequenceDB::SequenceDB() {} +SequenceDB::SequenceDB() { m = MothurOut::getInstance(); length = 0; samelength = true; } /***********************************************************************/ //the clear function free's the memory SequenceDB::~SequenceDB() { clear(); } @@ -24,44 +24,35 @@ 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); } } @@ -82,11 +73,7 @@ string SequenceDB::readName(ifstream& in) { 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); } } @@ -111,15 +98,14 @@ string SequenceDB::readSequence(ifstream& in) { 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); } } @@ -134,14 +120,13 @@ int SequenceDB::getNumSeqs() { 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); } } @@ -150,14 +135,13 @@ void SequenceDB::set(int index, string newUnaligned) { 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); } } @@ -175,11 +159,7 @@ void SequenceDB::resize(int newSize) { 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); } } @@ -191,11 +171,7 @@ void SequenceDB::clear() { 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); } } @@ -215,11 +191,7 @@ void SequenceDB::print(ostream& out) { } } 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); } } @@ -228,14 +200,13 @@ void SequenceDB::print(ostream& out) { 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); } }