/***********************************************************************/
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);
if(itB == nameMap->end()){ cerr << "ABError: Sequence '" << secondName << "' was not found in the names file, please correct\n"; exit(1); }
if (distance == -1) { distance = 1000000; }
-
- if(distance < cutoff && itA != itB){
-
+
+ if((distance < cutoff) && (itA != itB)){
if(refRow == refCol){ // in other words, if we haven't loaded refRow and refCol...
refRow = itA->second;
refCol = itB->second;
reading->update(itA->second * nseqs / 2);
}
- gobble(fileHandle);
+ m->gobble(fileHandle);
}
out.close();
fileHandle.close();
-
+
string squareFile;
if(lt == 0){ // oops, it was square
squareFile = filename;
}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
rowMap.clear();
//save row you just read
- rowMap[second] = dist;
-
+ if (dist < cutoff) {
+ rowMap[second] = dist;
+ }
}else{
- rowMap[second] = dist;
+ if (dist < cutoff) {
+ rowMap[second] = dist;
+ }
}
}
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);
}
}