X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=heatmapsim.cpp;h=62965f9a3291d0052b6c216b6a800d6c97072f46;hp=b29e98b68c4af0824d4effbffa753ede522309c7;hb=1a20e24ee786195ab0e1cccd4f5aede7a88f3f4e;hpb=315e38cf393c82be238da5b32574f225a020d25c diff --git a/heatmapsim.cpp b/heatmapsim.cpp index b29e98b..62965f9 100644 --- a/heatmapsim.cpp +++ b/heatmapsim.cpp @@ -20,20 +20,24 @@ #include "sharedbraycurtis.h" //********************************************************************************************************************** -HeatMapSim::HeatMapSim(string dir) : outputDir(dir) { - globaldata = GlobalData::getInstance(); +HeatMapSim::HeatMapSim(string dir, string i, int f) : outputDir(dir), inputfile(i), fontSize(f) { + m = MothurOut::getInstance(); } //********************************************************************************************************************** -void HeatMapSim::getPic(vector lookup, vector calcs) { +vector HeatMapSim::getPic(vector lookup, vector calcs) { try { EstOutput data; vector sims; + vector outputNames; //make file for each calculator selected - for (int m = 0; m < calcs.size(); m++) { - - string filenamesvg = outputDir + getRootName(getSimpleName(globaldata->inputFileName)) + lookup[0]->getLabel() + calcs[m]->getName() + ".heatmap.sim.svg"; - openOutputFile(filenamesvg, outsvg); + for (int k = 0; k < calcs.size(); k++) { + + if (m->control_pressed) { return outputNames; } + + string filenamesvg = outputDir + m->getRootName(m->getSimpleName(inputfile)) + lookup[0]->getLabel() + "." + calcs[k]->getName() + ".heatmap.sim.svg"; + m->openOutputFile(filenamesvg, outsvg); + outputNames.push_back(filenamesvg); //svg image outsvg << "\n"; @@ -41,12 +45,12 @@ void HeatMapSim::getPic(vector lookup, vector //white backround outsvg << ""; - outsvg << "Heatmap at distance " + lookup[0]->getLabel() + "\n"; + outsvg << "Heatmap at distance " + lookup[0]->getLabel() + "\n"; //column labels for (int h = 0; h < lookup.size(); h++) { - outsvg << "getGroup().length() / 2)) + "\" y=\"50\">" + lookup[h]->getGroup() + "\n"; - outsvg << "getGroup().length() / 2)) + "\" x=\"50\">" + lookup[h]->getGroup() + "\n"; + outsvg << "getGroup().length() / 2)) + "\" y=\"50\">" + lookup[h]->getGroup() + "\n"; + outsvg << "getGroup().length() / 2)) + "\" x=\"50\">" + lookup[h]->getGroup() + "\n"; } sims.clear(); @@ -57,13 +61,15 @@ void HeatMapSim::getPic(vector lookup, vector //get sim for each comparison and save them so you can find the relative similairity for(int i = 0; i < (lookup.size()-1); i++){ for(int j = (i+1); j < lookup.size(); j++){ - + + if (m->control_pressed) { outsvg.close(); return outputNames; } + vector subset; subset.push_back(lookup[i]); subset.push_back(lookup[j]); //get similairity between groups - data = calcs[m]->getValues(subset); - sims.push_back(data[0]); + data = calcs[k]->getValues(subset); + sims.push_back(1.0 - data[0]); //save biggest similairity to set relative sim // if (data[0] > biggest) { biggest = data[0]; } @@ -94,21 +100,21 @@ void HeatMapSim::getPic(vector lookup, vector } - + return outputNames; } catch(exception& e) { - errorOut(e, "HeatMapSim", "getPic"); + m->errorOut(e, "HeatMapSim", "getPic"); exit(1); } } //********************************************************************************************************************** -void HeatMapSim::getPic(vector< vector > dists, vector groups) { +string HeatMapSim::getPic(vector< vector > dists, vector groups) { try { vector sims; - string filenamesvg = outputDir + getRootName(getSimpleName(globaldata->inputFileName)) + "heatmap.sim.svg"; - openOutputFile(filenamesvg, outsvg); + string filenamesvg = outputDir + m->getRootName(m->getSimpleName(inputfile)) + "heatmap.sim.svg"; + m->openOutputFile(filenamesvg, outsvg); //svg image outsvg << "\n"; @@ -116,12 +122,12 @@ void HeatMapSim::getPic(vector< vector > dists, vector groups) { //white backround outsvg << ""; - outsvg << "Heatmap for " + globaldata->inputFileName + "\n"; + outsvg << "Heatmap for " + inputfile + "\n"; //column labels for (int h = 0; h < groups.size(); h++) { - outsvg << "" + groups[h] + "\n"; - outsvg << "" + groups[h] + "\n"; + outsvg << "" + groups[h] + "\n"; + outsvg << "" + groups[h] + "\n"; } double biggest = -1; @@ -130,6 +136,8 @@ void HeatMapSim::getPic(vector< vector > dists, vector groups) { //get sim for each comparison and save them so you can find the relative similairity for(int i = 0; i < (dists.size()-1); i++){ for(int j = (i+1); j < dists.size(); j++){ + + if (m->control_pressed) { outsvg.close(); return filenamesvg; } float sim = 1.0 - dists[i][j]; sims.push_back(sim); @@ -161,9 +169,11 @@ void HeatMapSim::getPic(vector< vector > dists, vector groups) { outsvg << "\n\n"; outsvg.close(); + return filenamesvg; + } catch(exception& e) { - errorOut(e, "HeatMapSim", "getPic"); + m->errorOut(e, "HeatMapSim", "getPic"); exit(1); } } @@ -196,13 +206,13 @@ void HeatMapSim::printLegend(int y, float maxSim) { label /= 1000.0; string text = toString(label, 1); - outsvg << "" + text + "\n"; + outsvg << "" + text + "\n"; x += 153; } } catch(exception& e) { - errorOut(e, "HeatMapSim", "printLegend"); + m->errorOut(e, "HeatMapSim", "printLegend"); exit(1); } }