@Override public int getCoreIndex(String coreName) { int ind = 0; for (TMACoreObject core : cores) { String name = core.getName(); if (coreName == null) { if (name == null) return ind; } else if (coreName.equals(name)) return ind; ind++; } return -1; }
@Override public TMACoreObject getTMACoreByUniqueID(String uniqueID) { for (TMACoreObject core : cores) { if (uniqueID.equals(core.getUniqueID())) return core; } return null; }
public void setUniqueID(final String uniqueID) { putMetadataValue(KEY_UNIQUE_ID, uniqueID); }
@Override public String toString() { return getDisplayedName() + objectCountPostfix(); // if (getROI() != null) // return getROI().getName() + objectCountPostfix(); // return "Unnamed TMA core"; // Entire image }
List<TMACoreObject> coresByID = new ArrayList<>(); for (TMACoreObject coreTemp : tmaGrid.getTMACoreList()) if (id != null && id.equals(coreTemp.getUniqueID())) coresByID.add(coreTemp); if (!coresByID.isEmpty()) { coresFound = true; if (coreNames != null && coresByID.size() == 1) { String currentName = coresByID.get(0).getName(); String newName = coreNames.get(i); if (!newName.equals(currentName)) { coresByID.get(0).setName(newName); if (currentName != null) logger.warn("Core name changed from {} to {}", currentName, newName); coresFound = true; if (coreIDs != null) { String currentID = core.getUniqueID(); String newID = coreIDs.get(i); if (newID != null && !newID.equals(currentID)) { core.setUniqueID(newID); continue; if (isOverallSurvival) core.getMeasurementList().putMeasurement(TMACoreObject.KEY_OVERALL_SURVIVAL, vals[i]); else if (isRecurrenceFreeSurvival) core.getMeasurementList().putMeasurement(TMACoreObject.KEY_RECURRENCE_FREE_SURVIVAL, vals[i]); else if (isOSCensored) core.getMeasurementList().putMeasurement(TMACoreObject.KEY_OS_CENSORED, vals[i] > 0 ? 1 : 0);
public static void resetTMAMetadata(final PathObjectHierarchy hierarchy, final boolean includeMeasurements) { if (hierarchy == null || hierarchy.getTMAGrid() == null) return; for (TMACoreObject core : hierarchy.getTMAGrid().getTMACoreList()) { core.clearMetadata(); if (includeMeasurements) { core.getMeasurementList().clear(); } } hierarchy.fireObjectsChangedEvent(QP.class, hierarchy.getTMAGrid().getTMACoreList()); }
@Override public String getMetadataString(final String key) { Object value = getMetadataValue(key); if (value instanceof String) return (String)value; return null; }
public String getUniqueID() { return getMetadataString(KEY_UNIQUE_ID); }
@Override public TMACoreObject getTMACoreForPixel(double x, double y) { // TODO: Consider overlapping cores - would be slightly nicer to return core with closest centroid for (TMACoreObject core : cores) { if (ROIHelpers.areaContains(core.getROI(), x, y)) return core; } return null; }
@Override protected Collection<PathObject> getParentObjects(final PluginRunner<T> runner) { PathObjectHierarchy hierarchy = runner.getImageData().getHierarchy(); List<PathObject> parents = new ArrayList<>(); if (hierarchy.getTMAGrid() != null) { logger.info("Smoothing using TMA cores"); for (TMACoreObject core : hierarchy.getTMAGrid().getTMACoreList()) { if (core.hasChildren()) parents.add(core); } } else { for (PathObject pathObject : hierarchy.getSelectionModel().getSelectedObjects()) { if (pathObject.isAnnotation() && pathObject.hasChildren()) parents.add(pathObject); } if (!parents.isEmpty()) logger.warn("Smoothing using annotations"); } return parents; }
@Override public boolean containsMetadataString(final String key) { return getMetadataValue(key) instanceof String; }
@Override public TMACoreObject getTMACore(String coreName) { // We can't match a null coreName if (coreName == null) { logger.warn("Cannot find match to unnammed TMA core!"); return null; } for (TMACoreObject core : cores) { if (coreName.equals(core.getName())) return core; } return null; }