]> git.donarmstrong.com Git - mothur.git/blob - readclustal.cpp
2211ccd58c34b4bc11c39caca6d56b199872ee83
[mothur.git] / readclustal.cpp
1 /*
2  *  readclustal.cpp
3  *  Mothur
4  *
5  *  Created by Thomas Ryabin on 4/24/09.
6  *  Copyright 2009 __MyCompanyName__. All rights reserved.
7  *
8  */
9
10 #include "readclustal.h"
11 #include <iostream>
12 #include <fstream>
13
14 /*******************************************************************************/
15 ReadClustal::ReadClustal(string file) {
16         try {
17                 openInputFile(file, filehandle);
18                 clustalFile = file;
19                 globaldata = GlobalData::getInstance();
20         }
21         catch(exception& e) {
22                 cout << "Standard Error: " << e.what() << " has occurred in the ReadTree class Function ReadTree. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
23                 exit(1);
24         }
25         catch(...) {
26                 cout << "An unknown error has occurred in the ReadTree class function ReadTree. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
27                 exit(1);
28         }               
29 }
30 /*******************************************************************************/
31 ReadClustal::~ReadClustal(){
32 //      for(int i = 0; i < sequencedb.getNumSeqs(); i++)
33 //              delete sequencedb.get(i);
34 }
35 /*******************************************************************************/
36 void ReadClustal::read() {
37         string temp;
38         string name;
39         string sequence;
40         string firstName = "";
41         for(int i = 0; i < 6; i++)
42                 filehandle >> temp;
43         
44         int count = 0;
45         int numSeqs = 0;
46         bool firstDone = false; 
47         
48         while(!filehandle.eof()) {
49                 filehandle >> name;
50                 if(numSeqs != 0) {
51                         if(count == numSeqs)
52                                 count = 0;
53                 }
54                 else if(!firstDone && firstName.compare("") == 0)
55                         firstName = name;
56                 else if(!firstDone && firstName.compare(name) == 0) {
57                         numSeqs = count;
58                         firstDone = true;
59                         count = 0;
60                 }
61
62                 if(name.find_first_of("*") == -1) {
63                         filehandle >> sequence;
64                         if(!firstDone) {
65                                 Sequence newSeq(name, sequence);
66                                 sequencedb.add(newSeq);
67                         } 
68                         else 
69                                 sequencedb.set(count, sequencedb.get(count).getAligned() + sequence);
70                                 
71                         count++;
72                 }
73         }
74         filehandle.close();
75 }
76
77 /*********************************************************************************/
78 SequenceDB* ReadClustal::getDB() {
79         return &sequencedb;
80 }