]> git.donarmstrong.com Git - mothur.git/blobdiff - sequencedb.cpp
added modify names parameter to set.dir
[mothur.git] / sequencedb.cpp
index b3da429fc57c9da7081640876ee9fbedda808e25..e798ee14ac70837e795a7be3191a14f68788c234 100644 (file)
@@ -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,29 +24,35 @@ SequenceDB::~SequenceDB() { clear(); }
 
 SequenceDB::SequenceDB(int newSize) {
        data.resize(newSize, Sequence());
+       length = 0; samelength = true;
 }
 
 /***********************************************************************/
 
 SequenceDB::SequenceDB(ifstream& filehandle) {
        try{
+               length = 0; samelength = true;
                                
                //read through file
                while (!filehandle.eof()) {
                        //input sequence info into sequencedb
                        Sequence newSequence(filehandle);
                        
-                       if (newSequence.getName() != "") {   data.push_back(newSequence);  }
+                       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) {
-               errorOut(e, "SequenceDB", "SequenceDB");
+               m->errorOut(e, "SequenceDB", "SequenceDB");
                exit(1);
        }
 }
@@ -67,7 +73,7 @@ string SequenceDB::readName(ifstream& in) {
                return name;
        }
        catch(exception& e) {
-               errorOut(e, "SequenceDB", "readName");
+               m->errorOut(e, "SequenceDB", "readName");
                exit(1);
        }
 }
@@ -92,11 +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) {
-               errorOut(e, "SequenceDB", "readSequence");
+               m->errorOut(e, "SequenceDB", "readSequence");
                exit(1);
        }
 }
@@ -111,10 +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) {
-               errorOut(e, "SequenceDB", "set");
+               m->errorOut(e, "SequenceDB", "set");
                exit(1);
        }
 }
@@ -123,10 +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) {
-               errorOut(e, "SequenceDB", "set");
+               m->errorOut(e, "SequenceDB", "set");
                exit(1);
        }
 }
@@ -144,7 +159,7 @@ void SequenceDB::resize(int newSize) {
                data.resize(newSize);
        }
        catch(exception& e) {
-               errorOut(e, "SequenceDB", "resize");
+               m->errorOut(e, "SequenceDB", "resize");
                exit(1);
        }
 }
@@ -156,7 +171,7 @@ void SequenceDB::clear() {
                data.clear();
        }
        catch(exception& e) {
-               errorOut(e, "SequenceDB", "clear");
+               m->errorOut(e, "SequenceDB", "clear");
                exit(1);
        }
 }
@@ -176,7 +191,7 @@ void SequenceDB::print(ostream& out) {
                }
        }
        catch(exception& e) {
-               errorOut(e, "SequenceDB", "print");
+               m->errorOut(e, "SequenceDB", "print");
                exit(1);
        }
 }
@@ -185,10 +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) {
-               errorOut(e, "SequenceDB", "push_back");
+               m->errorOut(e, "SequenceDB", "push_back");
                exit(1);
        }
 }