public abstract void setPathClass(PathClass pathClass, double classProbability);
/** * Remove all the classifications for a particular class. * * @param pathClass */ public static void resetClassifications(final PathObjectHierarchy hierarchy, final PathClass pathClass) { List<PathObject> changedList = new ArrayList<>(); for (PathObject pathObject : getAnnotations(hierarchy)) { if (pathClass.equals(pathObject.getPathClass())) { pathObject.setPathClass(null); changedList.add(pathObject); } } if (!changedList.isEmpty()) hierarchy.fireObjectClassificationsChangedEvent(null, changedList); }
public static void classifyDetection(final Predicate<PathObject> p, final String className) { PathObjectHierarchy hierarchy = getCurrentHierarchy(); if (hierarchy == null) return; List<PathObject> reclassified = new ArrayList<>(); PathClass pathClass = PathClassFactory.getPathClass(className); for (PathObject pathObject : hierarchy.getObjects(null, PathDetectionObject.class)) { if (p.test(pathObject) && pathObject.getPathClass() != pathClass) { pathObject.setPathClass(pathClass); reclassified.add(pathObject); } } if (!reclassified.isEmpty()) hierarchy.fireObjectClassificationsChangedEvent(QP.class, reclassified); }
/** * Set the classification of the selected objects. * * @param hierarchy * @param pathClassName */ public static void classifySelected(final PathObjectHierarchy hierarchy, final String pathClassName) { if (!PathClassFactory.pathClassExists(pathClassName)) { logger.error("No class exists called {}", pathClassName); return; } PathClass pathClass = PathClassFactory.getPathClass(pathClassName); Collection<PathObject> selected = hierarchy.getSelectionModel().getSelectedObjects(); if (selected.isEmpty()) { logger.info("No objects selected"); return; } for (PathObject pathObject : selected) { pathObject.setPathClass(pathClass); } if (selected.size() == 1) logger.info("{} object classified as {}", selected.size(), pathClassName); else logger.info("{} objects classified as {}", selected.size(), pathClassName); hierarchy.fireObjectClassificationsChangedEvent(null, selected); }
/** * Reset the PathClass for all objects of the specified type in the specified hierarchy. * * @param hierarchy * @param cls */ public static void resetClassifications(final PathObjectHierarchy hierarchy, final Class<? extends PathObject> cls) { if (hierarchy == null) return; List<PathObject> objects = hierarchy.getObjects(null, cls); if (objects.isEmpty()) { logger.warn("No objects to reset classifications!"); return; } for (PathObject pathObject : objects) { if (pathObject.getPathClass() != null) pathObject.setPathClass(null); } hierarchy.fireObjectClassificationsChangedEvent(QP.class, objects); }
pathObject.setPathClass(PathClassFactory.getNegative(baseClass, null)); } else { if (singleThreshold) pathObject.setPathClass(PathClassFactory.getPositive(baseClass, null)); else if (thresholds.length >= 3 && estimatedSpots >= thresholds[2]) pathObject.setPathClass(PathClassFactory.getThreePlus(baseClass, null)); else if (thresholds.length >= 2 && estimatedSpots >= thresholds[1]) pathObject.setPathClass(PathClassFactory.getTwoPlus(baseClass, null)); else if (estimatedSpots >= thresholds[0]) pathObject.setPathClass(PathClassFactory.getOnePlus(baseClass, null));
/** * Reset the intensity classifications for all specified objects. * * This means setting the classification to the result of <code>getNonIntensityAncestorPathClass(pathObject)</code> * * @param hierarchy */ public static void resetIntensityClassifications(final Collection<PathObject> pathObjects) { for (PathObject pathObject : pathObjects) { PathClass currentClass = pathObject.getPathClass(); if (PathClassFactory.isPositiveOrPositiveIntensityClass(currentClass) || PathClassFactory.isNegativeClass(currentClass)) pathObject.setPathClass(getNonIntensityAncestorPathClass(pathObject)); } }
if (singleThreshold) { if (val > t1) pathObjectTemp.setPathClass(classPositive, pathObjectTemp.getClassProbability()); else pathObjectTemp.setPathClass(classNegative, pathObjectTemp.getClassProbability()); } else { if (val > t3) pathObjectTemp.setPathClass(classThreePlus, pathObjectTemp.getClassProbability()); else if (val > t2) pathObjectTemp.setPathClass(classTwoPlus, pathObjectTemp.getClassProbability()); else if (val > t1) pathObjectTemp.setPathClass(classOnePlus, pathObjectTemp.getClassProbability()); else pathObjectTemp.setPathClass(classNegative, pathObjectTemp.getClassProbability());