Skip to content

Commit eab521c

Browse files
committed
Changes:
1. Edits in vect_edge.
1 parent dc91ba9 commit eab521c

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

frame_2D_alg/vectorize_edge_blob/vect_edge.py

+17-13
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,12 @@ def __init__(He, root=None, Et=None, tft=None, lft=None, node_=None, fd_=None, a
7070
# He.deep = 0 if deep is None else deep # nesting in root H
7171
# He.nest = 0 if nest is None else nest # nesting in H
7272

73-
def __bool__(H):return bool(H.Et[0]>0) # empty only in empty CH
73+
def __bool__(H):return bool(H.Et[0]!=0) # empty only in empty CH (M may negative and it has non empty tft or lft too)
7474

7575

7676
def copy_(He, root, rev=0, fc=0): # comp direction may be reversed to -1
7777

78-
C = CH(root=root, node_=copy(He.node_), Et=He.Et * -1 if (fc and rev) else copy(He.Et))
78+
C = CH(fd_=copy(He.fd_), root=root, node_=copy(He.node_), Et=He.Et * -1 if (fc and rev) else copy(He.Et))
7979

8080
for fd, tt in enumerate(He.tft): # nested array tuples
8181
C.tft += [tt * -1 if rev and (fd or fc) else deepcopy(tt)]
@@ -89,9 +89,11 @@ def add_tree(HE, He_, rev=0, fc=0): # rev = dir==-1, unpack derH trees down to
8989

9090
for He in He_:
9191
# sum tft:
92-
for fd, (F_t, f_t) in enumerate(zip(HE.tft, He.tft)): # m_t and d_t
93-
for F_,f_ in zip(F_t, f_t):
94-
F_ += f_ * -1 if rev and (fd or fc) else f_ # m_|d_ in [dext,dlat,dver]
92+
if HE.tft:
93+
for fd, (F_t, f_t) in enumerate(zip(HE.tft, He.tft)): # m_t and d_t
94+
for F_,f_ in zip(F_t, f_t):
95+
F_ += f_ * -1 if rev and (fd or fc) else f_ # m_|d_ in [dext,dlat,dver]
96+
else: HE.tft = deepcopy(He.tft) # HE.tft is init empty, copy the first tft when it's empty
9597

9698
for F, f in zip_longest(HE.lft, He.lft, fillvalue=None): # CH forks
9799
if f: # empty in bottom layer
@@ -100,13 +102,14 @@ def add_tree(HE, He_, rev=0, fc=0): # rev = dir==-1, unpack derH trees down to
100102

101103
HE.node_ += [node for node in He.node_ if node not in HE.node_] # empty in CL derH?
102104
HE.Et += He.Et * -1 if rev and fc else He.Et
105+
if not HE.fd_: HE.fd_ = copy(He.fd_) # init fd_
103106

104107
return HE # root should be updated by returned HE
105108

106109
def append_(HE, He): # unpack HE lft tree down to He.fd_ and append He there
107110

108-
fd_ = He.fd_; root = HE
109-
while fd_:
111+
root = HE; fd_ = copy(He.fd_) # use copy prevent popping fd in the He
112+
while fd_ and root.lft: # skip empty root (in the base fork)
110113
fd = fd_.pop(0)
111114
root = root.lft[fd]
112115
root.lft += [He]
@@ -115,15 +118,15 @@ def append_(HE, He): # unpack HE lft tree down to He.fd_ and append He there
115118

116119
def comp_tree(_He, He, rn, root, dir=1, fd=0): # unpack derH trees down to numericals and compare them
117120

118-
_d_t, d_t = He.tft[1], He.tft[1] # comp_tft:
121+
_d_t, d_t = _He.tft[1], He.tft[1] # comp_tft: (should be _He here)
119122
d_t = d_t * rn # norm by accum span
120123
dd_t = (_d_t - d_t * dir) # np.arrays
121124
md_t = np.array([np.minimum(_d_,d_) for _d_,d_ in zip(_d_t, d_t)], dtype=object)
122125
for i, (_d_,d_) in enumerate(zip(_d_t, d_t)):
123126
md_t[i][(_d_<0) != (d_<0)] *= -1 # negate if only one of _d_ or d_ is negative
124127
M = sum([sum(md_) for md_ in md_t])
125128
D = sum([sum(dd_) for dd_ in dd_t])
126-
n = .3 if len(d_t)==1 else 2.3 # n comp params / 6
129+
n = .3 if len(d_t)==1 else 2.3 # n comp params / 6 : m fork: [ext(2), Lat(6), Ver(6)], d fork: [ext(2)]
127130

128131
derH = CH(fd_=_He.fd_+[fd], root=root, tft = [np.array(md_t),np.array(dd_t)], Et=np.array([M,D,n, (_He.Et[3]+He.Et[3])/2]))
129132

@@ -138,7 +141,7 @@ def norm_(He, n):
138141
for f in He.tft: # arrays
139142
f *= n
140143
for fork in He.lft: # CHs
141-
fork.norm_C(n)
144+
# fork.norm_C(n) # pending update with new structure of tft and lft
142145
fork.Et *= n
143146
He.Et *= n
144147

@@ -457,9 +460,10 @@ def sum2graph(root, grapht, fd, nest, fsub=0): # sum node and link params into
457460
derH.add_tree(N.derH) # exclude Et, already in N.Et?:
458461
graph.Et += N.Et * icoef ** 2 # deeper, lower weight
459462
N.root[-1] = graph # replace Gt, if single root, else N.root[-1][-1] = graph
460-
# sum link.derHs
461-
derH.append_(CH().add_tree([link.derH for link in link_])) # derH lft @ derLay.fd_ += [derLay]
462-
graph.derH = derH; graph.Et += derH.Et
463+
# sum link.
464+
derLay = CH().add_tree([link.derH for link in link_])
465+
derH.append_(derLay) # derH lft @ derLay.fd_ += [derLay] (in the base m and d fork, derH.lft is empty)
466+
graph.Et += derH.Et # graph.derH is already assigned during derH initialization
463467
# add feedback to higher roots?
464468
L = len(node_)
465469
yx = np.divide(yx,L); graph.yx = yx

0 commit comments

Comments
 (0)