Skip to content

Commit 8f3eafe

Browse files
committed
Changes:
1. Various edits.
1 parent a06bf05 commit 8f3eafe

File tree

5 files changed

+98
-52
lines changed

5 files changed

+98
-52
lines changed

frame_2D_alg/agg_recursion.py

+18-10
Original file line numberDiff line numberDiff line change
@@ -311,18 +311,26 @@ def agg_H_par(focus): # draft parallel level-updating pipeline
311311

312312
frame.aggH = list(H) # convert back to list
313313

314-
def agg_H_seq(focus, image, _nestt=(1,0), rave_=[]): # recursive level-forming pipeline, called from cluster_C_
314+
def rave_2AG(rave_):
315+
315316
# draft:
316317
global ave, ave_L, icoef, max_dist # add derTT aves
317-
if rave_:
318-
ave_ = np.array([ave, ave_L, max_dist, icoef]) # mw_, dw_
319-
ave, ave_L, max_dist, icoef = ave_ * rave_
320-
else:
321-
rave_ = np.append(np.ones(4), np.ones(4), np.ones(4))
322-
# weight per ave?
323-
frame = frame_blobs_root(focus, rave_2FB(rave_))
324-
intra_blob_root(frame, rave_2IB(rave_)) # not sure
325-
vectorize_root(frame, rave_2VR(rave_))
318+
rmM,rmD,rmn,rmo, rmI,rmG,rmA,rmL = rave_[0]
319+
rdM,rdD,rdn,rdo, rdI,rdG,rdA,rdL = rave_[1]
320+
321+
# ave, ave_L, icoef, max_dist:
322+
ave *= rmM
323+
ave_L *= rmL
324+
icoef *= rmM
325+
max_dist *= rmM
326+
327+
def agg_H_seq(focus, image, _nestt=(1,0), rave_=np.ones((2,8))): # recursive level-forming pipeline, called from cluster_C_
328+
329+
# weight per ave?
330+
rave_2AG(rave_)
331+
frame = frame_blobs_root(focus, rave_)
332+
intra_blob_root(frame, rave_) # not sure
333+
vectorize_root(frame, rave_)
326334
if not frame.nnest:
327335
return frame
328336
comb_altG_(frame.node_[-1].node_, ave*2) # PP graphs in frame.node_[2]

frame_2D_alg/comp_slice.py

+23-15
Original file line numberDiff line numberDiff line change
@@ -50,30 +50,38 @@ def __init__(l, nodet, span, angle, yx, Et, vertuple, latuple=None, root=None):
5050
l.prim = []
5151
def __bool__(l): return l.nodet
5252

53-
def vectorize_root(frame, _fb_={}, fb_={}):
54-
55-
if _fb_: # update ave based on feedback coefficients
56-
global ave, ave_d, ave_G, ave_PPm, ave_PPd, ave_L, ave_dI, mw_, dw_, ave_md
57-
ave *= _fb_['vect_edge'] # get feedback coefficient from comp_slice
58-
ave_d *= _fb_['vect_edge']
59-
ave_G *= _fb_['vect_edge']
60-
ave_PPm *= _fb_['vect_edge']
61-
ave_PPd *= _fb_['vect_edge']
62-
ave_L *= _fb_['vect_edge']
63-
ave_dI *= _fb_['vect_edge']
64-
mw_ *= _fb_['vect_edge']
65-
dw_ *= _fb_['vect_edge']
66-
fb_['slice_edge'] = (ave+ave_d+ave_G+ave_PPm+ave_PPd+ave_L+ave_dI+sum(mw_)+sum(dw_))/23 # feedback coefficient to the next slice_edge
6753

54+
def rave_2CS(rave_):
55+
56+
global ave, ave_d, ave_G, ave_PPm, ave_PPd, ave_L, ave_dI, mw_, dw_, ave_md
57+
rmM,rmD,rmn,rmo, rmI,rmG,rmA,rmL = rave_[0]
58+
rdM,rdD,rdn,rdo, rdI,rdG,rdA,rdL = rave_[1]
59+
60+
# ave, ave_d, ave_G, ave_PPm, ave_PPd, ave_L, ave_dI:
61+
ave *= rmM
62+
ave_d *= rdM
63+
ave_G *= rmG
64+
ave_PPm *= rmM
65+
ave_PPd *= rdM
66+
ave_L *= rmL
67+
ave_dI *= rmI
68+
69+
# mw_, dw_:
70+
rmw_, rdw_ = [rmI, rmG, rmM, rmD, rmL, rmA], [rdI, rdG, rdM, rdD, rdL, rdA]
71+
mw_ *= rmw_; dw_ *= rdw_
72+
73+
def vectorize_root(frame):
74+
6875
blob_ = unpack_blob_(frame)
6976
for blob in blob_:
7077
if not blob.sign and blob.G > ave_G * blob.root.olp:
7178
edge = slice_edge(blob)
7279
if edge.G * (len(edge.P_) - 1) > ave_PPm: # eval PP, olp=1
7380
comp_slice(edge)
7481

75-
def comp_slice(edge): # root function
82+
def comp_slice(edge, rave_=np.ones((2,8))): # root function
7683

84+
rave_2CS(rave_)
7785
edge.Et, edge.vertuple = np.zeros(4), np.array([np.zeros(6), np.zeros(6)]) # (M, D, n, o), (m_,d_)
7886
for P in edge.P_: # add higher links
7987
P.vertuple = np.array([np.zeros(6), np.zeros(6)])

frame_2D_alg/frame_blobs.py

+17-9
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,16 @@ def G(blob): return blob.latuple[-1]
128128
@property
129129
def yx_(blob): return list(blob.dert_.keys())
130130

131-
def frame_blobs_root(image, _fb_={}):
132-
if _fb_: # update ave based on feedback coefficients
133-
global ave
134-
ave *= _fb_['frame_blobs'] # get feedback coefficient from intra_blob
135131

132+
def rave_2FB(rave_):
133+
134+
global ave
135+
# ave:
136+
ave *= rave_[0][0] # ave *= rmM
137+
138+
def frame_blobs_root(image, rave_=np.ones((2,8))):
139+
140+
rave_2FB(rave_)
136141
dert__ = comp_pixel(image)
137142
frame = CFrame(image)
138143
flood_fill(frame, dert__) # flood-fill 1 pixel at a time
@@ -185,13 +190,16 @@ def __init__(rnode_, blob):
185190
rnode_.olp= blob.root.olp + 1.5
186191
rnode_.rng = blob.root.rng + 1
187192

188-
def intra_blob_root(frame, _fb_={}, fb_={}):
193+
def rave_2IB(rave_):
194+
195+
global ave, aveR
196+
# ave, aveR:
197+
ave *= rave_[0][0] # ave *= rmM
198+
aveR *= rave_[0][0] # aveR *= rmM
189199

190-
if _fb_: # update ave based on feedback coefficients
191-
global aveR
192-
aveR *= _fb_['intra_blob'] # get feedback coefficient from slice_edge
193-
fb_['frame_blobs'] = aveR # feedback coefficient to the next frame_blobs
200+
def intra_blob_root(frame, rave_=np.ones((2,8))):
194201

202+
rave_2IB(rave_)
195203
frame.olp = frame.rng = 1
196204
for blob in frame.blob_:
197205
rblob(blob)

frame_2D_alg/slice_edge.py

+12-7
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,20 @@ def vectorize_root(frame):
3333
if not blob.sign and blob.G > frame.ave.G:
3434
slice_edge(blob, frame.ave)
3535

36-
def slice_edge(edge, _fb_={}, fb_={}):
36+
def rave_2CS(rave_):
37+
38+
global ave_I, ave_G, ave_dangle
39+
rmM,rmD,rmn,rmo, rmI,rmG,rmA,rmL = rave_[0]
40+
rdM,rdD,rdn,rdo, rdI,rdG,rdA,rdL = rave_[1]
3741

38-
if _fb_: # update ave based on feedback coefficients
39-
global ave_I, ave_G, ave_dangle
40-
ave_I *= _fb_['slice_edge'] # get feedback coefficient from comp_slice
41-
ave_G *= _fb_['slice_edge']
42-
ave_dangle *= _fb_['slice_edge']
43-
fb_['intra_blob'] = (ave_I+ave_G+ave_dangle)/3 # feedback coefficient to the next intra_blob (sum them? or return an array? But we only need 1)
42+
# ave_I, ave_G, ave_dangle:
43+
ave_I *= rmI
44+
ave_G *= rmG
45+
ave_dangle *= rdA
4446

47+
def slice_edge(edge, rave_=np.ones((2,8))):
48+
49+
rave_2CS(rave_)
4550
axisd = select_max(edge)
4651
yx_ = sorted(axisd.keys(), key=lambda yx: edge.dert_[yx][-1]) # sort by g
4752
edge.P_ = []; edge.rootd = {}

frame_2D_alg/vect_edge.py

+28-11
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ class CL(CBase): # link or edge, a product of comparison between two nodes or l
148148
def __init__(l, **kwargs):
149149
super().__init__()
150150
l.nodet = kwargs.get('nodet',[]) # e_ in kernels, else replaces _node,node: not used in kernels
151-
l.L = 0 # distance between nodes
151+
l.L = kwargs.get('L', 1) # distance between nodes (L shouldn't be 0?)
152152
l.Et = kwargs.get('Et', np.zeros(4))
153153
l.fd = kwargs.get('fd',0)
154154
l.yx = kwargs.get('yx', np.zeros(2)) # [(y+Y)/2,(x,X)/2], from nodet
@@ -158,23 +158,40 @@ def __init__(l, **kwargs):
158158
# add med, rimt, extH in der+
159159
def __bool__(l): return bool(l.nodet)
160160

161-
def vectorize_root(frame, rave_=[]): # init for agg+:
162-
# draft:
161+
def rave_2VR(rave_):
162+
163163
global ave, ave_d, ave_rn, ave_ro, ave_G, ave_L, max_dist, icoef, med_cost, ave_dI, mw_, dw_
164-
if rave_:
165-
ave_ = np.array([ave, ave_d, ave_rn, ave_ro, ave_G, ave_L, max_dist, icoef, med_cost, ave_dI, mw_, dw_])
166-
ave, ave_d, ave_rn, ave_ro, ave_G, ave_L, max_dist, icoef, med_cost, ave_dI, mw_, dw_ = ave_ * rave_
167-
else:
168-
rave_ = np.append(np.ones(10), np.ones(10), np.ones(10)) # weight per ave?
164+
rmM,rmD,rmn,rmo, rmI,rmG,rmA,rmL = rave_[0]
165+
rdM,rdD,rdn,rdo, rdI,rdG,rdA,rdL = rave_[1]
166+
167+
# ave, ave_d, ave_rn, ave_ro, ave_G, ave_L, max_dist, icoef, med_cost, ave_dI:
168+
ave *= rmM
169+
ave_d *= rdM
170+
ave_rn *= rmn
171+
ave_ro *= rmo
172+
ave_G *= rmG
173+
ave_L *= rmL
174+
max_dist *= rmM
175+
icoef *= rmM
176+
med_cost *= rmM
177+
ave_dI *= rmI
178+
179+
# mw_, dw_
180+
mw_ *= rave_[0]; dw_ *= rave_[1]
181+
182+
183+
def vectorize_root(frame, rave_=np.ones((2,8))): # init for agg+:
184+
# draft:
185+
rave_2VR(rave_)
169186
blob_ = unpack_blob_(frame)
170187
frame2G(frame, derH=[CLay(root=frame)], node_=[blob_], root=None)
171188
edge_ = [] # cluster, unpack
172189
for blob in blob_:
173190
if not blob.sign and blob.G > ave_G * blob.root.olp:
174191
# convert rave_ to slice_edge coefs:
175-
edge = slice_edge(blob, rave_2SE(rave_))
192+
edge = slice_edge(blob, rave_)
176193
if edge.G * (len(edge.P_)-1) > ave: # eval PP
177-
comp_slice(edge, rave_2CS(rave_))
194+
comp_slice(edge, rave_)
178195
if edge.Et[0] * (len(edge.node_)-1)*(edge.rng+1) > ave:
179196
G_ = [PP2G(PP)for PP in edge.node_ if PP[-1][0] > ave] # Et, no altGs
180197
if len(G_) > ave_L: # no comp node_,link_,PPd_
@@ -576,7 +593,7 @@ def PP2G(PP):
576593

577594
baseT = np.array((*latuple[:2], *latuple[-1])) # I,G,Dy,Dx
578595
[mI,mG,mA,mM,mD,mL], [dI,dG,dA,dM,dD,dL] = vert
579-
derTT = np.array([np.array([mM,mD,mL,1,mI,mG,*mA,mL]), np.array([dM,dD,dL,1,dI,dG,*dA,dL])])
596+
derTT = np.array([np.array([mM,mD,mL,1,mI,mG,mA,mL]), np.array([dM,dD,dL,1,dI,dG,dA,dL])]) # mA and dA is scalar here
580597
y,x,Y,X = box; dy,dx = Y-y,X-x # A = (dy,dx); L = np.hypot(dy,dx)
581598
G = CG(root=root, fd=0, Et=Et, node_=P_, link_=[], baseT=baseT, derTT=derTT, box=box, yx=yx, aRad=np.hypot(dy/2, dx/2),
582599
derH=[[CLay(node_=P_,link_=link_, derTT=deepcopy(derTT)), CLay()]]) # empty dfork

0 commit comments

Comments
 (0)