chiark / gitweb /
faff with graphs and searching
[familyTree.git] / cgiFiles / jointAncestorGraph.py
index 01a631992a20c1f17eac90267b85b49a0a45a1b0..7fdadd0d7714bef20868461e8289c298bb18751f 100755 (executable)
@@ -32,19 +32,95 @@ def add_parents(ID,name,startLevel,stopLevel):
 
        d.add_marriage(pair[0], pair[1],[name],1)
 
-def make_graph(ID,ID2,LA,LB):
+def find_oneside_path(ID,start,stop):
+       global myP
+       global myC
+
+        start = start + 1
+        if start == stop+1:
+                return
+
+        [parents, parentIDs,parentNames] = aQ.find_parents(ID)
+
+       for i in parentIDs:
+               myP.append(i)
+               myC.append(ID)
+
+        for i in range(len(parents)):
+                if parentIDs[i]!=0:
+                        newID = parentIDs[i]
+                       find_oneside_path(newID,start,stop)
+
+def find_path(ID,ID2,LA,LB):
+       global myP
+       global myC
+
+       myP = []
+       myC = []
+       find_oneside_path(ID,0,int(LA))
+       aP = myP + [ID]
+       aC = myC + [ID]
+       myP = []
+       myC = []
+       find_oneside_path(ID2,0,int(LB))
+       bP = myP + [ID2]
+       bC = myC +[ID2]
+
+       z = set([0])
+       cA = set(aP).intersection(set(bP))
+       cA = cA.difference(z)
+
+       for a in cA:
+               i = aP.index(a)
+               c = aC[i]
 
-       d.start_dot()   
+               while c!=ID:
+
+                       [parents, parentIDs,parentNames] = aQ.find_parents(c)
+                       s = aQ.find_person(c)[0]
+
+                       d.add_marriage(parents[0],parents[1],[s],1)
+
+
+                       i = aP.index(c)
+                       c = aC[i]
+
+               [parents, parentIDs,parentNames] = aQ.find_parents(c)
+                s = aQ.find_person(c)[0]
+
+                d.add_marriage(parents[0],parents[1],[s],1)
+
+       for a in cA:
+                i = bP.index(a)
+                c = bC[i]
+
+               while c!=ID2:
+                       [parents, parentIDs,parentNames] = aQ.find_parents(c)
+                       s = aQ.find_person(c)[0]
+
+                       d.add_marriage(parents[0],parents[1],[s],1)
+                       i = bP.index(c)
+                       c = bC[i]
+               [parents, parentIDs,parentNames] = aQ.find_parents(c)
+                s = aQ.find_person(c)[0]
+
+                d.add_marriage(parents[0],parents[1],[s],1)
+
+def make_graph(ID,ID2,LA,LB):
+        d.start_dot(8) 
+       done = 0
 
-       if int(LA)!=0:
-               [Self, selfID, selfName] = aQ.find_person(ID)
-               d.add_highlight(Self)
-               add_parents(selfID,Self,0,LA)
+       find_path(ID,ID2,LA,LB)
 
-       if int(LB)!=0:
-               [Self, selfID, selfName] = aQ.find_person(ID2)
-                d.add_highlight(Self)
-               add_parents(selfID,Self,0,LB)
+#      if int(LA)!=0:
+#              [Self, selfID, selfName] = aQ.find_person(ID)
+#              d.add_highlight(Self)
+#              add_parents(selfID,Self,0,LA)
+#
+#      if int(LB)!=0:
+#              [Self, selfID, selfName] = aQ.find_person(ID2)
+#               d.add_highlight(Self)
+#              add_parents(selfID,Self,0,LB)
 
        d.add_subgraphs()
        d.end_dot()