+ //sort lookup so shared bins are on top
+ if (isTrue(sorted) == true) { sortSharedVectors(lookup); }
+
+ vector<vector<string> > scaleRelAbund;
+ vector<float> maxRelAbund(lookup.size(), 0.0);
+ float superMaxRelAbund = 0;
+
+ for(int i = 0; i < lookup.size(); i++){
+ for(int j=0; j<lookup[i]->size(); j++){
+
+ float relAbund = lookup[i]->getAbundance(j) / (float)lookup[i]->getNumSeqs();
+ if(relAbund > maxRelAbund[i]){ maxRelAbund[i] = relAbund; }
+ }
+ if(maxRelAbund[i] > superMaxRelAbund){ superMaxRelAbund = maxRelAbund[i]; }
+ }
+
+ scaleRelAbund.resize(lookup.size());
+ for(int i=0;i<lookup.size();i++){
+ scaleRelAbund[i].assign(lookup[i]->size(), "");
+ for(int j=0;j<lookup[i]->size();j++){
+ float relAbund = lookup[i]->getAbundance(j) / (float)lookup[i]->getNumSeqs();
+
+ if (lookup[i]->getAbundance(j) != 0) { //don't want log value of 0.
+ if (scaler == "log10") {
+ scaleRelAbund[i][j] = toHex(int(255 * log10(relAbund) / log10(maxRelAbund[i]))) + "0000";
+ }else if (scaler == "log2") {
+ scaleRelAbund[i][j] = toHex(int(255 * log2(relAbund) / log2(maxRelAbund[i]))) + "0000";
+ }else if (scaler == "linear") {
+ scaleRelAbund[i][j] = toHex(int(255 * relAbund / maxRelAbund[i])) + "0000";
+ }else { //if user enters invalid scaler option.
+ scaleRelAbund[i][j] = toHex(int(255 * log10(relAbund / log10(maxRelAbund[i])))) + "0000";
+ }
+ }else { scaleRelAbund[i][j] = "FFFFFF"; }
+
+ }
+ }
+
+ string filenamesvg = getRootName(globaldata->inputFileName) + lookup[0]->getLabel() + ".heatmap.bin.svg";
+ openOutputFile(filenamesvg, outsvg);
+
+ //svg image
+ outsvg << "<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 " + toString(lookup.size() * 300) + " " + toString((lookup[0]->getNumBins()*5 + 120)) + "\">\n";
+ outsvg << "<g>\n";
+
+ //white backround
+ outsvg << "<rect fill=\"white\" stroke=\"white\" x=\"0\" y=\"0\" width=\"" + toString(lookup.size() * 300) + "\" height=\"" + toString((lookup[0]->getNumBins()*5 + 120)) + "\"/>";
+ outsvg << "<text fill=\"black\" class=\"seri\" x=\"" + toString((lookup.size() * 150) - 40) + "\" y=\"25\">Heatmap at distance " + lookup[0]->getLabel() + "</text>\n";