From b7b80f3ff2d202b6979ca45d0de8e2876243ec97 Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Wed, 21 Oct 2009 13:39:46 +0000
Subject: [PATCH] [SE-156] improved computations of parent candidate attributes
 (using values from the frame that the child appeared on, not from the
 previous one)

SVN: 13032
---
 .../bsse/cisd/yeastlab/GenerationDetection.java  | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/yeast_lab/source/java/ch/ethz/bsse/cisd/yeastlab/GenerationDetection.java b/yeast_lab/source/java/ch/ethz/bsse/cisd/yeastlab/GenerationDetection.java
index a5247e8d5ea..0cb9162eead 100644
--- a/yeast_lab/source/java/ch/ethz/bsse/cisd/yeastlab/GenerationDetection.java
+++ b/yeast_lab/source/java/ch/ethz/bsse/cisd/yeastlab/GenerationDetection.java
@@ -398,15 +398,27 @@ public class GenerationDetection
     private static class ParentCandidate implements Comparable<ParentCandidate>
     {
 
+        @SuppressWarnings("unused")
+        private final Cell previousFrameParent;
+
+        /**
+         * parent cell from the same frame that the child appeared on or from the previous frame if
+         * parent disappeared just after division
+         */
         private final Cell parent;
 
         private final Cell child;
 
         private final Integer distanceSq;
 
-        public ParentCandidate(Cell parent, Cell child)
+        public ParentCandidate(Cell previousFrameParent, Cell child)
         {
-            this.parent = parent;
+            this.previousFrameParent = previousFrameParent;
+            // on the frame that child appeared parent could disappear (5 cases in test data)
+            final Cell childFrameParentOrNull =
+                    cellsByIdAndFrame.get(previousFrameParent.id).get(child.frame);
+            this.parent =
+                    (childFrameParentOrNull != null) ? childFrameParentOrNull : previousFrameParent;
             this.child = child;
             this.distanceSq = distanceSq(parent, child);
         }
-- 
GitLab