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 (getline(in, line)) {
23 if (isalnum(line.at(0))){ //if it's a sequence line
27 //input sequence info into map
28 it = data.find(sequence);
29 if (it == data.end()) { //it's unique.
30 data[sequence].groupname = name; //group name will be the name of the first duplicate sequence found.
31 data[sequence].groupnumber = 1;
32 data[sequence].names = name;
33 }else { // its a duplicate.
34 data[sequence].names += "," + name;
35 data[sequence].groupnumber++;
37 name = (line.substr(1, (line.npos))); //The line you just read is a new name so rip off '>'
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++;
54 cout << "Standard Error: " << e.what() << " has occurred in the FastaMap class Function readFastaFile. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
58 cout << "An unknown error has occurred in the FastaMap class function readFastaFile. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
62 /*******************************************************************************/
63 string FastaMap::getGroupName(string seq) { //pass a sequence name get its group
64 return data[seq].groupname;
66 /*******************************************************************************/
67 string FastaMap::getNames(string seq) { //pass a sequence get the string of names in the group separated by ','s.
68 return data[seq].names;
70 /*******************************************************************************/
71 int FastaMap::getGroupNumber(string seq) { //pass a sequence get the number of identical sequences.
72 return data[seq].groupnumber;
74 /*******************************************************************************/
75 void FastaMap::push_back(string seq, string Name) {//sequencename, name
76 data[seq].groupname = Name;
77 data[seq].names = Name;
79 /*******************************************************************************/
80 void FastaMap::set(string seq, string groupName, string Names) {
81 data[seq].groupname = groupName;
82 data[seq].names = Names;
84 /*******************************************************************************/
85 void FastaMap::clear() { //clears out data
88 /*******************************************************************************/
89 int FastaMap::size(){ //returns datas size which is the number of unique sequences
92 /*******************************************************************************/
93 void FastaMap::print(ostream& out){ //prints data
95 // two column file created with groupname and them list of identical sequence names
96 for (it = data.begin(); it != data.end(); it++) {
97 out << it->second.groupname << '\t' << it->second.names << endl;
100 catch(exception& e) {
101 cout << "Standard Error: " << e.what() << " has occurred in the FastaMap class Function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
105 cout << "An unknown error has occurred in the FastaMap class function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
109 /*******************************************************************************/