]> git.donarmstrong.com Git - mothur.git/blobdiff - fastamap.cpp
Initial revision
[mothur.git] / fastamap.cpp
diff --git a/fastamap.cpp b/fastamap.cpp
new file mode 100644 (file)
index 0000000..4f4bf33
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ *  fastamap.cpp
+ *  mothur
+ *
+ *  Created by Sarah Westcott on 1/16/09.
+ *  Copyright 2009 Schloss Lab UMASS AMherst. All rights reserved.
+ *
+ */
+
+#include "fastamap.h"
+
+/*******************************************************************************/
+ FastaMap::FastaMap(ifstream& in) {
+       //int numberOfSequences = 0;
+       
+       string name, sequence, line;
+       sequence = "";
+       
+       getline(in, line);
+       name = line.substr(1, line.length());  //rips off '>'
+       
+       //read through file
+       while (getline(in, line)) {
+               if (isalnum(line.at(0))){  //if it's a sequence line
+                       sequence += line;
+               }
+               else{
+                       //input sequence info into map
+                       it = data.find(sequence);
+                       if (it == data.end()) {         //it's unique.
+                               data[sequence].groupname = name;  //group name will be the name of the first duplicate sequence found.
+                               data[sequence].groupnumber = 1;
+                               data[sequence].names = name;
+                       }else { // its a duplicate.
+                               data[sequence].names += "," + name;
+                               data[sequence].groupnumber++;   
+                       }
+                       name = (line.substr(1, (line.npos))); //The line you just read is a new name so rip off '>'
+               }
+       }
+       
+       //store last sequence and name info.
+       it = data.find(sequence);
+       if (it == data.end()) {         //it's unique.
+               data[sequence].groupname = name;  //group name will be the name of the first duplicate sequence found.
+               data[sequence].groupnumber = 1;
+               data[sequence].names = name;
+       }else { // its a duplicate.
+               data[sequence].names += "," + name;
+               data[sequence].groupnumber++;   
+       }       
+}
+/*******************************************************************************/
+string FastaMap::getGroupName(string seq) {  //pass a sequence name get its group
+       return data[seq].groupname;
+}
+/*******************************************************************************/
+int FastaMap::getGroupNumber(string seq) {  //pass a sequence name get number of sequence in its group
+       return data[seq].groupnumber;
+}
+/*******************************************************************************/
+string FastaMap::getNames(string seq) {        //pass a sequence get the string of names in the group separated by ','s.
+       return data[seq].names;
+}
+/*******************************************************************************/
+void FastaMap::push_back(string seq, string Name) {//sequencename, name
+       data[seq].groupname = Name;
+       data[seq].groupnumber = 1;
+       data[seq].names = Name;
+}
+/*******************************************************************************/
+void FastaMap::clear() { //clears out data
+       data.clear();
+}
+/*******************************************************************************/
+int FastaMap::size(){ //returns datas size which is the number of unique sequences
+       return data.size();
+}
+/*******************************************************************************/
+void FastaMap::print(ostream&){ //prints data
+
+}
+/*******************************************************************************/