listFile.close(); rabundFile.close(); sabundFile.close(); remove((fileroot+ tag + ".list").c_str()); remove((fileroot+ tag + ".rabund").c_str()); remove((fileroot+ tag + ".sabund").c_str());
return 0;
}
-
+
//cluster using cluster classes
while (distMatrix->getSmallDist() < cutoff && distMatrix->getNNodes() > 0){
}else{
rndDist = roundDist(dist, precision);
}
-
if(previousDist <= 0.0000 && dist != previousDist){
oldList.setLabel("unique");
}
else if(rndDist != rndPreviousDist){
if (merge) {
- Seq2Bin = cluster->getSeqtoBin();
ListVector* temp = mergeOPFs(oldSeq2Bin, rndPreviousDist);
if (m->control_pressed) {
printData(&oldList);
}
}
-
+
previousDist = dist;
- cout << "prev distance = " << previousDist << " dist = " << dist << endl;
rndPreviousDist = rndDist;
oldList = *list;
+ Seq2Bin = cluster->getSeqtoBin();
oldSeq2Bin = Seq2Bin;
}
}
else if(rndPreviousDist<cutoff){
if (merge) {
- Seq2Bin = cluster->getSeqtoBin();
ListVector* temp = mergeOPFs(oldSeq2Bin, rndPreviousDist);
if (m->control_pressed) {
}
else if((rndDist != rndPreviousDist)){
if (merge) {
- Seq2Bin = hcluster->getSeqtoBin();
ListVector* temp = mergeOPFs(oldSeq2Bin, rndPreviousDist);
if (m->control_pressed) {
previousDist = seqs[i].dist;
rndPreviousDist = rndDist;
oldList = *list;
+ Seq2Bin = cluster->getSeqtoBin();
oldSeq2Bin = Seq2Bin;
}
}
}
else if(rndPreviousDist<cutoff){
if (merge) {
- Seq2Bin = hcluster->getSeqtoBin();
ListVector* temp = mergeOPFs(oldSeq2Bin, rndPreviousDist);
if (m->control_pressed) {
}
delete hcluster;
- //remove(distFile.c_str());
- //remove(overlapFile.c_str());
+ remove(distFile.c_str());
+ remove(overlapFile.c_str());
}
delete list;
try {
//create new listvector so you don't overwrite the clustering
ListVector* newList = new ListVector(oldList);
+
bool done = false;
ifstream inOverlap;
int count = 0;
float overlapDistance;
inOverlap >> firstName >> secondName >> overlapDistance; gobble(inOverlap);
- 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); }
+ //commented out because we check this in readblast already
+ //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); }
- overlapNode.seq1 = itA->second;
- overlapNode.seq2 = itB->second;
+ //overlapNode.seq1 = itA->second;
+ //overlapNode.seq2 = itB->second;
+ overlapNode.seq1 = nameMap->get(firstName);
+ overlapNode.seq2 = nameMap->get(secondName);
overlapNode.dist = overlapDistance;
}else { inOverlap.close(); break; }
}
string name2 = nameMap->get(overlapNode.seq2);
//use binInfo to find out if they are already in the same bin
- map<string, int>::iterator itBin1 = binInfo.find(name1);
- map<string, int>::iterator itBin2 = binInfo.find(name2);
+ //map<string, int>::iterator itBin1 = binInfo.find(name1);
+ //map<string, int>::iterator itBin2 = binInfo.find(name2);
- if(itBin1 == binInfo.end()){ cerr << "AAError: Sequence '" << name1 << "' does not have any bin info.\n"; exit(1); }
- if(itBin2 == binInfo.end()){ cerr << "ABError: Sequence '" << name2 << "' does not have any bin info.\n"; exit(1); }
+ //if(itBin1 == binInfo.end()){ cerr << "AAError: Sequence '" << name1 << "' does not have any bin info.\n"; exit(1); }
+ //if(itBin2 == binInfo.end()){ cerr << "ABError: Sequence '" << name2 << "' does not have any bin info.\n"; exit(1); }
- int binKeep = itBin1->second;
- int binRemove = itBin2->second;
+ //int binKeep = itBin1->second;
+ //int binRemove = itBin2->second;
+ int binKeep = binInfo[name1];
+ int binRemove = binInfo[name2];
+
//if not merge bins and update binInfo
if(binKeep != binRemove) {
//save names in old bin
string names = newList->get(binRemove);
-
+
//merge bins into name1s bin
newList->set(binKeep, newList->get(binRemove)+','+newList->get(binKeep));
newList->set(binRemove, "");