/***********************************************************************/
FormatColumnMatrix::FormatColumnMatrix(string df) : filename(df){
- openInputFile(filename, fileHandle);
+ m->openInputFile(filename, fileHandle);
}
/***********************************************************************/
-void FormatColumnMatrix::read(NameAssignment* nameMap){
+int FormatColumnMatrix::read(NameAssignment* nameMap){
try {
string firstName, secondName;
ofstream out;
string tempOutFile = filename + ".temp";
- openOutputFile(tempOutFile, out);
+ m->openOutputFile(tempOutFile, out);
while(fileHandle && lt == 1){ //let's assume it's a triangular matrix...
+ if (m->control_pressed) { out.close(); remove(tempOutFile.c_str()); fileHandle.close(); delete reading; return 0; }
+
fileHandle >> firstName >> secondName >> distance; // get the row and column names and distance
map<string,int>::iterator itA = nameMap->find(firstName);
reading->update(itA->second * nseqs / 2);
}
- gobble(fileHandle);
+ m->gobble(fileHandle);
}
out.close();
fileHandle.close();
}else{ squareFile = tempOutFile; }
//sort file by first column so the distances for each row are together
- string outfile = getRootName(squareFile) + "sorted.dist.temp";
+ string outfile = m->getRootName(squareFile) + "sorted.dist.temp";
//use the unix sort
#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
system(command.c_str());
#endif
+ if (m->control_pressed) { remove(tempOutFile.c_str()); remove(outfile.c_str()); delete reading; return 0; }
//output to new file distance for each row and save positions in file where new row begins
ifstream in;
- openInputFile(outfile, in);
+ m->openInputFile(outfile, in);
distFile = outfile + ".rowFormatted";
- openOutputFile(distFile, out);
+ m->openOutputFile(distFile, out);
rowPos.resize(nseqs, -1);
int currentRow;
for(int k = 0; k < firstString.length(); k++) { in.putback(firstString[k]); }
while(!in.eof()) {
- in >> first >> second >> dist; gobble(in);
+
+ if (m->control_pressed) { in.close(); out.close(); remove(distFile.c_str()); remove(tempOutFile.c_str()); remove(outfile.c_str()); delete reading; return 0; }
+
+ in >> first >> second >> dist; m->gobble(in);
if (first != currentRow) {
//save position in file of each new row
in.close();
out.close();
+ if (m->control_pressed) { remove(distFile.c_str()); remove(tempOutFile.c_str()); remove(outfile.c_str()); delete reading; return 0; }
remove(tempOutFile.c_str());
remove(outfile.c_str());
reading->finish();
+
+ delete reading;
list->setLabel("0");
+
+ if (m->control_pressed) { remove(distFile.c_str()); return 0; }
+
+ return 1;
}
catch(exception& e) {
- errorOut(e, "FormatColumnMatrix", "read");
+ m->errorOut(e, "FormatColumnMatrix", "read");
exit(1);
}
}