File: treemap.h

package info (click to toggle)
mothur 1.48.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 13,684 kB
  • sloc: cpp: 161,854; makefile: 122; sh: 31
file content (70 lines) | stat: -rwxr-xr-x 1,950 bytes parent folder | download | duplicates (6)
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