public static ColorDeconvolutionStains parseColorDeconvolutionStainsArg(final String s) { Map<String, String> map = GeneralTools.parseArgStringValues(s); if (map.isEmpty()) return null; StainVector stain1 = parseStainVector(Locale.US, map.get("Stain 1"), map.get("Values 1")); StainVector stain2 = parseStainVector(Locale.US, map.get("Stain 2"), map.get("Values 2")); StainVector stain3 = null; if (map.containsKey("Stain 3")) stain3 = parseStainVector(Locale.US, map.get("Stain 3"), map.get("Values 3")); double[] background = parseStainValues(Locale.US, map.get("Background")); return new ColorDeconvolutionStains(map.get("Name"), stain1, stain2, stain3, background[0], background[1], background[2]); }
public static StainVector parseStainVector(Locale locale, String name, String s) { if (s == null) return null; s = s.trim(); if (s.length() == 0) return null; if (s.length() == 1) { s = s.toLowerCase(); if (s.equals("h")) return StainVector.makeDefaultStainVector(DEFAULT_STAINS.HEMATOXYLIN); else if (s.equals("e")) return StainVector.makeDefaultStainVector(DEFAULT_STAINS.EOSIN); else if (s.equals("d")) return StainVector.makeDefaultStainVector(DEFAULT_STAINS.DAB); } double[] vector = parseStainValues(locale, s); if (vector != null) return new StainVector(name, vector[0], vector[1], vector[2]); // If we got here, we didn't find 3 numbers return null; }