else {
//valid paramters for this command
- string Array[] = {"cutoff","precision","method","showabund","timing","phylip","column","name","sorted"};
+ string Array[] = {"cutoff","precision","method","phylip","column","name","sorted","showabund","timing"};
vector<string> myArray (Array, Array+(sizeof(Array)/sizeof(string)));
OptionParser parser(option);
void HClusterCommand::help(){
try {
- mothurOut("The hcluster command parameter options are cutoff, precision, method, showabund, timing, phylip, column, name and sorted. Phylip or column and name are required.\n");
+ mothurOut("The hcluster command parameter options are cutoff, precision, method, phylip, column, name, showabund, timing and sorted. Phylip or column and name are required.\n");
mothurOut("The phylip and column parameter allow you to enter your distance file, and sorted indicates whether your column distance file is already sorted. \n");
mothurOut("The name parameter allows you to enter your name file and is required if your distance file is in column format. \n");
mothurOut("The hcluster command should be in the following format: \n");
mothurOut("It took " + toString(time(NULL) - estart) + " seconds to sort. "); mothurOutEndLine();
estart = time(NULL);
-
+
//list vector made by read contains all sequence names
if(list != NULL){
rabund = new RAbundVector(list->getRAbundVector());
print_start = true;
start = time(NULL);
-//cout << "here" << endl;
+
ifstream in;
openInputFile(distfile, in);
string firstName, secondName;
bool clusteredSomething;
vector<seqDist> seqs; seqs.resize(1); // to start loop
exitedBreak = false; //lets you know if there is a distance stored in next
-
+
while (seqs.size() != 0){
seqs = getSeqs(in);
print_start = false;
}
- ///cout << "before cluster update" << endl;
+ //cout << "before cluster update" << endl;
if (seqs[i].seq1 != seqs[i].seq2) {
clusteredSomething = cluster->update(seqs[i].seq1, seqs[i].seq2, seqs[i].dist);
float rndDist = roundDist(seqs[i].dist, precision);
- //cout << "after cluster update clusterSomething = " << clusteredSomething << " rndDist = " << rndDist << " rndPreviousDist = " << rndPreviousDist << endl;
+ //cout << "after cluster update clusterSomething = " << clusteredSomething << " rndDist = " << rndDist << " rndPreviousDist = " << rndPreviousDist << endl;
if((previousDist <= 0.0000) && (seqs[i].dist != previousDist)){
//save first one
if (prevDistance == -1) { prevDistance = distance; }
-
+ //cout << prevDistance << endl;
+//if (globaldata->nameMap == NULL) { cout << "null" << endl; }
map<string,int>::iterator itA = globaldata->nameMap->find(firstName);
map<string,int>::iterator itB = globaldata->nameMap->find(secondName);
if(itB == globaldata->nameMap->end()){
cerr << "ABError: Sequence '" << secondName << "' was not found in the names file, please correct\n"; exit(1);
}
-
+ //cout << "here" << endl;
//using cutoff
if (distance > cutoff) { break; }
/***********************************************************************/
ReadCluster::ReadCluster(string distfile, float c){
+ globaldata = GlobalData::getInstance();
distFile = distfile;
cutoff = c;
}
}
}
else{
-
for(int i=1;i<nseqs;i++){
in >> name;
rowToName[i] = name;
matrixNames.push_back(name);
-
+
if(nameMap == NULL){
list->set(i, name);
for(int j=0;j<nseqs;j++){
in >> distance;
-
+
if (distance == -1) { distance = 1000000; }
if(distance < cutoff && j < i){
out << i << '\t' << j << '\t' << distance << endl;
}
}
-
}
else{
if(nameMap->count(name)==0){ mothurOut("Error: Sequence '" + name + "' was not found in the names file, please correct"); mothurOutEndLine(); }
out.close();
if(nameMap == NULL){
+ nameMap = new NameAssignment();
for(int i=0;i<matrixNames.size();i++){
nameMap->push_back(matrixNames[i]);
}
+ globaldata->nameMap = nameMap;
}
+
ifstream in2;
ofstream out2;
#include "mothur.h"
#include "nameassignment.hpp"
#include "listvector.hpp"
+#include "globaldata.hpp"
/******************************************************/
string getOutputFile() { return OutPutFile; }
void setFormat(string f) { format = f; }
ListVector* getListVector() { return list; }
+ //NameAssignment* getNameMap() { return nameMap; }
private:
+ GlobalData* globaldata;
string distFile;
string OutPutFile, format;
ListVector* list;
float cutoff;
+ //NameAssignment* nameMap;
void createHClusterFile();
void convertPhylip2Column(NameAssignment*);