]> git.donarmstrong.com Git - mothur.git/blob - sequence.cpp
added mothur.h and fixed includes in many files
[mothur.git] / sequence.cpp
1 /*
2  *  sequence.cpp
3  *  
4  *
5  *  Created by Pat Schloss on 12/15/08.
6  *  Copyright 2008 Patrick D. Schloss. All rights reserved.
7  *
8  */
9
10 using namespace std;
11
12 #include "sequence.hpp"
13
14 //********************************************************************************************************************
15
16 Sequence::Sequence(){}
17
18 //********************************************************************************************************************
19
20 Sequence::Sequence(ifstream& fastaFile){
21         
22         string accession;
23         fastaFile >> accession;
24         setName(accession);
25
26         char letter;
27         string sequence;
28         
29         while(fastaFile && letter != '>'){
30         
31                 letter = fastaFile.get();
32                 
33                 if(isalpha(letter)){
34                 
35                         sequence += letter;
36                         
37                 }
38                 
39         }
40         fastaFile.putback(letter);
41
42         if(sequence.find_first_of('-') != string::npos){
43                 setAligned(sequence);
44         }
45         setUnaligned(sequence);
46 }
47
48
49 //********************************************************************************************************************
50
51 string Sequence::convert2ints(){
52         
53         if(unaligned == "")     {       /* need to throw an error */    }
54         
55         string processed;
56         
57         for(int i=0;i<unaligned.length();i++){
58                 if(toupper(unaligned[i]) == 'A')                        {       processed += '0';       }
59                 else if(toupper(unaligned[i]) == 'C')   {       processed += '1';       }
60                 else if(toupper(unaligned[i]) == 'G')   {       processed += '2';       }
61                 else if(toupper(unaligned[i]) == 'T')   {       processed += '3';       }
62                 else if(toupper(unaligned[i]) == 'U')   {       processed += '3';       }
63                 else                                                                    {       processed += '4';       }
64         }
65         return processed;
66 }
67
68 //********************************************************************************************************************
69
70 void Sequence::setName(string seqName){
71         if(seqName[0] == '>')   {       name = seqName.substr(1);       }
72         else                                    {       name = seqName;                         }
73 }
74
75 //********************************************************************************************************************
76
77 void Sequence::setUnaligned(string sequence){
78         
79         if(sequence.find_first_of('-') != string::npos){
80                 string temp = "";
81                 for(int j=0;j<sequence.length();j++){
82                         if(isalpha(sequence[j]))        {       temp += sequence[j];    }
83                 }
84                 unaligned = temp;
85         }
86         else{
87                 unaligned = sequence;
88         }
89         
90 }
91
92 //********************************************************************************************************************
93
94 void Sequence::setAligned(string sequence){
95         aligned = sequence;
96 }
97
98 //********************************************************************************************************************
99
100 void Sequence::setPairwise(string sequence){
101         pairwise = sequence;
102 }
103
104 //********************************************************************************************************************
105
106 string Sequence::getSeqName(){
107         return name;
108 }
109
110 //********************************************************************************************************************
111
112 string Sequence::getAligned(){
113         return aligned;
114 }
115
116 //********************************************************************************************************************
117
118 string Sequence::getPairwise(){
119         return pairwise;
120 }
121
122 //********************************************************************************************************************
123
124 string Sequence::getUnaligned(){
125         return unaligned;
126 }
127
128 //********************************************************************************************************************