5 * Created by Thomas Ryabin on 4/21/09.
6 * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
10 #include "readfasta.h"
14 /*******************************************************************************/
15 ReadFasta::ReadFasta(string file) : ReadSeqs(file) {}
16 /*******************************************************************************/
17 ReadFasta::~ReadFasta(){
18 //for(int i = 0; i < sequencedb.getNumSeqs(); i++)
19 //delete sequencedb.get(i);
21 /*******************************************************************************/
22 void ReadFasta::read() {
29 while(!filehandle.eof()){
32 if(temp.substr(0,1).compare(">") == 0) {
34 Sequence newSequence(name, sequence);
35 sequencedb.add(newSequence);
40 name = temp.substr(1,temp.length()-1);
53 Sequence newSequence(name, sequence);
54 sequencedb.add(newSequence); */
56 string name, sequence, line;
63 while ((c = filehandle.get()) != EOF) {
64 name = ""; sequence = "";
67 name = readName(filehandle);
68 sequence = readSequence(filehandle);
69 }else { cout << "Error fasta in your file. Please correct." << endl; }
71 //input sequence info into sequencedb
72 Sequence newSequence(name, sequence);
73 sequencedb.add(newSequence);
75 //takes care of white space
82 cout << "Standard Error: " << e.what() << " has occurred in the ReadFasta class Function read. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
86 cout << "An unknown error has occurred in the ReadFasta class function read. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
91 /*********************************************************************************/
92 SequenceDB* ReadFasta::getDB() {
95 /*******************************************************************************/
96 string ReadFasta::readName(ifstream& in) {
102 while ((c = in.get()) != EOF) {
103 //if c is not a line return
111 catch(exception& e) {
112 cout << "Standard Error: " << e.what() << " has occurred in the ReadFasta class Function readName. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
116 cout << "An unknown error has occurred in the ReadFasta class function readName. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
121 /*******************************************************************************/
122 string ReadFasta::readSequence(ifstream& in) {
124 string sequence = "";
129 //save position in file in case next line is a new name.
133 //if you are at a new name
134 if (line[0] == '>') {
135 //put file pointer back since you are now at a new name
136 in.seekg(pos, ios::beg);
137 c = in.get(); //because you put it back to a newline char
139 }else { sequence += line; }
144 catch(exception& e) {
145 cout << "Standard Error: " << e.what() << " has occurred in the ReadFasta class Function readSequence. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
149 cout << "An unknown error has occurred in the ReadFasta class function readSequence. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
153 /*******************************************************************************/