5 * Created by Thomas Ryabin on 4/13/09.
6 * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
10 #include "sequencedb.h"
11 #include "sequence.hpp"
13 #include "calculator.h"
16 /***********************************************************************/
18 SequenceDB::SequenceDB() { m = MothurOut::getInstance(); }
19 /***********************************************************************/
20 //the clear function free's the memory
21 SequenceDB::~SequenceDB() { clear(); }
23 /***********************************************************************/
25 SequenceDB::SequenceDB(int newSize) {
26 data.resize(newSize, Sequence());
29 /***********************************************************************/
31 SequenceDB::SequenceDB(ifstream& filehandle) {
35 while (!filehandle.eof()) {
36 //input sequence info into sequencedb
37 Sequence newSequence(filehandle);
39 if (newSequence.getName() != "") { data.push_back(newSequence); }
41 //takes care of white space
49 m->errorOut(e, "SequenceDB", "SequenceDB");
53 /*******************************************************************************/
54 string SequenceDB::readName(ifstream& in) {
60 while ((c = in.get()) != EOF) {
61 //if c is not a line return
70 m->errorOut(e, "SequenceDB", "readName");
75 /*******************************************************************************/
76 string SequenceDB::readSequence(ifstream& in) {
83 //save position in file in case next line is a new name.
87 //if you are at a new name
89 //put file pointer back since you are now at a new name
90 in.seekg(pos, ios::beg);
91 c = in.get(); //because you put it back to a newline char
93 }else { sequence += line; }
99 m->errorOut(e, "SequenceDB", "readSequence");
104 /***********************************************************************/
106 int SequenceDB::getNumSeqs() {
110 /***********************************************************************/
112 void SequenceDB::set(int index, string newUnaligned) {
114 data[index] = Sequence(data[index].getName(), newUnaligned);
116 catch(exception& e) {
117 m->errorOut(e, "SequenceDB", "set");
122 /***********************************************************************/
124 void SequenceDB::set(int index, Sequence newSeq) {
126 data[index] = newSeq;
128 catch(exception& e) {
129 m->errorOut(e, "SequenceDB", "set");
134 /***********************************************************************/
136 Sequence SequenceDB::get(int index) {
140 /***********************************************************************/
142 void SequenceDB::resize(int newSize) {
144 data.resize(newSize);
146 catch(exception& e) {
147 m->errorOut(e, "SequenceDB", "resize");
152 /***********************************************************************/
154 void SequenceDB::clear() {
158 catch(exception& e) {
159 m->errorOut(e, "SequenceDB", "clear");
164 /***********************************************************************/
166 int SequenceDB::size() {
170 /***********************************************************************/
172 void SequenceDB::print(ostream& out) {
174 for(int i = 0; i < data.size(); i++) {
175 data[i].printSequence(out);
178 catch(exception& e) {
179 m->errorOut(e, "SequenceDB", "print");
184 /***********************************************************************/
186 void SequenceDB::push_back(Sequence newSequence) {
188 data.push_back(newSequence);
190 catch(exception& e) {
191 m->errorOut(e, "SequenceDB", "push_back");
196 /***********************************************************************/