X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=readcluster.cpp;h=d8227101b2c339b3904e95144d11f5cccb068dd3;hb=65f2be9d8f9b4cf72b4aafd800fdd11ad26435fd;hp=acbebaeece94faf995cd9d1a26112e40185314b8;hpb=aa9238c0a9e6e7aa0ed8b8b606b08ad4fd7dcfe3;p=mothur.git diff --git a/readcluster.cpp b/readcluster.cpp index acbebae..d822710 100644 --- a/readcluster.cpp +++ b/readcluster.cpp @@ -11,16 +11,18 @@ /***********************************************************************/ -ReadCluster::ReadCluster(string distfile, float c){ - globaldata = GlobalData::getInstance(); +ReadCluster::ReadCluster(string distfile, float c, string o, bool s){ m = MothurOut::getInstance(); distFile = distfile; cutoff = c; + outputDir = o; + sortWanted = s; + list = NULL; } /***********************************************************************/ -int ReadCluster::read(NameAssignment* nameMap){ +int ReadCluster::read(NameAssignment*& nameMap){ try { if (format == "phylip") { convertPhylip2Column(nameMap); } @@ -28,7 +30,8 @@ int ReadCluster::read(NameAssignment* nameMap){ if (m->control_pressed) { return 0; } - OutPutFile = sortFile(distFile); + if (sortWanted) { OutPutFile = m->sortFile(distFile, outputDir); } + else { OutPutFile = distFile; } //for use by clusters splitMatrix to convert a phylip matrix to column return 0; @@ -40,7 +43,7 @@ int ReadCluster::read(NameAssignment* nameMap){ } /***********************************************************************/ -int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){ +int ReadCluster::convertPhylip2Column(NameAssignment*& nameMap){ try { //convert phylip file to column file map rowToName; @@ -50,15 +53,20 @@ int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){ ofstream out; string tempFile = distFile + ".column.temp"; - openInputFile(distFile, in); - openOutputFile(tempFile, out); + m->openInputFile(distFile, in); m->gobble(in); + m->openOutputFile(tempFile, out); float distance; int square, nseqs; string name; vector matrixNames; - - in >> nseqs >> name; + + string numTest; + in >> numTest >> name; + + if (!m->isContainingOnlyDigits(numTest)) { m->mothurOut("[ERROR]: expected a number and got " + numTest + ", quitting."); m->mothurOutEndLine(); exit(1); } + else { convert(numTest, nseqs); } + rowToName[0] = name; matrixNames.push_back(name); @@ -173,22 +181,21 @@ int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){ list->setLabel("0"); in.close(); out.close(); - + if(nameMap == NULL){ nameMap = new NameAssignment(); for(int i=0;ipush_back(matrixNames[i]); } - globaldata->nameMap = nameMap; } ifstream in2; ofstream out2; - string outputFile = getRootName(distFile) + "column.dist"; - openInputFile(tempFile, in2); - openOutputFile(outputFile, out2); + string outputFile = m->getRootName(distFile) + "column.dist"; + m->openInputFile(tempFile, in2); + m->openOutputFile(outputFile, out2); int first, second; float dist; @@ -198,14 +205,14 @@ int ReadCluster::convertPhylip2Column(NameAssignment* nameMap){ in2 >> first >> second >> dist; out2 << rowToName[first] << '\t' << rowToName[second] << '\t' << dist << endl; - gobble(in2); + m->gobble(in2); } in2.close(); out2.close(); remove(tempFile.c_str()); distFile = outputFile; - + if (m->control_pressed) { remove(outputFile.c_str()); } return 0;