public static String getColorDeconvolutionStainsAsString(final ColorDeconvolutionStains stains, final int nDecimalPlaces) {
if (stains == null)
return "";
StringBuilder sb = new StringBuilder();
sb.append("{");
sb.append("\"Name").append("\" : \"").append(stains.getName()).append("\", ");
for (int i = 1; i <= 3; i++) {
StainVector stain = stains.getStain(i);
if (i == 3 && stain.isResidual())
continue;
sb.append("\"Stain ").append(i).append("\" : \"").append(stain.getName()).append("\", ");
sb.append("\"Values ").append(i).append("\" : \"").append(stain.arrayAsString(Locale.US, nDecimalPlaces)).append("\", ");
}
sb.append("\"Background\" : \"");
sb.append(" ").append(GeneralTools.arrayToString(Locale.US, new double[]{stains.getMaxRed(), stains.getMaxGreen(), stains.getMaxBlue()}, nDecimalPlaces));
sb.append("\"}");
return sb.toString();
}