if (m->control_pressed) { return 0; }
ifstream fileHandle;
- openInputFile(blastfile, fileHandle);
+ m->openInputFile(blastfile, fileHandle);
string firstName, secondName, eScore, currentRow;
string repeatName = "";
if (!hclusterWanted) {
matrix = new SparseMatrix();
}else{
- overlapFile = getRootName(blastfile) + "overlap.dist";
- distFile = getRootName(blastfile) + "hclusterDists.dist";
+ overlapFile = m->getRootName(blastfile) + "overlap.dist";
+ distFile = m->getRootName(blastfile) + "hclusterDists.dist";
- openOutputFile(overlapFile, outOverlap);
- openOutputFile(distFile, outDist);
+ m->openOutputFile(overlapFile, outOverlap);
+ m->openOutputFile(distFile, outDist);
}
if (m->control_pressed) {
fileHandle.close();
if (!hclusterWanted) { delete matrix; }
- else { outOverlap.close(); remove(overlapFile.c_str()); outDist.close(); remove(distFile.c_str()); }
+ else { outOverlap.close(); m->mothurRemove(overlapFile); outDist.close(); m->mothurRemove(distFile); }
return 0;
}
if (!fileHandle.eof()) {
//read in line from file
fileHandle >> firstName >> secondName >> percentId >> numBases >> mismatch >> gap >> startQuery >> endQuery >> startRef >> endRef >> eScore >> score;
- gobble(fileHandle);
+ m->gobble(fileHandle);
currentRow = firstName;
lengthThisSeq = numBases;
//convert name to number
map<string,int>::iterator itA = nameMap->find(firstName);
map<string,int>::iterator itB = nameMap->find(secondName);
- if(itA == nameMap->end()){ cerr << "AAError: Sequence '" << firstName << "' was not found in the names file, please correct\n"; exit(1); }
- if(itB == nameMap->end()){ cerr << "ABError: Sequence '" << secondName << "' was not found in the names file, please correct\n"; exit(1); }
+ if(itA == nameMap->end()){ m->mothurOut("AAError: Sequence '" + firstName + "' was not found in the names file, please correct\n"); exit(1); }
+ if(itB == nameMap->end()){ m->mothurOut("ABError: Sequence '" + secondName + "' was not found in the names file, please correct\n"); exit(1); }
thisRowsBlastScores[itB->second] = score;
if (m->control_pressed) {
fileHandle.close();
if (!hclusterWanted) { delete matrix; }
- else { outOverlap.close(); remove(overlapFile.c_str()); outDist.close(); remove(distFile.c_str()); }
+ else { outOverlap.close(); m->mothurRemove(overlapFile); outDist.close(); m->mothurRemove(distFile); }
delete reading;
return 0;
}
//read in line from file
fileHandle >> firstName >> secondName >> percentId >> numBases >> mismatch >> gap >> startQuery >> endQuery >> startRef >> endRef >> eScore >> score;
//cout << firstName << '\t' << secondName << '\t' << percentId << '\t' << numBases << '\t' << mismatch << '\t' << gap << '\t' << startQuery << '\t' << endQuery << '\t' << startRef << '\t' << endRef << '\t' << eScore << '\t' << score << endl;
- gobble(fileHandle);
+ m->gobble(fileHandle);
string temp = firstName + secondName; //to check if this file has repeat lines, ie. is this a blast instead of a blscreen file
//convert name to number
map<string,int>::iterator itA = nameMap->find(firstName);
map<string,int>::iterator itB = nameMap->find(secondName);
- if(itA == nameMap->end()){ cerr << "AAError: Sequence '" << firstName << "' was not found in the names file, please correct\n"; exit(1); }
- if(itB == nameMap->end()){ cerr << "ABError: Sequence '" << secondName << "' was not found in the names file, please correct\n"; exit(1); }
+ if(itA == nameMap->end()){ m->mothurOut("AAError: Sequence '" + firstName + "' was not found in the names file, please correct\n"); exit(1); }
+ if(itB == nameMap->end()){ m->mothurOut("ABError: Sequence '" + secondName + "' was not found in the names file, please correct\n"); exit(1); }
//save score
thisRowsBlastScores[itB->second] = score;
map<int, float>::iterator itDist;
for(it=thisRowsBlastScores.begin(); it!=thisRowsBlastScores.end(); it++) {
distance = 1.0 - (it->second / refScore);
+
//do we already have the distance calculated for b->a
map<string,int>::iterator itA = nameMap->find(currentRow);
//if we have it then compare
if (itDist != dists[it->first].end()) {
+
//if you want the minimum blast score ratio, then pick max distance
if(minWanted) { distance = max(itDist->second, distance); }
else{ distance = min(itDist->second, distance); }
-
+
//is this distance below cutoff
if (distance < cutoff) {
if (!hclusterWanted) {
//convert name to number
map<string,int>::iterator itA = nameMap->find(firstName);
map<string,int>::iterator itB = nameMap->find(secondName);
- if(itA == nameMap->end()){ cerr << "AAError: Sequence '" << firstName << "' was not found in the names file, please correct\n"; exit(1); }
- if(itB == nameMap->end()){ cerr << "ABError: Sequence '" << secondName << "' was not found in the names file, please correct\n"; exit(1); }
+ if(itA == nameMap->end()){ m->mothurOut("AAError: Sequence '" + firstName + "' was not found in the names file, please correct\n"); exit(1); }
+ if(itB == nameMap->end()){ m->mothurOut("ABError: Sequence '" + secondName + "' was not found in the names file, please correct\n"); exit(1); }
thisRowsBlastScores[itB->second] = score;
if (m->control_pressed) {
fileHandle.close();
if (!hclusterWanted) { delete matrix; }
- else { outOverlap.close(); remove(overlapFile.c_str()); outDist.close(); remove(distFile.c_str()); }
+ else { outOverlap.close(); m->mothurRemove(overlapFile); outDist.close(); m->mothurRemove(distFile); }
delete reading;
return 0;
}
if (m->control_pressed) {
fileHandle.close();
if (!hclusterWanted) { delete matrix; }
- else { remove(overlapFile.c_str()); remove(distFile.c_str()); }
+ else { m->mothurRemove(overlapFile); m->mothurRemove(distFile); }
delete reading;
return 0;
}
int num = 1;
ifstream in;
- openInputFile(blastfile, in);
+ m->openInputFile(blastfile, in);
- ofstream outName;
- openOutputFile("tempOutNames", outName);
+ //ofstream outName;
+ //m->openOutputFile((blastfile + ".tempOutNames"), outName);
//read first line
in >> prevName;
for (int i = 0; i < 11; i++) { in >> hold; }
- gobble(in);
+ m->gobble(in);
//save name in nameMap
nameMap->push_back(prevName);
in >> name;
for (int i = 0; i < 11; i++) { in >> hold; }
- gobble(in);
+ m->gobble(in);
//is this a new name?
if (name != prevName) {
in.close();
//write out names file
- //string outNames = getRootName(blastfile) + "names";
+ //string outNames = m->getRootName(blastfile) + "names";
//ofstream out;
- //openOutputFile(outNames, out);
+ //m->openOutputFile(outNames, out);
//nameMap->print(out);
//out.close();
+
if (m->control_pressed) { return 0; }
m->mothurOut(toString(num) + " names read."); m->mothurOutEndLine();