]> git.donarmstrong.com Git - mothur.git/blob - heatmapcommand.cpp
changed heatmap and venn command to use vector of sharedrabunds instead of order...
[mothur.git] / heatmapcommand.cpp
1 /*
2  *  heatmapcommand.cpp
3  *  Mothur
4  *
5  *  Created by Sarah Westcott on 3/25/09.
6  *  Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
7  *
8  */
9
10 #include "heatmapcommand.h"
11
12
13 //**********************************************************************************************************************
14
15 HeatMapCommand::HeatMapCommand(){
16         try {
17                 globaldata = GlobalData::getInstance();
18                 heatmap = new HeatMap();
19                 format = globaldata->getFormat();
20         }
21         catch(exception& e) {
22                 cout << "Standard Error: " << e.what() << " has occurred in the HeatMapCommand class Function HeatMapCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
23                 exit(1);
24         }
25         catch(...) {
26                 cout << "An unknown error has occurred in the HeatMapCommand class function HeatMapCommand. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
27                 exit(1);
28         }       
29 }
30 //**********************************************************************************************************************
31
32 HeatMapCommand::~HeatMapCommand(){
33         delete input;
34         delete read;
35         delete heatmap;
36 }
37
38 //**********************************************************************************************************************
39
40 int HeatMapCommand::execute(){
41         try {
42                 int count = 1;  
43                 
44                 if (format == "sharedfile") {
45                         //you have groups
46                         read = new ReadOTUFile(globaldata->inputFileName);      
47                         read->read(&*globaldata); 
48                         
49                         input = globaldata->ginput;
50                         lookup = input->getSharedRAbundVectors();
51                 }else if (format == "shared") {
52                         //you are using a list and a groupfile
53                         read = new ReadOTUFile(globaldata->inputFileName);      
54                         read->read(&*globaldata); 
55                 
56                         input = globaldata->ginput;
57                         SharedList = globaldata->gSharedList;
58                         lookup = SharedList->getSharedRAbundVector();
59                 }else if (format == "list") {
60                         //you are using just a list file and have only one group
61                         read = new ReadOTUFile(globaldata->inputFileName);      
62                         read->read(&*globaldata); 
63                         
64                         rabund = globaldata->rabund;
65                         input = globaldata->ginput;             
66                 }
67                 
68                 if (format != "list") { 
69                 
70                         while(lookup[0] != NULL){
71                 
72                                 if(globaldata->allLines == 1 || globaldata->lines.count(count) == 1 || globaldata->labels.count(lookup[0]->getLabel()) == 1){                   
73         
74                                         cout << lookup[0]->getLabel() << '\t' << count << endl;
75                                         heatmap->getPic(lookup);
76                                 }
77                                                 
78                                 //get next line to process
79                                 lookup = input->getSharedRAbundVectors();                               
80                                 count++;
81                         }
82                         
83                         //reset groups parameter
84                         globaldata->Groups.clear();  
85                         
86                 }else{
87                 
88                         while(rabund != NULL){
89                 
90                                 if(globaldata->allLines == 1 || globaldata->lines.count(count) == 1 || globaldata->labels.count(rabund->getLabel()) == 1){                      
91         
92                                         cout << rabund->getLabel() << '\t' << count << endl;
93                                         heatmap->getPic(rabund);
94                                 }
95                                 
96                                 rabund = input->getRAbundVector();
97                                 count++;
98                         }
99                 }
100                 
101                 globaldata->setGroups("");
102                 return 0;
103         }
104         catch(exception& e) {
105                 cout << "Standard Error: " << e.what() << " has occurred in the HeatMapCommand class Function execute. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
106                 exit(1);
107         }
108         catch(...) {
109                 cout << "An unknown error has occurred in the HeatMapCommand class function execute. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
110                 exit(1);
111         }               
112 }
113
114 //**********************************************************************************************************************
115
116