File: fullmatrix.h

package info (click to toggle)
mothur 1.24.1-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 7,868 kB
  • sloc: cpp: 110,948; ansic: 2,037; fortran: 665; makefile: 74; sh: 59
file content (58 lines) | stat: -rw-r--r-- 1,370 bytes parent folder | download | duplicates (3)
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
#ifndef FULLMATRIX_H
#define FULLMATRIX_H
/*
 *  fullmatrix.h
 *  Mothur
 *
 *  Created by Sarah Westcott on 3/6/09.
 *  Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
 *
 */

#include "mothur.h"
#include "groupmap.h"
#include "progress.hpp"


struct Names {
	string		seqName;
	string		groupName;
};

class FullMatrix {
	
public:
	//FullMatrix(){ m = MothurOut::getInstance(); }
	FullMatrix(ifstream&, GroupMap*, bool);
	~FullMatrix(){};
	
	int getNumSeqs();
	vector<int> getSizes();
	vector<string> getGroups();
	void setGroups(vector<string> names) { groups = names;  }
	void setSizes(vector<int> s)		 { sizes = s;		}
	int getNumGroups();
	void printMatrix(ostream&);
	float get(int, int);
	Names getRowInfo(int row)  {  return index[row];  }
	
private:
	vector< vector<float> > matrix;  //a 2D distance matrix of all the sequences and their distances to eachother.
	int readSquareMatrix(ifstream&);  
	int readLTMatrix(ifstream&);
	vector<Names> index; // row in vector, sequence group.  need to know this so when we sort it can be updated.
	vector<int> sizes;
	vector<string> groups;
	
	void sortGroups(int, int);  //this function sorts the sequences within the matrix.
	void swapRows(int, int);
	
	GroupMap* groupmap;  //maps sequences to groups they belong to.
	int numSeqs;
	int numGroups;
	int numUserGroups;
	bool sim;
	MothurOut* m;
};

#endif