]> git.donarmstrong.com Git - mothur.git/blob - fastamap.cpp
Initial revision
[mothur.git] / fastamap.cpp
1 /*
2  *  fastamap.cpp
3  *  mothur
4  *
5  *  Created by Sarah Westcott on 1/16/09.
6  *  Copyright 2009 Schloss Lab UMASS AMherst. All rights reserved.
7  *
8  */
9
10 #include "fastamap.h"
11
12 /*******************************************************************************/
13  FastaMap::FastaMap(ifstream& in) {
14         //int numberOfSequences = 0;
15         
16         string name, sequence, line;
17         sequence = "";
18         
19         getline(in, line);
20         name = line.substr(1, line.length());  //rips off '>'
21         
22         //read through file
23         while (getline(in, line)) {
24                 if (isalnum(line.at(0))){  //if it's a sequence line
25                         sequence += line;
26                 }
27                 else{
28                         //input sequence info into map
29                         it = data.find(sequence);
30                         if (it == data.end()) {         //it's unique.
31                                 data[sequence].groupname = name;  //group name will be the name of the first duplicate sequence found.
32                                 data[sequence].groupnumber = 1;
33                                 data[sequence].names = name;
34                         }else { // its a duplicate.
35                                 data[sequence].names += "," + name;
36                                 data[sequence].groupnumber++;   
37                         }
38                         name = (line.substr(1, (line.npos))); //The line you just read is a new name so rip off '>'
39                 }
40         }
41         
42         //store last sequence and name info.
43         it = data.find(sequence);
44         if (it == data.end()) {         //it's unique.
45                 data[sequence].groupname = name;  //group name will be the name of the first duplicate sequence found.
46                 data[sequence].groupnumber = 1;
47                 data[sequence].names = name;
48         }else { // its a duplicate.
49                 data[sequence].names += "," + name;
50                 data[sequence].groupnumber++;   
51         }       
52 }
53 /*******************************************************************************/
54 string FastaMap::getGroupName(string seq) {  //pass a sequence name get its group
55         return data[seq].groupname;
56 }
57 /*******************************************************************************/
58 int FastaMap::getGroupNumber(string seq) {  //pass a sequence name get number of sequence in its group
59         return data[seq].groupnumber;
60 }
61 /*******************************************************************************/
62 string FastaMap::getNames(string seq) { //pass a sequence get the string of names in the group separated by ','s.
63         return data[seq].names;
64 }
65 /*******************************************************************************/
66 void FastaMap::push_back(string seq, string Name) {//sequencename, name
67         data[seq].groupname = Name;
68         data[seq].groupnumber = 1;
69         data[seq].names = Name;
70 }
71 /*******************************************************************************/
72 void FastaMap::clear() { //clears out data
73         data.clear();
74 }
75 /*******************************************************************************/
76 int FastaMap::size(){ //returns datas size which is the number of unique sequences
77         return data.size();
78 }
79 /*******************************************************************************/
80 void FastaMap::print(ostream&){ //prints data
81
82 }
83 /*******************************************************************************/