]> git.donarmstrong.com Git - mothur.git/blobdiff - formatphylip.cpp
moved mothur's source into a folder to make grabbing just the source easier on github
[mothur.git] / formatphylip.cpp
diff --git a/formatphylip.cpp b/formatphylip.cpp
deleted file mode 100644 (file)
index 6059117..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- *  formatphylip.cpp
- *  Mothur
- *
- *  Created by westcott on 1/13/10.
- *  Copyright 2010 Schloss Lab. All rights reserved.
- *
- */
-
-#include "formatphylip.h"
-#include "progress.hpp"
-
-/***********************************************************************/
-FormatPhylipMatrix::FormatPhylipMatrix(string df) : filename(df) {
-        m->openInputFile(filename, fileHandle);
-}
-/***********************************************************************/
-//not using nameMap
-int FormatPhylipMatrix::read(NameAssignment* nameMap){
-       try {
-        
-                       float distance;
-                       int square, nseqs;
-                       string name;
-                       ofstream out;
-                       
-                       string numTest;
-                       fileHandle >> numTest >> name;
-                       
-                       if (!m->isContainingOnlyDigits(numTest)) { m->mothurOut("[ERROR]: expected a number and got " + numTest + ", quitting."); m->mothurOutEndLine(); exit(1); }
-                       else { convert(numTest, nseqs); }
-               
-                                               
-                       list = new ListVector(nseqs);
-                       list->set(0, name);
-                       
-                       char d;
-                       while((d=fileHandle.get()) != EOF){
-                
-                               if(isalnum(d)){  //you are square
-                                       square = 1;
-                                       fileHandle.close();  //reset file
-                                       
-                                       //open and get through numSeqs, code below formats rest of file
-                                       m->openInputFile(filename, fileHandle);
-                                       fileHandle >> nseqs; m->gobble(fileHandle);
-                                       
-                                       distFile = filename + ".rowFormatted";
-                                       m->openOutputFile(distFile, out);
-                                       break;
-                               }
-                               if(d == '\n'){
-                                       square = 0;
-                                       break;
-                               }
-                       }
-                       
-                       Progress* reading;
-                       reading = new Progress("Formatting matrix:     ", nseqs * nseqs);
-                       
-                       //lower triangle, so must go to column then formatted row file
-                       if(square == 0){
-                               int  index = 0;
-                               
-                               ofstream outTemp;
-                               string tempFile = filename + ".temp";
-                               m->openOutputFile(tempFile, outTemp);
-                
-                               //convert to square column matrix
-                               for(int i=1;i<nseqs;i++){
-                               
-                                       fileHandle >> name;
-                                       
-                                       list->set(i, name);
-                                       
-                                       for(int j=0;j<i;j++){
-                                       
-                                               if (m->control_pressed) { outTemp.close(); m->mothurRemove(tempFile); fileHandle.close();  delete reading; return 0; }
-                                                                                       
-                                               fileHandle >> distance;
-                                               
-                                               if (distance == -1) { distance = 1000000; }
-                                               
-                                               if(distance < cutoff){
-                                                       outTemp << i << '\t' << j << '\t' << distance << endl;
-                                                       outTemp << j << '\t' << i << '\t' << distance << endl;
-                                               }
-                                               index++;
-                                               reading->update(index);
-                                       }
-                               }
-                               outTemp.close();
-                               
-                               //format from square column to rowFormatted
-                               //sort file by first column so the distances for each row are together
-                               string outfile = m->getRootName(tempFile) + "sorted.dist.temp";
-                               
-                               //use the unix sort 
-                               #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) || (__linux__) || (__unix__) || (__unix)
-                                       string command = "sort -n " + tempFile + " -o " + outfile;
-                                       system(command.c_str());
-                               #else //sort using windows sort
-                                       string command = "sort " + tempFile + " /O " + outfile;
-                                       system(command.c_str());
-                               #endif
-                               
-                               if (m->control_pressed) { m->mothurRemove(tempFile); m->mothurRemove(outfile);  delete reading; return 0; }
-
-                               //output to new file distance for each row and save positions in file where new row begins
-                               ifstream in;
-                               m->openInputFile(outfile, in);
-                               
-                               distFile = outfile + ".rowFormatted";
-                               m->openOutputFile(distFile, out);
-                               
-                               rowPos.resize(nseqs, -1);
-                               int currentRow;
-                               int first, second;
-                               float dist;
-                               map<int, float> rowMap;
-                               map<int, float>::iterator itRow;
-                               
-                               //get first currentRow
-                               in >> first;
-                               currentRow = first;
-                               
-                               string firstString = toString(first);
-                               for(int k = 0; k < firstString.length(); k++)  {   in.putback(firstString[k]);  }
-                               
-                               while(!in.eof()) {
-                                       if (m->control_pressed) { in.close(); out.close(); m->mothurRemove(tempFile); m->mothurRemove(distFile); m->mothurRemove(outfile);  delete reading; return 0; }
-
-                                       in >> first >> second >> dist; m->gobble(in);
-                                       
-                                       if (first != currentRow) {
-                                               //save position in file of each new row
-                                               rowPos[currentRow] = out.tellp();
-                                               
-                                               out << currentRow << '\t' << rowMap.size() << '\t';
-                                               
-                                               for (itRow = rowMap.begin(); itRow != rowMap.end(); itRow++) {
-                                                       out << itRow->first << '\t' << itRow->second << '\t';
-                                               }
-                                               out << endl;
-                                               
-                                               currentRow = first;
-                                               rowMap.clear();
-                                               
-                                               //save row you just read
-                                               rowMap[second] = dist;
-                                               
-                                               index++;
-                                               reading->update(index);
-                                       }else{
-                                               rowMap[second] = dist;
-                                       }
-                               }
-                               
-                               //print last Row
-                               //save position in file of each new row
-                               rowPos[currentRow] = out.tellp();
-                               
-                               out << currentRow << '\t' << rowMap.size() << '\t';
-                               
-                               for (itRow = rowMap.begin(); itRow != rowMap.end(); itRow++) {
-                                       out << itRow->first << '\t' << itRow->second << '\t';
-                               }
-                               out << endl;
-                               
-                               in.close();
-                               out.close();
-                               
-                               m->mothurRemove(tempFile);
-                               m->mothurRemove(outfile);
-                               
-                               if (m->control_pressed) {  m->mothurRemove(distFile);   delete reading; return 0; }
-
-                       }
-                       else{ //square matrix convert directly to formatted row file
-                               int index = nseqs;
-                               map<int, float> rowMap;
-                               map<int, float>::iterator itRow;
-                               rowPos.resize(nseqs, -1);
-                
-                               for(int i=0;i<nseqs;i++){
-                                       fileHandle >> name;                
-                                                                       
-                                       list->set(i, name);
-                                       
-                                       for(int j=0;j<nseqs;j++){
-                                               if (m->control_pressed) {  fileHandle.close(); out.close(); m->mothurRemove(distFile);   delete reading; return 0; }
-                                               
-                                               fileHandle >> distance;
-                                       
-                                               if (distance == -1) { distance = 1000000; }
-                                               
-                                               if((distance < cutoff) && (j != i)){
-                                                       rowMap[j] = distance;
-                                               }
-                                               index++;
-                                               reading->update(index);
-                                       }
-                                       
-                                       m->gobble(fileHandle);
-                       
-                                       //save position in file of each new row
-                                       rowPos[i] = out.tellp();
-
-                                       //output row to file
-                                       out << i << '\t' << rowMap.size() << '\t';
-                                       for (itRow = rowMap.begin(); itRow != rowMap.end(); itRow++) {
-                                               out << itRow->first << '\t' << itRow->second << '\t';
-                                       }
-                                       out << endl;
-                                       
-                                       //clear map for new row's info
-                                       rowMap.clear();
-                               }
-                       }
-                       reading->finish();
-                       delete reading;
-                       fileHandle.close();
-                       out.close();
-                       
-                       if (m->control_pressed) { m->mothurRemove(distFile);  return 0; }
-                       
-                       list->setLabel("0");
-                       
-                       return 1;
-                       
-                       
-       }
-       catch(exception& e) {
-               m->errorOut(e, "FormatPhylipMatrix", "read");
-                exit(1);
-       }
-}
-/***********************************************************************/
-FormatPhylipMatrix::~FormatPhylipMatrix(){}
-/***********************************************************************/
-
-