1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
#ifndef TREEMAP_H
#define TREEMAP_H
/*
* treemap.h
* Mothur
*
* Created by Sarah Westcott on 1/26/09.
* Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
*
*/
#include "mothur.h"
#include "listvector.hpp"
/* This class is used by the read.tree command to build the tree container. */
struct GroupIndex {
string groupname;
int vectorIndex;
};
class TreeMap {
public:
TreeMap() { m = MothurOut::getInstance(); }
TreeMap(string);
~TreeMap();
int readMap();
int readMap(string);
int getNumGroups();
int getNumSeqs();
//void setIndex(string, int); //sequencename, index
//int getIndex(string); //returns vector index of sequence
bool isValidGroup(string); //return true if string is a valid group
void removeSeq(string); //removes a sequence, this is to accomadate trees that do not contain all the seqs in your groupfile
string getGroup(string);
void addSeq(string, string);
void addGroup(string s) { setNamesOfGroups(s); }
vector<string> getNamesOfGroups() {
sort(namesOfGroups.begin(), namesOfGroups.end());
return namesOfGroups;
}
void print(ostream&);
void makeSim(vector<string>); //takes groupmap info and fills treemap for use by tree.shared command.
void makeSim(ListVector*); //takes listvector info and fills treemap for use by tree.shared command.
vector<string> getNamesSeqs();
vector<string> getNamesSeqs(vector<string>); //get names of seqs belonging to a group or set of groups
int getCopy(TreeMap&);
vector<string> namesOfSeqs;
map<string,int> seqsPerGroup; //groupname, number of seqs in that group.
map<string, GroupIndex> treemap; //sequence name and <groupname, vector index>
private:
vector<string> namesOfGroups;
ifstream fileHandle;
string groupFileName;
int numGroups;
map<string, GroupIndex>::iterator it;
map<string, int>::iterator it2;
void setNamesOfGroups(string);
MothurOut* m;
Utils util;
};
#endif
|