X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=heatmapsim.cpp;fp=heatmapsim.cpp;h=88a49ed93512369a5c3d0e9d7c17fde7304d5f7f;hb=d5bf2c1354d0811a33394d918b15620606560d58;hp=1544dc2396c558361a663045278d3757f75aeed6;hpb=f27b66ce6415eb14c434f9850019c7cf140e023e;p=mothur.git diff --git a/heatmapsim.cpp b/heatmapsim.cpp index 1544dc2..88a49ed 100644 --- a/heatmapsim.cpp +++ b/heatmapsim.cpp @@ -24,7 +24,6 @@ HeatMapSim::HeatMapSim(){ globaldata = GlobalData::getInstance(); } //********************************************************************************************************************** - void HeatMapSim::getPic(vector lookup, vector calcs) { try { EstOutput data; @@ -101,6 +100,73 @@ void HeatMapSim::getPic(vector lookup, vector exit(1); } } +//********************************************************************************************************************** +void HeatMapSim::getPic(vector< vector > dists, vector groups) { + try { + + vector sims; + + string filenamesvg = getRootName(globaldata->inputFileName) + "heatmap.sim.svg"; + openOutputFile(filenamesvg, outsvg); + + //svg image + outsvg << "\n"; + outsvg << "\n"; + + //white backround + outsvg << ""; + outsvg << "Heatmap for " + globaldata->inputFileName + "\n"; + + //column labels + for (int h = 0; h < groups.size(); h++) { + outsvg << "" + groups[h] + "\n"; + outsvg << "" + groups[h] + "\n"; + } + + double biggest = -1; + float scaler; + + //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++){ + + float sim = 1.0 - dists[i][j]; + sims.push_back(sim); + + //save biggest similairity to set relative sim + if (sim > biggest) { biggest = sim; } + } + } + + //map biggest similairity found to red + scaler = 255.0 / biggest; + + int count = 0; + //output similairites to file + for(int i = 0; i < (dists.size()-1); i++){ + for(int j = (i+1); j < dists.size(); j++){ + + //find relative color + int color = scaler * sims[count]; + //draw box + outsvg << "\n"; + count++; + } + } + + int y = ((dists.size() * 150) + 120); + printLegend(y, biggest); + + outsvg << "\n\n"; + outsvg.close(); + + } + catch(exception& e) { + errorOut(e, "HeatMapSim", "getPic"); + exit(1); + } +} + //********************************************************************************************************************** void HeatMapSim::printLegend(int y, float maxSim) {