5 * Created by Sarah Westcott on 1/16/09.
6 * Copyright 2009 Schloss Lab UMASS AMherst. All rights reserved.
12 /*******************************************************************************/
13 void FastaMap::readFastaFile(ifstream& in) {
15 string name, sequence, line;
19 name = line.substr(1, line.length()); //rips off '>'
22 while (in.eof() != true) {
25 if (isalnum(line.at(0))) { //if it's a sequence line
29 //input sequence info into map
30 seqmap[name] = sequence;
31 it = data.find(sequence);
32 if (it == data.end()) { //it's unique.
33 data[sequence].groupname = name; //group name will be the name of the first duplicate sequence found.
34 data[sequence].groupnumber = 1;
35 data[sequence].names = name;
36 }else { // its a duplicate.
37 data[sequence].names += "," + name;
38 data[sequence].groupnumber++;
40 name = (line.substr(1, (line.npos))); //The line you just read is a new name so rip off '>'
46 //store last sequence and name info.
47 seqmap[name] = sequence;
48 it = data.find(sequence);
49 if (it == data.end()) { //it's unique.
50 data[sequence].groupname = name; //group name will be the name of the first duplicate sequence found.
51 data[sequence].groupnumber = 1;
52 data[sequence].names = name;
53 }else { // its a duplicate.
54 data[sequence].names += "," + name;
55 data[sequence].groupnumber++;
60 cout << "Standard Error: " << e.what() << " has occurred in the FastaMap class Function readFastaFile. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
64 cout << "An unknown error has occurred in the FastaMap class function readFastaFile. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
68 /*******************************************************************************/
69 string FastaMap::getGroupName(string seq) { //pass a sequence name get its group
70 return data[seq].groupname;
72 /*******************************************************************************/
73 string FastaMap::getNames(string seq) { //pass a sequence get the string of names in the group separated by ','s.
74 return data[seq].names;
76 /*******************************************************************************/
77 int FastaMap::getGroupNumber(string seq) { //pass a sequence get the number of identical sequences.
78 return data[seq].groupnumber;
80 /*******************************************************************************/
81 string FastaMap::getSequence(string name) {
82 it2 = seqmap.find(name);
83 if (it2 == seqmap.end()) { //it's not found
89 /*******************************************************************************/
90 void FastaMap::push_back(string name, string seq) {
92 if (it == data.end()) { //it's unique.
93 data[seq].groupname = name; //group name will be the name of the first duplicate sequence found.
94 data[seq].groupnumber = 1;
95 data[seq].names = name;
96 }else { // its a duplicate.
97 data[seq].names += "," + name;
98 data[seq].groupnumber++;
103 /*******************************************************************************/
104 int FastaMap::sizeUnique(){ //returns datas size which is the number of unique sequences
107 /*******************************************************************************/
108 void FastaMap::printNamesFile(ostream& out){ //prints data
110 // two column file created with groupname and them list of identical sequence names
111 for (it = data.begin(); it != data.end(); it++) {
112 out << it->second.groupname << '\t' << it->second.names << endl;
115 catch(exception& e) {
116 cout << "Standard Error: " << e.what() << " has occurred in the FastaMap class Function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
120 cout << "An unknown error has occurred in the FastaMap class function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
124 /*******************************************************************************/
125 void FastaMap::printCondensedFasta(ostream& out){ //prints data
127 // two column file created with groupname and them list of identical sequence names
128 for (it = data.begin(); it != data.end(); it++) {
129 out << ">" << it->second.groupname << endl;
130 out << it->first << endl;
133 catch(exception& e) {
134 cout << "Standard Error: " << e.what() << " has occurred in the FastaMap class Function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
138 cout << "An unknown error has occurred in the FastaMap class function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
142 /*******************************************************************************/